Skip to content

快速开始

This content is not available in your language yet.

Go 扩展就是一份普通的 Go 源文件(.go),宿主使用 Scriggo 引擎编译运行。它适合需要更强类型、复杂解析或使用 Go 生态库的场景。

本页介绍如何创建扩展文件与声明入口函数sdk 的详细用法、返回类型与 Scriggo 限制请见 详细用法;本地以原生 Go 开发与运行时交给 Scriggo 执行两种驱动方式见 原生 Go 运行Scriggo 运行。通用元数据见 开始开发,返回结构见 数据格式

直接 clone miru_extension_template 模板仓库即可开始开发:

Terminal window
git clone https://github.com/appdevelpo/miru_extension_template.git my-extension

新建一个与包名同名的 .go 文件,例如 my.extension.go。文件是一个普通的 Go package,通过 go get 引入官方 SDK:

Terminal window
go get github.com/miru-project/miru-core/pkg/extension/golang/sdk

Go 扩展通过导出函数暴露入口,宿主按函数名调用:

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