去年考研,發現了背誦神器Anki後,就一直在用它背各種東西,當然最主要的就是背單詞了。Anki最大的好處就是背誦的卡牌內容可以自己隨便定義,但在背單詞時,每個單詞都需要手動查詢解釋,然後再複製到Anki裏實在是有點麻煩。剛開始每天背的單詞量比較大,查單詞錄入Anki都要花去我大量的時間,為了提高效率,當時我就自己修改了一個Anki插件,實現了只需手動輸入單詞,然後自動批量生成單詞解釋的功能。

效率提高了不少,雖然沒能幫我把英語考到70分。。

錄取之後閑了下來,決定將這個小功能整理一下,做個獨立的插件,方便大家使用,希望能夠幫助用Anki背單詞的小夥伴。插件編號:2074564812,可以下載試用

效果圖如下

功能比較簡單,源代碼已經提交到git上,有興趣的可以看看,或者幫我一起完善

dongshuai2019/anki_englishwordcards?

github.com圖標

因為Anki的插件開發文檔不是很詳細,下面簡單講一下模塊的各種功能,以及開發中遇到的坑。

這裡是將在Anki執行打開瀏覽界面時,在瀏覽界面的菜單欄插入一個我們插件的按鈕「單詞寶」。addHook相當於監聽功能,在動作『brower.setupMenus』發生時,調用我們的on_setup_menus插入菜單方法。

import anki

anki.hooks.addHook(
browser.setupMenus,
on_setup_menus,
)

這是具體的on_setup_menus方法。先創建一個menu,然後將menu插入到瀏覽界面的菜單browser.form.menubar.addMenu(menu)。

然後又在menu中定義了兩個子菜單,科林次單和人人詞典,用來分別用不同的詞典來查詢單詞解釋。

from PyQt5 import QtWidgets

def on_setup_menus(browser):

menu = QtWidgets.QMenu("單詞寶", browser.form.menubar)
browser.form.menubar.addMenu(menu)

def kelin():
search_word(browser,type=0)
def renren():
search_word(browser, type=1)

action = menu.addAction("柯林辭典")
action.triggered.connect(kelin)
action = menu.addAction("人人辭典")
action.triggered.connect(renren)

browser.selectedNotes()能夠獲取到當前瀏覽界面所選中的卡牌note_id,然後再通過mw.col.getNote(note_id)可以獲取到卡牌的note。note中有兩個比較重要的內容一個是note[Front],和note[Back],其中note[Front]是卡牌的問題頁面內容即單詞,note[Back]是卡牌翻開之後的解釋即單詞解釋。我們要做的就是用note[Front]去查單詞解釋,然後將單詞解釋賦值給note[Back],最後note.flash(),mw.reset()就能將更新寫入Anki的資料庫。

from aqt import mw

def search_word(browser,type=0):
# if type == 0:
# showInfo(科林辭典)
# else:
# showInfo(人人詞典)

notes = [
mw.col.getNote(note_id)
for note_id in browser.selectedNotes()
]

total = len(notes)
n = 0
for note in notes:
result =
if type == 0:
result = searchWord_kelin(note[Front])
else:
result = searchWord_renren(note[Front])
if result == :
# showInfo(查詢失敗,可以嘗試使用別的詞典)
n += 1
else:
# showInfo(查詢成功+note[Back])
note[Back] = result
note.flush()
mw.reset()
msg = 查詢單詞+str(total)+個,其中+str(total-n)+個成功,+str(n)+個失敗
showInfo(msg)

上面就是Anki的具體操作了,至於怎麼獲取到單詞的解釋就很簡單了,我獲取的詞典網頁內容,然後截取的字元串,有興趣的可以看下代碼,

dongshuai2019/anki_englishwordcards?

github.com
圖標

推薦閱讀:
相關文章