-
Notifications
You must be signed in to change notification settings - Fork 367
开发文档
solstice23 edited this page Jan 20, 2023
·
8 revisions
哇居然真的有人看这个开发文档 感动
Tips: 按下F12可以直接打开开发者控制台
该文件夹在本用户文件夹下,可以点击BetterNCM设置下的Open Folder
打开
打开后 一般会看见两个文件夹:plugins
和 plugins_runtime
其中plugins
文件夹是放置打包后的插件的,而plugins_runtime
是运行时自动生成的插件解压后的文件夹。
你可以直接解压plugins
文件夹内的任意.plugin
文件来了解插件的结构
在开发时,你可以在BetterNCM目录下创建一个plugins_dev
文件夹,该文件夹内的插件会自动重载,且不会在网易云关闭时被删除。
一般,一个插件需要至少两个文件:manifest.json
和一个js文件。
其中,manifest.json
的结构如下
{
"manifest_version": 1, // manifest 版本,必为 1
"name": "ExamplePlugin", // 插件名
"slug": "example-plugin", // 插件唯一识别名(英文、数字、横杠与下划线) (留空则根据插件名自动生成)(如果插件名有中文请填写该字段)
"version": "0.1.0", // 插件版本,推荐使用语义化版本(https://semver.org/)
"betterncm_version": ">=1.0.0", // 依赖的 BetterNCM 版本
"author": "Author", // 插件作者
"author_link": "https://example.com", // 作者链接(可选)
"description": "Description of the plugin", // 插件描述
"preview": "preview.png", // 插件预览图
"type": "extension", // 插件类型(可选):extension (默认) | theme | dependency"
"requirements": ["example-dependency"], // 依赖的插件(可选)
"injects": { // 普通注入
"Main": [ // 网易云主页面
{
"file": "main.js" // 需注入的文件
}
]
},
"hijacks": { // 网易云请求修改(可选)
"> 2.10.0 <= 2.10.6": { // 版本,支持Range
"orpheus://orpheus/pub/core.e5842f1.js": { // URL,开头部分匹配即可
//(如 orpheus://orpheus/pub/core.e5842f1.js?abcdefg 将被匹配到)
"type":"replace", // 类型,目前支持 replace 和 regex
"from":"var o;if(((this.U()||C).from||C).id==t)", // 搜索项
"to":";expose(a);var o;if(((this.U()||C).from||C).id==t)" // 替换为
}
}
},
"native_plugin": "native.dll", // 需要注入的 native dll (可选)(接口参考已有 native 插件)
}
在BetterNCM0.2.2
后,你还可以创建一个startup_script.js
,该文件内的代码会早于任何网易云自身代码注入,但是不会有plugins api
。
在每个注入的js文件中,你都可以调用plugin.onLoad(async p => {})
和plugin.onConfig(tools => {})
来执行实际代码和渲染设置界面。
plugin.onLoad(async p => {})
中,p
和plugin
内有一些与本插件相关的信息,如当前地址等。
plugin.onConfig(tools => {})
返回一个HTMLElement,会在设置页中显示。tools中有一些帮助创建HTMLElement的工具。
你可以调用BetterNCM API来实现一些如文件操作的基本功能。
在控制台中输入betterncm
以查看全部api (又懒得写文档了)