gopeed icon indicating copy to clipboard operation
gopeed copied to clipboard

RFC: 扩展模块草案

Open monkeyWie opened this issue 2 years ago • 1 comments
trafficstars

目标

支持安装JavaScript脚本进行扩展增强,并且基于git地址进行安装,达到去中心化安装方式。

功能点

脚本引擎

首先在后端(Golang)需要接入脚本引擎,并且必须是纯 Go 编写的,这样才能无痛的进行多平台交叉编译,目前调研下来 goja 是最佳选择,当然 goja 只是一个纯 js 运行时,需要垫片一些常用的模块提供给扩展开发,例如网络访问使用的 ajax、fetch 等等,目前只实现这两个垫片,后续有需要可以再加。

扩展管理

通过git地址安装之后,扩展信息会记录到本地数据库中,方便后续扩展管理,例如升级、卸载等。

扩展钩子

目前暂定以下几个钩子:

  1. 任务解析前: 在添加下载任务时,解析请求链接之前触发: 以此实现此类需求:

    • 输入一个视频网站链接,自动解析出视频文件及真实下载链接。
    • 输入一个网盘链接,自动解析出文件列表及真实下载链接。
  2. 任务下载完成: 在下载完成后触发,以此实现此类需求:

    • 自动上传到网盘
    • 自动转码
    • 视频合并

扩展设置

扩展提供标准化的设置页,通过扩展声明文件来声明设置项,在扩展设置页面根据设置声明进行渲染,用户可以在设置页面进行配置,以此实现此类需求:

  • 配置 UA
  • 配置 Cookie
  • 配置账号密码

这样扩展脚本就可以通过读取用户设置的值来实现对应的功能。

征求意见

目前扩展模块的草案已经完成,欢迎大家提出意见,如果有更好的想法也可以提出来。

相关PR

https://github.com/GopeedLab/gopeed/pull/78

在PR合并到主干之后,意味着草案已经进入正式阶段,不会再有破坏性的改动。

monkeyWie avatar Apr 14 '23 07:04 monkeyWie

如果要版本管理的话git最合适。 第三方插件 扩展钩子Webhook,功能完全可以由插件作者自己写,纯js实现。

hugetiny avatar Apr 14 '23 08:04 hugetiny

想问一个,能不能做到屏蔽迅雷,像aria2一样屏蔽掉迅雷


I would like to ask one question, can it be possible to block Xunlei, just like aria2

Junisyoan avatar Sep 01 '23 10:09 Junisyoan

Relesed on v1.4.0!

monkeyWie avatar Oct 17 '23 05:10 monkeyWie