把你其余的音乐都带进来
一个插件把一个外部音乐来源带进 rox。rox 浏览这个来源、搜索它、无缝播放它,还能按你的要求留下来,用的是跟硬盘上文件一样的面板和队列。
插件是什么
插件就是一个文件夹,里面放着一份小清单和一个程序。这个程序可以是 Python 脚本,也可以是原生的可执行文件,它通过标准输入输出跟 rox 对话。第一次有东西需要它时,rox 会启动它;它崩溃了,rox 会重启它。十分钟里崩溃五次,它就会停下来,直到你把它关掉再打开。
插件能做的事就那么几样:列出并搜索一个目录,把收藏同步进你的媒体库,提供音频,跑一个电台,链接到它自己的网页,在它名下加几块预设面板。它不能加按钮,不能改 rox 的样子,也够不到别的面板。插件带来的是来源,围着它们转的播放器还是 rox 自己的。
浏览一个来源
每个正在运行的插件,都会在“添加面板”里的“插件”下面占一个位置,点开就是一个针对它那个来源的外部来源面板。这块面板列出插件的文件夹、播放列表和专辑,能搜索,显示封面,滚动的时候还会加载更多。服务自己的主页就列在面板的最上层,不用点一下就在那儿。
面板里还有什么,看插件自己。列表上方的标签能在插件的几种视图之间切换,比如把搜索收窄到专辑。一架架封面横向滚动,一整页全是封面的话就折成网格。像下载量这种服务知道、你的标签不知道的列,点一下表头就能排序。插件的某首曲目在播的时候,最上层会显示它,还有接下来是什么。

播放和留存
插件的曲目跟你自己的文件一样进队列、进播放列表、进历史,一首接一首无缝播放。放到一半断线的曲目会重新连上,从原来的地方接着放。插件给的直播流跟电台一样,能暂停,也有回拨缓冲。
播放一首曲目不会把它加进媒体库,“加入媒体库”才会。把鼠标停在一个收藏上,点它的对勾就能把整个收藏留下来。它会同步进你的媒体库,跟着这个收藏的变化走,插件停了或者没网的时候,也能从媒体库里打开。
“在浏览器中打开”和“复制链接”,不管这首曲目在 rox 里哪儿出现,都会带你去它在这家服务上的曲目页或专辑页。scrobble 默认关闭,除非插件自己要求打开,那时候插件那一行会多出一个开关。
电台
带电台功能的插件,会给它的曲目、专辑、播放列表和艺术家加上“播放相似曲目”。专辑、播放列表和艺术家会先播放自己的曲目;曲目只是电台的起点,本身不会在电台里播放。之后快放完的时候,就用这家服务挑的曲目接着填队列。随机播放会切到“相似”,插件的曲目不需要先对媒体库做声学分析。从面板里播放的一张专辑,放完之后也会这样接着放,而不是接到你本地的媒体库里。
电台的曲目跟其他曲目一样,走的是 rox 自己的播放引擎。它们不会加进媒体库,电台会跳过这一次已经放过的曲目,重启之后接着放。在“设置 > 播放”里关掉“继续播放”,队列放完就会停。
你在批准什么
新装的插件一开始是关着的。打开它本身就是批准,你确认的那张卡片会说清楚这个插件是什么、能做什么、需要哪些程序,还有它会以你的权限在这台电脑上作为一个程序运行。
批准针对的正好是插件文件夹里的那些文件。其中任何一个变了,插件就会自己关掉,显示“磁盘上已改动”,直到你再次批准;那张卡片会告诉你清单里改了什么。“插件”页里的“移除”会去掉插件的曲目、同步的收藏、设置和批准,但不会动它的文件夹。
自己写一个
插件说的是 JSON-RPC,通过标准输入输出一行一条消息,所以任何能读写文本行的语言都能用。插件指南讲了清单、每个方法、超时设置,还有音频是怎么到播放器的。“插件”页上的“插件指南”按钮会为你正在跑的这个版本打开它。
仓库里有两个示例。tones 生成正弦音和和弦,是用来学协议的那个。Internet Archive 用上了协议里所有可选的部分,对着一个真实的目录:主页的封面架、多种视图、列、电台和链接,全用 Python 写的,除了标准库什么都没多用。
插件那一行的“开发者模式”,会在你退出 rox 之前自动批准你对它文件夹的改动,每次保存都会重启这个插件。协议里较新的每一部分都是可选加入的。插件启动的时候,rox 会告诉它自己支持哪些,所以插件永远不用发一个老版本 rox 会拒绝的东西。
插件到哪儿就不管了
- 插件只带来源,不做别的。像新面板或者 DSP 这种改播放器本身的 foobar2000 组件,插件没有对应的东西。
- 脚本类插件需要这台机器上有 Python 3。大多数 Linux 装机自带,Windows 和 macOS 通常没有。
- Flatpak 看不到宿主机上装的程序。它自带 Python 3,所以只依赖标准库的插件能直接跑。别的都得放进插件自己的
bin文件夹里。 - 从 Finder 或程序坞启动的 Mac 应用拿不到你 shell 的 PATH,所以用 Homebrew 装的程序会显示成缺失,除非你在“设置 > 插件”的“程序文件夹”里加上 Homebrew 的文件夹。
- 在 Windows 上,原生插件运行的时候没法替换它的文件。更新它的文件夹之前,先把它关掉。
试一个看看
下载 rox,在“设置 > 插件”里打开“启用插件”,把 Internet Archive 示例复制进插件文件夹。它只需要联网,不用账号。