eval_in_emacs
可以获得 ELisp 的返回值吗?
或者 Python 里如何获取 Emacs 中的变量?
netease-api-request
中不使用 :sync t
的话它会获取上一次的 request 请求 (该函数通过 json 输出到 buffer 上来获取数据),emacs-request 我也不是很懂,我有时间再研究研究吧。
哈哈,玄学
检查 eaf-var-list 的用法
花了点时间研究了一下,给 eaf-var-list
改进了一下, eaf-setq
现在能够使用 list 类型的值了。Python 里面通过 list_string_to_list
函数进行转化类型。这下交互问题就解决了,我昨天愁的就是这个传值的功能。
Emacs端与 Python 等的交互啥的已经 OK ,正在使用中,感觉挺不错。明天开始加入快捷键、switch-mode
, write-mode
等,然后打算先公测一波,试试有没有 BUG。再加入 UnblockNetease。
近几天 netease-cloud-music.el
仓库的提交都可忽略,基本没有对以前 BUG 的补丁,都是适配 EAF 的。
后端是不是npm可以一键安装?
netease-cloud-music.el
还是得手动克隆
不过等完善之后我就准备加到 MELPA 上了
等下,你说得后端是哪个? 第三方 API ,插件,还是 UnblockNetease
我的意思,EAF这边除了elisp插件,其他是否可以通过npm一键安装?
到时候应该会用一个 Elisp 函数来一键安装
给EAF发一个PR?我这两天有空来合并一下。
行,后面再加 UnblockNetease 后我再提一个 PR 吧
修复了添加歌单、更改歌单名称中文乱码的问题,需要使用本人的 API 才可解决
PR 合并了,但是EAF打开是一个空列表。
直接运行 netease-cloud-music
命令显示错误 progn: Opening input file: 没有那个文件或目录, /home/andy/.emacs.d/ncm-playlist
不晓得怎么开始。
这个 base64 的 decode 一定得在 server 上完成么?emacs 不可以么?因为我看你的代码里 base64 encode 有部分是在 emacs 里做的。
(decode-coding-string (base64-decode-string
(base64-encode-string (encode-coding-string "我" 'utf-8)))
'utf-8)
这样是可以把多字节给加/解码的(就是不知道在 server 上传上去或拉下来有没有用)。
另外,eaf 像 tui 一样可以拆开就好了,毕竟不是所有人都用 eaf 的。现在虽然可以正常用,但他们是包在一个文件里的。
要跑一下 netease-cloud-music-download-api
,或者人工把 netease-cloud-music-api-repo
拉进 netease-cloud-music-api-dir
,现在代码里面没有自动触发这个(其实是文档没有写,不看代码不知道怎么准备前置的东西
我试过直接在 Emacs 里完成,编码后依旧会乱码。最后发现是 Emacs 把名称传给 API 的时候乱码了,因此先在 Emacs 端编码,后在 API 端解码,以防止乱码
这个主要是很多函数需要在调用核心文件后进行 EAF 端同步的,如果重新写函数或者写 advice 会特别麻烦。在核心文件里的那些函数关于 EAF 的命令都用了 (netease-eaf)
宏进行了包裹,它会判断现在是 EAF 前端还是 TUI。所以不用担心。
关于这个问题我刚刚已经写了个补丁推送了(netease-cloud-music.el
的补丁),启动的时候不会报错了。
只要在 Local Playlist 里添加歌曲文件就会自动生成,我后期会在文档中说明
我试过直接在 Emacs 里完成,编码后依旧会乱码。最后发现是 Emacs 把名称传给 API 的时候乱码了,因此先在 Emacs 端编码,后在 API 端解码,以防止乱码
我试了一下,不是 emacs 的问题,是 curl 的问题。
curl -c cookie.jar 'http://localhost:3000/login/cellphone?phone=<phone>&md5_password=<pwd>&countrycode=86'
curl -b cookie.jar 'http://localhost:3000/playlist/create?name=测试' # 乱码
curl -b cookie.jar 'http://localhost:3000/playlist/create?name=%E6%B5%8B%E8%AF%95' # 正常的
原因是 http 请求中的字符要转码,这是标准(rfc3986,好像是这个)。就是写 S/C 时会用的 urldecode 和 urlencode。平时的浏览器和一些请求库会自动做,但 curl 不会(
emacs 是里 (url-encode-url "测试")
这样应该就行了
P.S. 因为返回内容是在 body 里,而且不是 url form content,所以不需要 urldecode
API 的最新一次提交被删除了,netease-cloud-music.el
最新提交使用了(url-encode-url)