Ankiのカードをブラウザから追加したかった。
決して後退しない学習ーAnkiを使うとどうして一生忘れないのか? 読書猿Classic: between / beyond readers
Ankiの記事を見たので便乗。
最近Ankiを使い始めてて、効果のほどはまだ分からないけどまあ楽しく使っている。用途としては英単語を覚えるのがメイン。んでWebを見ていて知らない英単語があると、調べては手作業で追加していたのだけど、これがだるいなーと思ったので自動化した。ブラウザ上で単語を範囲選択、右クリックのメニューからAnkiへの単語追加コマンドを実行するだけで、追加がすむ様になった。ただしMacに限る。仕組みに使ったパーツは、
- 辞書引きプログラム
false-git/dict · GitHub
コマンドラインからMac標準の辞書を引くプログラム。コンパイルして~/dict/dictに設置。
- Run External Commands
Anki - friendly, intelligent flashcards
ソケットを使って外部からAnkiへの単語追加を可能にするAnkiのaddon。追加情報の書かれたxmlへのpathを入力とする。インストールするだけ。
単語を標準入力から受け取って、辞書引きプログラムで調べて、xmlつくって、上記addonにわたすスクリプト。どっか適当なところに保存。
require 'socket' word = ARGF.read tmp = `dict/dict #{word}` res = tmp.lines.to_a[2,20].join unless res.empty? open("/tmp/anki.xml", "w"){|f| xml = "<command name='add-notes' version='1.0'> <models> </models> <notes> <note> <model>Basic</model> <tags> </tags> <fields> <field> <name>Front</name> <content>#{word}</content> </field> <field> <name>Back</name> <content>#{res}</content> </field> </fields> </note> </notes> </command> " f.write(xml) } s = TCPSocket.new("localhost", 49666) s.write('/tmp/anki.xml') s.close end
以上を準備した後、範囲選択した単語を自作スクリプトに渡す様に設定。使用方法はここを参考にした。Mac を使っているなら必ず使うべき2つの機能 "Automator" と "サービス" - kurainの壺
これで単語登録が楽になった。