Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: 扩展模块草案 #107

Closed
monkeyWie opened this issue Apr 14, 2023 · 3 comments
Closed

RFC: 扩展模块草案 #107

monkeyWie opened this issue Apr 14, 2023 · 3 comments
Labels
enhancement New feature or request

Comments

@monkeyWie
Copy link
Member

monkeyWie commented Apr 14, 2023

目标

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

功能点

脚本引擎

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

扩展管理

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

扩展钩子

目前暂定以下几个钩子:

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

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

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

扩展设置

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

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

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

征求意见

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

相关PR

#78

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

@monkeyWie monkeyWie added the enhancement New feature or request label Apr 14, 2023
@monkeyWie monkeyWie pinned this issue Apr 14, 2023
@hugetiny
Copy link
Member

hugetiny commented Apr 14, 2023

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

@Junisyoan
Copy link

Junisyoan commented Sep 1, 2023

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


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

@monkeyWie
Copy link
Member Author

Relesed on v1.4.0!

@monkeyWie monkeyWie unpinned this issue Oct 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants