快速开始
This content is not available in your language yet.
Go 扩展就是一份普通的 Go 源文件(.go),宿主使用 Scriggo 引擎编译运行。它适合需要更强类型、复杂解析或使用 Go 生态库的场景。
本页介绍如何创建扩展文件与声明入口函数;sdk 的详细用法、返回类型与 Scriggo 限制请见 详细用法;本地以原生 Go 开发与运行时交给 Scriggo 执行两种驱动方式见 原生 Go 运行 与 Scriggo 运行。通用元数据见 开始开发,返回结构见 数据格式。
创建扩展文件
Section titled “创建扩展文件”使用模板仓库(推荐)
Section titled “使用模板仓库(推荐)”直接 clone miru_extension_template 模板仓库即可开始开发:
git clone https://github.com/appdevelpo/miru_extension_template.git my-extension新建一个与包名同名的 .go 文件,例如 my.extension.go。文件是一个普通的 Go package,通过 go get 引入官方 SDK:
go get github.com/miru-project/miru-core/pkg/extension/golang/sdkGo 扩展通过导出函数暴露入口,宿主按函数名调用:
import sdk "github.com/miru-project/miru-core/pkg/extension/golang/sdk"
// 参数顺序:pkg string 在前,其余为业务参数func Latest(pkg string, page int) ([]sdk.ExtensionListItem, error) { /* ... */ }func Search(pkg string, kw string, page int, filter string) ([]sdk.ExtensionListItem, error) { /* ... */ }func Detail(pkg, url string) (*sdk.ExtensionDetail, error) { /* ... */ }func Watch(pkg, url string) (*sdk.ExtensionWatch, error) { /* 返回镜像列表(或 @type all 的 ExtensionAllMirror) */ }func Mirror(pkg, url string) (*sdk.ExtensionBangumiWatchMirror, error) { /* 解析最终播放结构 */ }func Load() { /* 扩展加载时执行一次(可省略) */ }请通过 PR 将扩展提交到 Miru 扩展仓库,PR 中需包含扩展源文件,不需要 index.json。