跳到內容

快速開始

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