vocabulary2anki是一款用python3写的小工具,用来批量查询英文单词的意义,然后以anki可以倒入的方式输出.
它的特点在于可配置性,理论上通过配置 vocabulary2anki.cfg
可以从任意的json/xml格式的字典接口中查询意义.
为了防止单个字典接口存在单词量不足的情况,允许你一次配置多个字典接口. (默认配置了有道和百词斩连个接口)
若同一个单词在多个字典接口都能查到意义,则以配置文件中靠后配置的那个为准.
./vocabulary2anki.py -h
usage: vocabulary2anki.py [-h] [-o dest_file] [--fmt format]
[source_file [source_file ...]]
查询单词意义,并以anki可以导入的方式输出
positional arguments:
source_file 存放单词的源文件,每行一个词,如果不填,则会从标准输入读取单词
optional arguments:
-h, --help show this help message and exit
-o dest_file 存放结果的目标文件,如果省略,则会写入到标准输出中
--fmt format 指定输出的格式,其中{word},{mean},{accent},{sentence_en},{sentence_cn},{
img},{mp3}会被替换,默认值为"{word}|{mean}|{accent}|{sentence_en}|{sent
ence_cn}|{img}|{mp3}"
假设我有一个名为 vocabulary.txt
的文件,里面包含了一些不认识的单词:
vim
emacs
我要查询这两个单词的意义,英文例句与中文例句,并用 |
作为分隔符写入到 anki.txt
中,那么可以执行:
./vocabulary2anki.py --fmt "{word}|{mean}|{accent}|{sentence_cn}" -o anki.txt vocabulary.txt
则会发现程序新生成了一个 anki.txt
文件,其内容为:
vim|n.精力,活力|He's such an energetic guy, full of <b>vim</b>, vigor and spunk!|
emacs|n. 编辑器,编译与测试;功能强大的编辑环境||
其中 vim
在有道和百词斩中都能查到意思,由于百词斩的接口比较靠后,因此使用的是百词斩中的意思,而英文例句和中文例句在有道接口中是没有的,因此使用了百词斩中的内容.
而 emacs
只在有道中能查询到释义,在百词斩中查不到,因此这是使用的是来自有道接口中的释义,而中英文例句则为空.
下面是一个例子:
[youdao]
type = xml
url = http://dict.youdao.com/fsearch?client=deskdict&keyfrom=chrome.extension&pos=-1&doctype=xml&xmlVersion=3.2&dogVersion=1.0&vendor=unknown&appVer=3.1.17.4208&le=eng&q={}
means = .//custom-translation/translation/content
accent = .//phonetic-symbol
# mp3 = http://dict.youdao.com/dictvoice?audio={}&type=2
[baicizhan]
type = json
url = http://mall.baicizhan.com/ws/search?w={}
means = mean_cn
mean_sep = ;\s+
accent = accent
sentence_en = st
sentence_cn = sttr
mp3 = http://baicizhan.qiniucdn.com/word_audios/{}.mp3
img = img
配置项只能是 type
, url
, means
, mean_sep
, accent
, sentence_en
, sentence_cn
, mp3
, img
这几个.
其他的配置项会让程序出错!
其中:
type | 表示字典接口的格式,目前只支持json和xml两种格式的接口 |
url | 表示字典接口的URL,其中的 {} 会被替换成待查询的单词 |
means | 告诉程序,字典接口中那部分内容为释义,若接口为xml则它的值应该为一个xpath;若接口为json,则它的值是一个类似 a.b.c 这样的路径 |
accent | 类似means,但是表示读音 |
sentence_en | 类似means,但是表示英文例句 |
sentence_cn | 类似means,但是表示中文例句 |
mp3 | 类似means,但是表示读音mp3的下载地址,且可以是一个类似url的字符串 |
img | 类似mp3,但是表示图片的下载地址 |