aria2.el 无法使用

最近开始折腾了aria2作为下载工具。感觉那些 Web GUI 有些不友好,至少我用着有些困惑。在melpa上看到了 aria2.el ,觉得至少 emacs 比那些 Web GUI 舒服一点,至少不用开浏览器。 一看那更新时间:20141107.1517,感觉不妙。点了那链接: https://bitbucket.org/ukaszg/aria2-mode 404:页面不存在,感觉没有售后了。 下了源码看了看,这个作者做的挺不错的,默认键绑定兼用 emacs 和 evil,还很贴心地给了个 aria2-add-evil-quirks选项,自动把两个 major-mode 加入 evil-emacs-state-modes。 但是 M-x aria2-downloads-list 启动以后,并不能下载,提示如下:

Starting process: /usr/local/bin/aria2c -D --enable-rpc=true --rpc-secret=25C4C3E2-D020-4F7A-B9D3-295653BE77E5 --rpc-listen-port=6800 --dir=/Users/apple/Downloads/ --save-session=/Users/apple/.emacs.d/aria2c.session --input-file=/Users/apple/.emacs.d/aria2c.session
if: Failed to start

在 Github 上能找到这个 package 的 mirror。 我的配置是 Spacemacs 0.222.7, GNU/Emacs 25.1.1, x86_64-apple-darwin16.3.0 macOS Sierra 10.12.3 Homebrew 安装的 aria2 ,版本1.31.0

1 个赞

其实已经启动了,只是这个扩展自己判断错误,可能是因为不兼容 macOS。

函数 process-attributes 在 mac 下不起作用:

(process-attributes 1) ;; => nil

似乎这个也好久没更新了

(defun my/aria2--is-aria-process-p (f &rest ARG)
  "Returns t if PID belongs to aria."
  (let ((pid (car ARG)))
    (eq pid (string-to-number
             (shell-command-to-string
              (format "pgrep -u %s aria2c" (user-real-login-name)))))))

(advice-add 'aria2--is-aria-process-p :around #'my/aria2--is-aria-process-p)

这样就可以启动了,但是并不好用,还有其它问题。

我试一试先。

Error running timer ‘aria2--refresh’: (wrong-type-argument listp 49) 

启动是启动了,输入 url 也能下载,但是不会显示项目进程。

慢慢来吧。


  alist-get(uri 54)
  (file-name-nondirectory (alist-get (quote uri) (elt uris 0)))
  (and (< 0 (length uris)) (file-name-nondirectory (alist-get (quote uri) (elt uris 0))))

具体的报错,因为太长只贴一部分。

(defsubst aria2--list-entries-File (e)
  (let ((bt (alist-get 'bittorrent e)))
    (or (and bt (alist-get 'name (alist-get 'info bt)))
        (let ((uris (cdr (car (elt (alist-get 'files e) 0)))))
          (and (< 0 (length uris)) (file-name-nondirectory (alist-get 'uri (elt uris 0)))))
        "unknown")))

问题估计在这里。

在熟悉 Lisp 以后成功修复。怀疑原版本和最新版不兼容。

在 macOS 上对 aria2 1.31.0 和 Emacs 25.2进行了测试。