[插件] Dropbox Client + 百度网盘客户端

两个插件,使用 Emacs 管理 Dropbox 和 百度网盘。

有兴趣的,欢迎尝试:

功能简介:

  • 可以直接搜索网盘上文件并打开
  • 使用 Dired 对网盘上文件进行管理
  • 类 Tramp 方式直接修改网盘上的文件
25 个赞

大佬,这两个插件都好赞呀,手动来点赞! :wink:

1 个赞

doom emacs 下安装好像有问题:

    x There was an unexpected error
      Message: Symbol's value as variable is void
      Error: (void-variable dupan-prefix)
      Backtrace:
        (concat "\\`" dupan-prefix)
        (cons (concat "\\`" dupan-prefix) 'dupan-handler)
        (add-to-list 'file-name-handler-alist (cons (concat "\\`" dupan-prefix) 'd...
        (load-with-code-conversion "/Users/sfq/.emacs.d/.local/straight/build-28.1...
        (load "/Users/sfq/.emacs.d/.local/straight/build-28.1/dupan/dupan-autoload...
        (progn (load autoloads-file nil 'nomessage))
        (if (file-exists-p autoloads-file) (progn (load autoloads-file nil 'nomess...
        (let ((autoloads-file (straight--autoloads-file package))) (if (file-exist...
        (straight--load-package-autoloads "dupan")
        (let ((name (symbol-name package))) (add-to-list 'load-path (directory-fil...
    ! Extended backtrace logged to ~/.emacs.d/.local/doom.error.log

看来是注册 handler 的语句多余添加了 ;;;###autoload。最新代码已经将其移除,请更新代码再试。

可以啦,顺便问一下回调页是不是设置成https://pan.baidu.com/union/console,就行了。

你设成这个,后面授权成功后,浏览器会跳转到一个新的页面,地址栏里 url 会是类似 https://pan.baidu.com/union/console?code=xxkdjfkdfj 的样子。那后面的 xxkdjfkdfj 就是需要的 code 了。

好的,谢谢,似乎要等回调地址生效。

管理百度盘文件简直太好用了,之前一直想整理网盘文件,太麻烦放弃了。

简单看了下实现,下载是用 url-retrieve 实现的,想问问这个靠谱嘛?下载大文件会卡 Emacs 嘛?之前在用 elfeed 时写过一篇文章[1],里面介绍了 url-retrieve 的各种问题, 不知道新版本的 Emacs 有没有所改善?

[1]:https://emacstalk.github.io/post/007/

以前用过 request.elcurl 作为后端,使用体验并没好多少,反而遇到过一些 BUG,所以并不喜欢(纯粹个人感觉)。

至于 url.el 到底慢多少,没做过专门比较,不过从我的使用体验看,并没有多差。比如,我日常在各个操作系统不同电脑上使用 go-translate 进行翻译,用的就是 url.el,速度可以接受,出错的概率极低。

至于你提到的: tls 问题,偶尔会遇到,但很少;proxy 的问题,无感,可能跟我使用代理的方式有关。

最好的解决方案还是把 curl 集成到 url.el 中,作为可选项。不过这个真不知道有没有实现的那一天 :slight_smile:

至于下载,我这边用 url.el 从百度网盘下载几十兆的东西,基本都是十秒左右下完,尚可。

如果下载超大文件的话,其实换不换 curl 都差不多,我感觉更合适的方式,还是类似 GitHub - emacsmirror/aria2: Control aria2c commandline tool from Emacs 的解决方案,给 Emacs 添加一个下载管理器。

也许可以使用外部扩展的方式给 Emacs 添加一个跨平台的下载管理器,将 Emacs 变成一个迅雷使用,那样就方便了,哈哈。

2 个赞

EAF 浏览器已经自带了 aria2 的图形下载插件,这个功能已经有了,哈哈哈。

那改天研究下,能不能将网盘上的文件,直接交给 eaf 的下载插件进行下载。如果可以的话,那就妙极。

1 个赞

楼主太牛了,终于等到百度客户端了。

不过有个小问题,在spacemacs里c-x c-f会调用helm,导致报tramp的一个错误:

`Error running timer: (user-error “Not a Tramp file name: "/dp:"”)

临时直接调用这个了

(find-file “/dp:/”)

能不能提供一个不调用系统打开文件的接口。

这么牛的插件岂能不赞 :+1:t2: 赶紧发布到melpa吧

helm 没用过,不懂。但是它将以 /dp: 开始的也当作 Tramp file 应该不妥吧,建议你给他们提一下 Issue。

你也可以写一个小命令完成调用啊,比如:

(defun you-command-to-open-baidu-file ()
  (interactive)
  (let ((file (read-string "请输入您的百度网盘路径: " "/dp:")))
    (find-file file)))

我觉得这个就没必要添加到源码中去了。

懒啊,有时间再说。

现在完善了百度网盘的上传,增加了分片上传,也就是说上传文件的大小没有 4M 限制了。

4M 还是太小了啊。

PS: 这样,跨网盘之间 (dropbox <-> 百度) 的文件复制/迁移就方便多了。

算了,helm问题太多,就算能打开了,拷文件还是一样报错。 改成ivy一切ok

我最近也探索了下这方面,除了 EAF 这种大杀器,要是对动态模块不介意,可以考虑用 libcurl + 多线程的方式,这样就不会堵塞 Emacs 主进程了。我在一个插件中实现了,供参考:

你这个很适合单独分出来一个包,做成通用的下载管理器啊,就像浏览器里的下载管理一样。那样的话,其他人想要做下载任务的时候,直接调用就好了。