gopeed
gopeed copied to clipboard
RFC: 扩展模块草案
目标
支持安装JavaScript脚本进行扩展增强,并且基于git地址进行安装,达到去中心化安装方式。
功能点
脚本引擎
首先在后端(Golang)需要接入脚本引擎,并且必须是纯 Go 编写的,这样才能无痛的进行多平台交叉编译,目前调研下来 goja 是最佳选择,当然 goja 只是一个纯 js 运行时,需要垫片一些常用的模块提供给扩展开发,例如网络访问使用的 ajax、fetch 等等,目前只实现这两个垫片,后续有需要可以再加。
扩展管理
通过git地址安装之后,扩展信息会记录到本地数据库中,方便后续扩展管理,例如升级、卸载等。
扩展钩子
目前暂定以下几个钩子:
-
任务解析前: 在添加下载任务时,解析请求链接之前触发: 以此实现此类需求:
- 输入一个视频网站链接,自动解析出视频文件及真实下载链接。
- 输入一个网盘链接,自动解析出文件列表及真实下载链接。
-
任务下载完成: 在下载完成后触发,以此实现此类需求:
- 自动上传到网盘
- 自动转码
- 视频合并
扩展设置
扩展提供标准化的设置页,通过扩展声明文件来声明设置项,在扩展设置页面根据设置声明进行渲染,用户可以在设置页面进行配置,以此实现此类需求:
- 配置 UA
- 配置 Cookie
- 配置账号密码
这样扩展脚本就可以通过读取用户设置的值来实现对应的功能。
征求意见
目前扩展模块的草案已经完成,欢迎大家提出意见,如果有更好的想法也可以提出来。
相关PR
https://github.com/GopeedLab/gopeed/pull/78
在PR合并到主干之后,意味着草案已经进入正式阶段,不会再有破坏性的改动。
如果要版本管理的话git最合适。 第三方插件 扩展钩子Webhook,功能完全可以由插件作者自己写,纯js实现。
想问一个,能不能做到屏蔽迅雷,像aria2一样屏蔽掉迅雷
I would like to ask one question, can it be possible to block Xunlei, just like aria2
Relesed on v1.4.0!