大家有没有用Anki的?小弟写了个可以在Org-mode里建Anki卡片的package

Windows我个人平时现在也很少用,我也不确定都有什么坑,但理论上讲是不需要额外的设置的,因为外部依赖目前只有curl。我自己在Windows上一般都是用cygwin。

windows需要额外装个curl,自带得curl不给力

我决定有空先看一下curl,或者换一台Linux电脑试试。真心不想在windows里弄…… :fearful:

楼主辛苦了。其实anki的条目输入也还可以,不至于太差,所以有空再慢慢折腾~~

我试了试用英文可以成功,用中文不行啊。

1 个赞

2019-07-26-192709_grim

我用这个 anki-editor/examples.org at master · louietan/anki-editor · GitHub 都导入了 set anki-editor-create-decks to t

我就用的raw-text

发现一个奇怪的问题,连续push创建新cards的时候,emacs会卡住,查看anki和request的日志发现卡住之前创建card成功.

貌似anki-editor没有收到请求结束的信号,导致一致卡在那.

第二次push则会因为之前card已经创建又没有NOTE_ID导致那张card一直失败.

MAC环境:

Emacs Version: GNU Emacs 26.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.8) of 2019-04-12

Org: 20190624

Anki-editor: 20190608.1621

Anki: Version 2.1.13 (3ba55990)

AnkiConnect: 2019-06-02

该问题在mac和linux上同样出现,但是我发现只要将request降到20181129的版本就不会出现.

有谁用ankidroid的provide api吗?

好像用不了哎…开始好像我的curl的问题,换了curl后,又提示

:ANKI_FAILURE_REASON: Got empty reply from AnkiConnect

我是更新了最新的插件ankiconnect,不知道楼主是否能有时间看一下

大家先临时把request降级到0.3.0吧,升到0.3.1确实有些问题,看request的commit log最近有些关于sync模式和字符编码的修改,我正在debug。

好像我的版本是0.3.0…

把request的log级别设为debug,把 *request-log* buffer里的内容贴出来大家一起看下。

debug了半天,发现request.el的sync模式坑了,它代码里的sleep-for貌似阻塞了回调的执行,导致外面循环结束不了,死循环了。。。

[debug] REQUEST
[debug] Run: C:\tools\msys2\usr\bin\curl.exe --silent --include --location --compressed --cookie c:/Users/xx299/.emacs.d/.cache/request/curl-cookie-jar --cookie-jar c:/Users/xx299/.emacs.d/.cache/request/curl-cookie-jar --write-out \n(:num-redirects %{num_redirects} :url-effective %{url_effective}) --data-binary @c:/Users/xx299/AppData/Local/Temp/emacs-request4uGLZa --request POST http://127.0.0.1:8765
[debug] REQUEST--CURL-CALLBACK event = finished

[debug] REQUEST--CURL-CALLBACK proc = #<process request curl>
[debug] REQUEST--CURL-CALLBACK buffer = #<buffer  *request curl*-167308>
[debug] REQUEST--CURL-CALLBACK symbol-status = nil
[debug] REQUEST--CALLBACK
[debug] (buffer-string) =
HTTP/1.1 200 OK

Content-Type: text/json

Access-Control-Allow-Origin: *

Content-Length: 4



null
[debug] REQUEST-RESPONSE--CANCEL-TIMER
[debug] -CLEAN-HEADER
[debug] -CUT-HEADER
[debug] error-thrown = nil
[debug] -PARSE-DATA
[debug] parser = json-read
[debug] data = nil
[debug] symbol-status = success
[debug] Executing success callback.

windows自带的curl不行,于是搜索了半天,指定了一个curl

1 个赞

我可能表述有点问题 :joy: : 这是我已经指定后又出错的日志…

我刚才是理解错了,这种情况是AnkiConnect返回了空的结果,这个我想看看请求的内容,首先你确保AnkiConnect是最新的,然后打开addons对话框,选AnkiConnect,点类似查看文件的按钮,然后打开__init__.py文件,大概在41行有个API_LOG_PATH,等号右边的None改成一个路径,像下面这样,但是这个文件需要先手动建好,

API_VERSION = 6
API_LOG_PATH = 'C:\\Users\\xxx\\ankiconnect.log'

重试一下,把文件内容贴出来。

现在的情况是这样.

  1. 在元数据中指定卡牌时,提示如图所示, 在ankiconnect.log没有任何数据.

  2. 在属性中指定卡牌时,程序无响应,在ankiconnect.log同样没有任何数据.

下面是用Ctrl+g终止后request-log的内容

[debug] REQUEST-RESPONSE--CANCEL-TIMER
[debug] -CLEAN-HEADER
[debug] -CUT-HEADER
[debug] error-thrown = nil
[debug] -PARSE-DATA
[debug] parser = json-read
[error] Error from parser json-read: (json-readtable-error 40)
[debug] data = nil
[debug] symbol-status = parse-error
[debug] Executing error callback.
[debug] REQUEST
[debug] Run: C:\tools\msys2\usr\bin\curl.exe --silent --include --location --compressed --cookie c:/Users/xx299/.emacs.d/.cache/request/curl-cookie-jar --cookie-jar c:/Users/xx299/.emacs.d/.cache/request/curl-cookie-jar --write-out \n(:num-redirects %{num_redirects} :url-effective %{url_effective}) --data-binary @c:/Users/xx299/AppData/Local/Temp/emacs-requestzqQpwV --request POST http://127.0.0.1:8765
[debug] REQUEST--CURL-CALLBACK event = finished

[debug] REQUEST--CURL-CALLBACK proc = #<process request curl>
[debug] REQUEST--CURL-CALLBACK buffer = #<buffer  *request curl*>
[debug] REQUEST--CURL-CALLBACK symbol-status = nil
[debug] REQUEST--CALLBACK
[debug] (buffer-string) =

(:num-redirects 0 :url-effective params:actions:[params:note:deckName:Default])
(:num-redirects 0 :url-effective params:actions:[params:note:modelName:Basic])HTTP/1.1 200 OK

Content-Type: text/json

Access-Control-Allow-Origin: *

Content-Length: 4



null
[debug] REQUEST-RESPONSE--CANCEL-TIMER
[debug] -CLEAN-HEADER
[debug] -CUT-HEADER
[debug] error-thrown = nil
[debug] -PARSE-DATA
[debug] parser = json-read
[error] Error from parser json-read: (json-readtable-error 40)
[debug] data = nil
[debug] symbol-status = parse-error
[debug] Executing error callback.
  1. 对于ankiconnect.log, 我用anki 划词助手时是有数据的.

之前的那种为空的信息复现不了了…

我的輸出 (用request 0.3.1 assumes utf-8 by dickmao · Pull Request #53 · louietan/anki-editor · GitHub)

关于anki 知道的不是很多 只是用过一段时间 没有深入使用

我觉得他的显示不好看(把它弄好看好像也比较麻烦)

后来发现了 reveal.js 觉得它挺好看的

我就想能不能用 reveal.js 做一个网页版的anki 效果和org-drill一样就行(org-drill是不是也有sm2算法呢?)

anki上有sqlite 网页上可以用web-socket和emacs交互 进而通过emacs再调用sqlite 这样就有数据库了

anki上能隐藏某些信息 这个对于浏览器来说 再简单不过

就是不知道reveal.js 如何实现向下滑动 好像一张ppt显示的内容有点少(难为ppt了)

关于请求卡住的问题,升级到最新的request.el,请求卡住的问题应该是没有了,但请求还是会失败,最终会报”Got empty reply from AnkiConnect"的错,这个我想大家试下把 global-auto-revert-mode 关掉试试,看能不能暂时解决这个问题。

我也遇到了这个问题,我的环境 os: win10 curl 来源 : msys2 我把 msys2 的 curl 删掉,然后用 scoop install curl 安装curl anki-editor 正常

1 个赞