首先吐槽,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-server 。web
基于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桌面版连不上。