Spotube 中文文档 下载 App

Spotube 插件测试、分发与上架 GitHub / Codeberg

测试策略

Spotube 插件的测试分两层:Spotube 端真实环境测试 + Kotlin 单元测试。

Spotube 端测试(必做)

插件是为 Spotube 写的,最终运行环境就是 Spotube 的 Zipline runtime。单元测试覆盖不到:

怎么测:构建 .smplug → 手动拷贝到插件目录 → 启动 Spotube → 搜索/播放/歌词/scrobble 一条龙测。这是插件开发的主要测试手段。

Kotlin 单元测试(推荐)

纯逻辑部分(比如搜索结果排序、Track 转换、API 返回值解析)可以用 JVM 单元测试:

// src/jvmTest/kotlin/myplugin/SearchTest.kt
class SearchTest {
    @Test
    fun `search should filter out remixes`() {
        // 测试插件内部的搜索过滤逻辑
    }
}

Zipline 官方提供了一个 test runtime 可以在 JVM 里模拟宿主 Bridge,测试插件注册和接口实现。适合复杂的多接口插件。

常见测试场景

场景测试什么
搜索空结果插件返回空列表时 Spotube 会不会崩溃或卡 UI
网络不可用插件 HTTP 请求失败时优雅降级(返回空 + 错误提示)
大量结果搜索 "a" 返回 1000 条 → Spotube 列表渲染性能
并发搜索多个 MetadataSearchAPI 插件同时搜 → 会不会相互干扰
长时间运行Spotube 开一天 → 插件 Bridge 连接有没有泄漏

分发方式

GitHub Release(推荐)

Spotube 从 GitHub Release 自动索引插件。你的仓库需要:

  1. README.md 里写清楚插件做什么、支持哪些接口、数据来源是什么(比如 "本插件从 X 服务拉元数据")
  2. Release 附件里上传 .smplug 文件(命名建议 <plugin-id>-<version>.smplug)
  3. Release body 里写 changelog
  4. 仓库打 tag 版本(对应 plugin.json 里的 version)

Spotube 会自动扫描 GitHub Release,把 .smplug 文件列在"可用插件"里,用户可以直接一键下载。

Codeberg Release

Codeberg 是 GitHub 的开源替代(德国)。Spotube 同样会索引 Codeberg Release。对不想被 GitHub 锁定的插件作者来说是好选择。

手动分发(Discord / 论坛)

还没准备好上 GitHub Release 的测试版,可以直接在 Spotube Discord 的 #plugin-dev 频道分享 .smplug 文件。用户下载后用"本地上传"按钮安装。

版本兼容声明

Spotube 主版本和 plugin_interfaces 版本号对应:

plugin_interfaces 版本兼容的 Spotube 版本
5.0.xv5.0.x
5.1.xv5.1.x

⚠️ Spotube 可能在 minor 版本里添加新接口或调整现有接口——v5.1 新增了 AudioAPI 的 FLAC 支持、abilities 徽章。插件作者需要:

被 Spotube 官方收录

Spotube Team 会主动发现优秀的社区插件,在 Discord 和官方博客上推荐。要让你的插件被注意到:

  1. 实现完整——至少一个接口做扎实(不要只做一个 stub 返回空)
  2. 有 README 和截图——展示插件效果
  3. 通过安全审计——Spotube Team 会看源码确认没有可疑 HTTP 请求
  4. 在 Discord 发帖——#plugin-dev 频道说一下,维护者会看

被收录后,你的插件会被标记 Community 标签(官方插件是 Official,但 Community 插件同样可信)。

版本发布节奏

建议:

Spotube 不强制自动更新插件——用户需要手动到插件页点 "Update"(如果 Spotube 检测到新版本)。

安全提醒(给插件作者)

你也有责任: