11个版本

0.7.1 2023年7月13日
0.7.0 2023年1月20日
0.6.2 2022年11月16日
0.6.0 2022年7月20日
0.4.0 2021年5月7日

#24多媒体

每月 25次下载

GPL-3.0 许可证

45KB
804

rescrobbled

License Crates.io CI

Rescrobbled是一个音乐抓取守护进程。它使用MPRIS检测在D-Bus上运行的媒体播放器,自动更新“正在播放”状态,并在播放时将歌曲抓取到Last.fmListenBrainz兼容的服务。

例如,由于共享Spotify账号(我知道,我知道),我需要一个方法在不将Spotify账号连接到我的Last.fm账号的情况下将抓取记录到Last.fm。Rescrobbled为此提供了一个简单的解决方案。

安装

您可以从这里下载预构建的二进制文件。可以将二进制文件放置在任何您喜欢的位置。

Rescrobbled在crates.io上有提供

cargo install rescrobbled

或者您可以使用以下命令从源代码安装:cargo install --path . 从crate根目录。

还有由brycied00d提供的AUR软件包,它将始终从这个存储库构建最新的Rescrobbled版本。

配置

Rescrobbled期望在~/.config/rescrobbled/config.toml中有一个配置文件,其格式如下

lastfm-key = "Last.fm API key"
lastfm-secret = "Last.fm API secret"
min-play-time = 0
player-whitelist = [ "Player MPRIS identity or bus name" ]
filter-script = "path/to/script"

[[listenbrainz]]
url = "Custom API URL"
token = "User token"

所有设置都是可选的,尽管没有Last.fm或ListenBrainz凭据,Rescrobbled并不会非常有用。:-)

如果配置文件不存在,当您第一次运行Rescrobbled时,它会为您生成一个示例配置。

lastfm-keylastfm-secret

要使用Rescrobbled与Last.fm一起使用,您需要一个Last.fm API密钥和密钥。这些可以从这里获得。

min-play-time

在抓取歌曲之前,所需的最短播放时间(秒)。

默认情况下,曲目提交会遵循Last.fm推荐的操作行为:歌曲只有在播放了至少一半的时长或4分钟,以先到者为准时,才会被抓取。使用min-play-time可以覆盖此行为。

player-whitelist

如果为空或省略,所有播放器的音乐将被scrobbled;否则,仅重新scrobbled将只监听此列表中的播放器。

可以使用类似 playerctl 的CLI应用程序来确定播放器的名称以用于白名单。要这样做,请播放一首歌并运行以下命令

playerctl --list-all

filter-script

在更新状态和提交曲目之前将运行 filter-script。它在其标准输入的连续行上接收以下属性(由 \n 分隔)

  • 艺术家;
  • 歌曲标题;
  • 专辑名称;
  • 一个或多个由逗号分隔的(,)流派

脚本应在标准输出的相应行上写入过滤后的艺术家、歌曲标题和专辑名称。这可以用于清理歌曲名称,例如删除“重新大师版”和类似后缀。如果过滤脚本没有返回任何输出,则忽略当前曲目。

可以在 filter-script-examples 目录中找到一些示例脚本。

[[listenbrainz]]

可以通过重复此选项来指定一个或多个ListenBrainz实例。每个定义至少需要一个 token。您可以将 url 设置为使用自定义API URL(例如,用于自定义ListenBrainz实例或类似Maloja的服务)。如果没有提供URL,则默认为ListenBrainz.org实例。

如果您只想使用ListenBrainz.org,则可以设置 listenbrainz-token 选项作为简写。

对于ListenBrainz.org,用户令牌可以在 这里 找到。其他服务可能不同,请参阅它们的文档以获取更多信息。

注意:由于TOML的工作方式,这些需要是配置文件的最后内容。

用法

要确保rescrobbled可以将scrobbled发送到Last.fm,您需要在终端中运行程序。这将提示您输入您的Last.fm用户名和密码,并与Last.fm进行身份验证。然后获取一个持久的会话令牌,该令牌将在后续运行中替代您的用户名/密码。会话令牌存储在 ~/.config/rescrobbled/session 中。

如果您想将rescrobbled作为守护进程运行,可以将提供的 systemd单元文件 放在 ~/.config/systemd/user/ 目录中。根据需要更改 ExecStart 以指向二进制文件的位置。然后,要使程序在启动时运行,请使用

systemctl --user enable rescrobbled.service

您可以在当前会话中运行它

systemctl --user start rescrobbled.service

项目资源

问题和拉取请求非常受欢迎!开发发生在 development 分支上,因此请针对该分支创建拉取请求。所有贡献都将根据GPLv3许可。

许可

GPL-3.0,请参阅 LICENSE

依赖项

~9–20MB
~297K SLoC