The last dictionary framework you need. (?)
Note: This project is working in progress.
zdict is a CLI dictionary framework mainly focus on any kind of online dictionary. This project originally forked from https://github.com/chenpc/ydict, which is a CLI tool for the Yahoo! online dictionary. After heavily refactoring the original project including:
- Change from Python 2 to Python 3
- Focus on being a flexible framework for any kind online dicitionaries, not only just a CLI tool for querying Yahoo! online dictionary.
- Based on an open source project skeleton.
So, we decided to create a new project.
from PyPi :
pip install zdict
from GitHub :
pip install git+https://github.com/zdict/zdict.git
from Docker Hub :
# Pull image from Docker Hub docker pull zdict/zdict # Run interactive mode docker run -it --rm zdict/zdict # Run normal mode docker run -it --rm zdict/zdict apple bird
usage: zdict [-h] [-v] [-d] [-t QUERY_TIMEOUT] [-j [JOBS]] [-sp] [-su] [-dt moe,moe-taiwanese,yahoo,jisho,spanish,yandex,urban,all] [-ld] [-V] [-c] [--dump [PATTERN]] [-D] [word [word ...]] positional arguments: word Words for searching its translation optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -d, --disable-db-cache Temporarily not using the result from db cache. (still save the result into db) -t QUERY_TIMEOUT, --query-timeout QUERY_TIMEOUT Set timeout for every query. default is 5 seconds. -j [JOBS], --jobs [JOBS] Allow N jobs at once. Do not pass any argument to use the number of CPUs in the system. -sp, --show-provider Show the dictionary provider of the queried word -su, --show-url Show the url of the queried word -dt moe,moe-taiwanese,yahoo,jisho,spanish,yandex,urban,all, --dict moe,moe-taiwanese,yahoo,jisho,spanish,yandex,urban,all Must be seperated by comma and no spaces after each comma. Choose the dictionary you want. (default: yahoo) Use 'all' for qureying all dictionaries. If 'all' or more than 1 dictionaries been chosen, --show- provider will be set to True in order to provide more understandable output. -ld, --list-dicts Show currently supported dictionaries. -V, --verbose Show more information for the queried word. (If the chosen dictionary have implemented verbose related functions) -c, --force-color Force color printing (zdict automatically disable color printing when output is not a tty, use this option to force color printing) --dump [PATTERN] Dump the querying history, can be filtered with regex -D, --debug Print raw html prettified by BeautifulSoup for debugging.
- Normal Mode
- Interactive Mode
Development & Contributing
During development, you can install our project as editable. If you use virtualenv, you may want to create a new enviroment for zdict:
$ git clone https://github.com/zdict/zdict.git $ cd zdict $ pip install -e .
Once you installed it with the command above, just execute zdict after modification. Don’t need to install it again.
We use py.test:
$ pip install pytest pytest-cov coverage $ python setup.py test
After runing testing, we will get a coverage report in html. We can browse around it:
$ cd htmlcov $ python -m http.server
Also, there is some configs for py.test in setup.cfg. Change it if you need.
py.test can prompt pdb shell when your test case failed:
$ python setup.py test -a "--pdb"
$ py.test --pdb
Feel free to send a bug report to https://github.com/zdict/zdict/issues. Please attach the error message and describe how to reproduce the bug. PR is also welcome.
Please use the -d/--disable-db-cache option to query before sending the bug report. Sometimes we modify the data schema in database for a dictionary, but the default dictionary query of zdict uses the cache in the database which may be stored within an old schema. This might cause an error while showing the result. Just use the -d/--disable-db-cache to update the cache in database.