跳转到主要内容

Beets的iBroadcast插件

项目描述

Beets iBroadcast 插件

此插件允许您将beets库中的音乐上传到iBroadcast流媒体服务。

设置

  1. 使用以下命令将插件安装到您的本地环境:

    pip install beets-ibroadcast
    
  2. 通过在您的beets配置文件的plugins:部分添加ibroadcast来启用插件。

  3. 配置您的iBroadcast凭据

    ibroadcast:
      username: <your email address>
      password: <your password>
    

    如果您的密码包含任何特殊字符,请务必将其放在引号内。

用法

beet ibroadcast <query>
  • 根据需要上传所有匹配查询的轨道。
  • 用户标签会与iBroadcast上的标签同步。
  • 播放列表会作为iBroadcast上的播放列表同步,只要播放列表中的所有轨道都包含在给定的查询中。

常见问题解答

我如何知道这个插件不会破坏我的iBroadcast收藏夹?

您不知道。但它会尽量小心并防止许多边缘情况。如果您想在不实际执行的情况下查看插件将做什么,可以传递-p(表示“假装”)标志

beet ibroadcast -p

我建议从一个小的查询开始,以了解它的工作方式。例如。

beet ibroadcast -p artist:Offspring album:Americana

如果您喜欢您看到的内容,请再次执行它,但不带-p,并看看结果如何。一旦您对工具有了信心,您就可以用更大的查询去尝试。

beets-ibroadcast如何避免重复上传?

当上传曲目时,插件会将ib_uploadtimeib_trackid灵活属性附加到曲线上。下次该曲目被考虑上传时,将检查这些属性:如果曲目的mtime早于其ib_uploadtime,则假定曲目是最新的,上传将被跳过。

对于mtime较新的曲目,将再次上传该曲目,并将之前的曲目ID删除。因此,过时的旧版本曲目将出现在您的iBroadcast垃圾箱中,直到其被清空。

无论如何:在上传之前,将计算曲目的MD5校验和,如果服务器已经有一个具有该校验和的曲目,则上传将被跳过。因此,如果您使用beets-ibroadcast以外的上传器上传曲目,它们仍然会被跳过(尽管截至本文写作时,beets-ibroadcast会读取这些文件来计算它们的校验和,每次它们匹配查询时,这会影响性能)。

您可以使用-f标志跳过这些检查并强制重新上传曲目。

标签是如何同步的?

此插件以与usertag插件兼容的方式,在iBroadcast端与usertags灵活属性同步标签。

如果您在本地修改了曲目的标签(例如,通过beet addtag),这些更改将同步到iBroadcast。如果您通过iBroadcast网站远程修改曲目的标签,这些更改将同步到beets数据库。

为了知道自上次同步以来曲目的标签是否已在本地上传、远程上传或两者都进行了更改,每次成功同步时,都将标签的当前状态存储在ib_tagids灵活属性中。这种策略清楚地表明,例如,一个远程存在但本地不存在的标签是本地删除还是远程添加;因此,不可能出现标签冲突。

有关在您的beets数据库中处理标签的详细信息,请参阅usertag插件文档

播放列表是如何同步的?

插件将iBroadcast端的播放列表与存储在您配置的播放列表目录中的M3U播放列表文件同步,配置由播放列表插件完成。

如果您在本地修改了播放列表(例如,通过编辑M3U文件),这些更改将同步到iBroadcast。如果您通过iBroadcast网站远程修改播放列表,将注意到这些更改,但不会采取行动;相反,将打印出插件还不够智能,无法更新相应的M3U文件的消息。欢迎贡献PR以实现此功能!如果播放列表在本地和远程都进行了修改,插件将报告这种情况,但不会采取行动。

为了知道自上次同步以来播放列表的曲目是否已在本地上传、远程上传或两者都进行了更改,播放列表的当前状态将存储在您的beets库基本目录中的隐藏文件.ibroadcast-playlists.json中。

有关在您的beets库中处理播放列表的详细信息,请参阅播放列表插件文档

我如何一次性上传所有播放列表?

播放列表同步的一个问题是,只有当您传递给插件的查询匹配播放列表中的所有曲目时,才能从本地同步到远程。因此,同步您所有播放列表的一个简单方法是上传您的整个beets库,通过传递一个空查询

beet ibroadcast

如果您不想将整个beets库上传到iBroadcast,但仍然想上传所有属于播放列表的曲目,这里有一个实现方法

cat /path/to/playlists/*.m3u | sort -u > /tmp/tracks-to-upload.m3u
beet ibroadcast playlist:/tmp/tracks-to-upload.m3u
rm /tmp/tracks-to-upload.m3u

这将把位于/path/to/playlists/*.m3u的所有播放列表合并到一个单独的临时播放列表文件中,然后您将其作为beets查询输入;然后ibroadcast插件将确保上传所有匹配查询的曲目,并将包含这些曲目的所有播放列表同步。这个技巧假设您已根据以下方式在beets配置中配置了播放列表目录

playlist:
  playlist_dir: /path/to/playlists

否则,ibroadcast 插件无法找到并同步您的 M3U 文件。

我该如何获取更多关于出错原因的详细信息?

您可以使用 -v 标志让 beets 的输出更详细。例如:

beet -v ibroadcast usertags:favorites

这将导致 ibroadcast 插件输出更详细的调试信息。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

beets-ibroadcast-0.5.2.tar.gz (11.4 kB 查看哈希值)

上传时间 源代码

构建分发

beets_ibroadcast-0.5.2-py3-none-any.whl (12.1 kB 查看哈希值)

上传时间 Python 3

由以下机构支持