anki的使用以及anki server的配置

本文經過MetaWeblog自動發佈,原文及更新連接: https://extendswind.top/posts/technical/anki_and_anki_server

首先吐槽,anki做爲老牌軟件,國內資料並很少。html

雖然html的卡片顯示和python的插件式開發上看比較適合程序員,但從各類配置上感受程序員用戶量並不大。python

所以,想深度使用準備折騰。linux

簡單使用

  • 淘製做好的卡片,導入
  • 卡片能夠套模板更美觀(添加時的Cards選項,支持html)
  • 插件裏的awesome TTS不少人推薦但速度略慢
  • 添加單詞能夠用Word Query

官方文檔https://apps.ankiweb.net/docs/manual.htmlandroid

插件編寫文檔https://apps.ankiweb.net/docs/addons.htmlgit

一些坑

刪除卡片不會刪除對應的媒體文件,須要點擊 check media 後手動刪除。程序員

anki server 的安裝

官網的速度爆表,並且有數據安全問題,所以官網給出了自建anki server的解決方案。github

百度上的大多使用 https://github.com/dsnopek/anki-sync-server ,能夠基於pip2和python2直接安裝,我的在基於Arch的linux下感受坑多,在linux上的anki 2.1.9連不上上面python2的服務器(bug解決一個又出一個),更建議使用基於python3的fork項目:https://github.com/tsudoko/anki-sync-serverweb

基於python3的倉庫

github上的readme已經寫得比較清楚,下面的搬運點大概。安全

一、clone 倉庫bash

git clone https://github.com/tsudoko/anki-sync-server.git

二、安裝anki或anki-bundled相關的庫

直接使用包管理器安裝 sudo pacman -S anki

若是包管理器裏沒有anki(如debian),也能夠用pip安裝anki-bundled相關的庫

$ git submodule update --init  # anki-bundled已經加入爲submodule,能夠先更新
 $ cd anki-bundled
 $ pip install -r requirements.txt  # 安裝相關的庫

三、安裝webob

pip install webob

四、修改 ankisyncd.conf 文件

文件中保存了主要的配置,主要改端口,默認端口通常也就能用。

五、建立用戶

./ankisyncctl.py adduser <username>

六、啓動服務器

python -m ankisyncd

客戶端配置

android anki 在高級設置裏填上ip和端口就行。

anki桌面版2.1.x 修改了添加插件方式。在插件文件夾下新建一個新的文件夾(官方插件命名都是數字方便更新,用字母也行),而後在其下新建一個文件__init__.py,加入如下內容。

import anki.sync, anki.hooks, aqt

addr = "http://127.0.0.1:27701/" # put your server address here
anki.sync.SYNC_BASE = "%s" + addr
def resetHostNum():
    aqt.mw.pm.profile['hostNum'] = None
anki.hooks.addHook("profileLoaded", resetHostNum)

anki桌面版2.0 直接在插件文件夾下新建一個.py文件(如ankisyncd.py),加入如下內容。

import anki.sync

addr = "http://127.0.0.1:27701/" # put your server address here
anki.sync.SYNC_BASE = addr
anki.sync.SYNC_MEDIA_BASE = addr + "msync/"

基於python2的server

百度上搜到的差很少都是這種,可能出各類bug,不怎麼建議折騰,列一下大概的折騰步驟和踩坑。

簡直就是個沒人測試的系統!各類莫名奇妙的bug須要調。

好不容易裝好了,局域網下卡片數量較多時(4000)速度也不怎麼樣….

debian 系統安裝稍正常

easy_install ankiserver  # 爲何不用pip? 由於會有莫名奇妙的錯誤!!
mkdir ankiserver_data  # anki server的數據目錄
cd ankiserver_data
cp /usr/lib/python2.7/site-packages/AnkiServer-2.0.6-py2.7.egg/examples/example.ini ./production.ini # 複製配置文件,若有必要能夠改改端口一類的

ankiserverctl adduser test # 添加用戶
ankiserverctl debug  # debug模式啓動 (爲何是debug,你猜一次成功的機率?)

若是此時顯示了正常啓動而後手機能連上就算幸運了。

踩過的坑:

  • 雖然python3的ankiserver在pip倉庫裏有,但仍是不試爲好。
  • 要用 easy_install 代替pip(當心找不到文件一個個改路徑)
  • 裝server的系統上最好不要裝anki客戶端(anki使用的python3莫名奇妙會被python2的server調用….估計是anki在/usr/share文件夾下,/usr/share又是PATH的目錄,若是非要裝就把/usr/share/anki改個名字吧,虛擬環境都上了仍是跳到anki客戶端的python3代碼上報錯)
  • andriod手機登陸時顯示服務器和手機時間差了5s,可能折騰一下ntp就行吧
  • 系統編碼須要設置成utf-8(默認用英語沒碰到這問題)

安卓手機使用正常,可是anki 2.1.9 linux桌面版連不上。

相關文章
相關標籤/搜索