Skip to content

atjason/WordQuery

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

145 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WordQuery 插件(anki)

主要功能

  1. 快速零散制卡

    在添加卡片和编辑卡片界面,插件辅助完成单词释义的查询和自动填充。

  2. 批量制卡

    在浏览器界面选择多个单词,插件辅助完成选中单词释义的批量查询和自动填充。

  3. 本地词典支持

    支持mdx格式词典和stardict格式词典。

  4. 网络词典支持

    支持网络词典的查询,目前内置有道、百词斩等插件。

    所有词典以插件形式实现,用户可自行定义、修改和删除。插件定义和实现方式可参考该节

使用方法

安装

  1. https://github.com/finalion/WordQuery下载并放到anki插件文件夹

  2. 安装代码775418273

词典文件夹设置

  1. “工具”菜单-->"WordQuery",弹出设置界面;

  2. 点击“词典文件夹”按钮,在弹出的对话框中通过“+”或“-”增加或删除文件夹,支持递归查找。

  3. 其他设置

    • 使用文件名作为词典名:不选中则使用词典中的特定标题字段作为词典名

    • 导出媒体文件:选中则导出词典解释中包含的音频

笔记类型选择

在设置界面中,点击“选择笔记类型”按钮,选择要设定的笔记类型;

查询单词字段设置

单选框选中要查询的单词字段.

待填充词典字段与笔记区域的映射

为每个笔记区域映射待查询的词典以及词典字段:

词典下拉框选项中包括三部分,各部分之间有分割线:

  • 第一部分:“不是词典字段”

  • 第二部分:设定文件夹中包含的可支持的本地词典

  • 第三部分:网络词典

查询并填充释义

插件可在多种编辑模式下快速查询并添加单词释义。

  1. “添加笔记”界面和“编辑笔记”界面

    • 点击“Query”按钮查询并填充全部字段的释义;

    • 右键菜单“Query All Fields”查询并填充全部字段的释义;

    • 右键菜单“Query Current Field”查询并填充当前字段的释义;

    • 右键菜单“Options”查看修改笔记区域和词典字段的映射;

  2. 浏览器

    • 选择多个卡片,工具栏菜单“WoryQuery”选择“查询选中单词”,查询并填充所有选中单词全部字段的释义;

所有操作均支持快捷键,默认为"Ctrl+Q",可修改

其他Tips

快捷键自定义

“工具”菜单-->“插件”-->"wordquery"-->编辑,找到并修改快捷键设置:

# shortcut
shortcut = 'Ctrl+Q'

词典服务插件定义

实现类

继承WebService,使用@register(label) 装饰。参数label作为词典标签,出现在词典下拉列表中。例如

@register(u'有道词典')
class Youdao(WebService):
    """service implementation"""

如果不注册label,则默认使用类名称作为标签。

词典字段导出函数定义

词典字段导出函数返回查询词典相应字段的释义,使用@export(fld_name, order) 装饰。

  • 参数fld_name为词典字段名称,出现在词典字段下拉列表中

  • 参数order为词典字段在下拉列表中的顺序,小号在上,大号在下,但号码无需连续。

例如,

@export(u'美式音标', 1)
def fld_phonetic_us(self):
    return self._get_field('phonitic_us')

@export(u'英式音标', 2)
def fld_phonetic_uk(self):
    return self._get_field('phonitic_uk')

字段修饰(可选)

使用@with_style(**kwargs)修饰导出词典字段函数,支持参数包括,

  • cssfile

    词典(字段)使用的css文件,需放置在service模块的static文件夹下。

  • css

    词典(字段)使用的css字符串。

  • jsfile

    词典(字段)使用的js文件,需放置在service模块的static文件夹下。

  • js

    词典(字段)使用的js字符串。

  • need_wrap_css

    为了避免不同字典css样式命名重复可能带来的样式混乱,设置该参数为True,插件可通过添加全局div对样式表和词典释义结果进行包装。需要定义添加的全局div的类名wrap_class

    包装之后的css文件为*orig_name*_wrap.css

    目前包装方法比较粗糙,待持续验证和改进。

  • wrap_class

    全局div类名,need_wrap_cssTrue时有效。

例如,

@with_styles(cssfile='_youdao.css', need_wrap_css=True, wrap_class='youdao')
def _get_singledict(self, single_dict, lang='eng'):
    url = "http://m.youdao.com/singledict?q=%s&dict=%s&le=%s&more=false" % (
        self.word, single_dict, lang)
    try:
        return urllib2.urlopen(url, timeout=5).read()
    except:
        return ''

Cache使用

为了避免对网络词典服务的重复查询,可在必要时对中间结果进行缓存。方法包括,

  • cache_this(result)

    缓存当前结果。

  • cached(key)

    检查key是否被缓存。

  • cache_result(key)

    返回缓存结果。

具体可参考有道词典 youdao.py实现方式。

插件所使用的外部库

About

word fast-querying addon for anki

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 98.5%
  • CSS 1.5%