31个版本
0.5.0 | 2024年8月12日 |
---|---|
0.4.1 | 2024年7月8日 |
0.4.0 | 2024年6月18日 |
0.3.10 | 2024年2月9日 |
0.2.2 | 2021年7月21日 |
#178 在 音频
每月 133 次下载
445KB
1.5K SLoC
Blissify - 分析MPD库并创建智能播放列表
Blissify是一个程序,用于从您的MPD曲目库创建听起来相似的播放列表,类似于Spotify电台。
Blissify首先需要分析您的音乐库,即计算并存储一系列从您的歌曲中提取的特征,包括节奏、音色、响度等。
之后,它就可以创建播放列表了:播放一首歌作为起点,运行blissify playlist 30
,就这样!您就得到了一个包含30首听起来像第一首歌曲的播放列表。
注意:您需要安装MPD才能使用blissify。否则,您可能希望为使用的音频播放器实现bliss-rs支持。
安装/使用
安装它,您需要clang、pkg-config和ffmpeg库(包括开发头文件),以及一个可工作的Rust安装
基于Debian的系统
apt install -y clang libavcodec-dev libavformat-dev libavutil-dev libavfilter-dev libavdevice-dev libsqlite3-dev pkg-config
在Archlinux上
pacman -S base-devel clang ffmpeg
最后,使用cargo install blissify
来安装它。
注意:如果您正在使用树莓派及其相应的ffmpeg(即ffmpeg -version|grep rpi
返回某些内容),请使用cargo install --features=rpi blissify
代替。
以下所有命令都读取 MPD_HOST
和 MPD_PORT
环境变量,并尝试通过该变量连接到 MPD。如果您想连接到除了默认的 127.0.0.1:6600
(默认端口)以外的其他地址,请修改它。它应该与MPD 文档完全兼容。
分析库
要初始化和分析您的 MPD 库,请使用
$ blissify init /path/to/mpd/root
请注意,这可能需要几分钟(对于包含超过 20k 首歌曲的大型库,可能需要几小时)才能完成。
您可以通过运行以下命令进一步更新您的库
$ blissify update
如果发生错误并且数据库进入不稳定状态,您可以使用以下命令
$ blissify rescan
删除现有数据库并重新扫描所有文件。
如果您想查看分析是否成功,或者只是想查看数据库中的当前文件,可以使用以下命令
$ blissify list-db
创建播放列表
简单版本
$ blissify playlist 100
这将添加 100 首与当前正在播放的歌曲相似的曲目,从最相似的开始。这也会删除队列中的其他所有歌曲,只留下智能播放列表。
如果您希望在当前播放的歌曲后添加歌曲但保持当前队列,可以使用 --keep-current-queue
标志,如下所示
$ blissify playlist 100 --keep-current-queue
更改距离度量
要使用不同于默认的(欧几里得距离)的距离度量来创建播放列表,运行
$ blissify playlist --distance <distance_name> 30
distance_name
目前可以是 euclidean
或 cosine
。如果您生成的播放列表不满意,请不要犹豫去实验这个参数!
创建“种子”播放列表
您可以从与第一首歌曲最相似的歌曲开始创建播放列表,而不是从最相似到最不相似(默认),创建一个播放列表,将第一首歌曲最接近的歌曲放入队列,然后是第二首歌曲最接近的歌曲,等等,从而在歌曲之间创建“路径”。
要尝试一下(构建播放列表可能需要更多时间)
$ blissify playlist --seed-song 30
创建专辑播放列表
您还可以创建一个播放列表,其中包含与您正在收听的当前专辑相似的音乐专辑(更具体地说,是您正在播放的歌曲的专辑,无论您是否已将整个专辑加入队列)。
要尝试一下
$ blissify playlist --album-playlist 30
如果您希望在当前播放的专辑后添加专辑但保持当前队列,可以使用 --keep-current-queue
标志,如下所示
$ blissify playlist --album-playlist 100 --keep-current-queue
创建交互式播放列表
交互式播放列表从一首歌曲开始,并允许您从显示的 3 首最接近的歌曲中选择下一首歌曲播放(可以手动设置显示的歌曲数量)
$ blissify interactive-playlist --number-choices 5
默认情况下,它会截断当前播放列表,只保留当前播放的歌曲。如果您只想从最后一首歌曲开始并继续播放,请使用 --continue
$ blissify interactive-playlist --number-choices 5 --continue
模拟运行模式
如果您想查看 blissify 会创建哪些播放列表而不更改队列,或者您希望将 blissify 的输出连接到其他地方,请使用 --dry-run
选项,如下所示
$ blissify playlist 100 --dry-run
详细信息
如果您对底层发生的事情感兴趣,或者想要为其他音频播放器创建类似的插件,请参阅bliss 的文档。
故障排除
如果您正在为非 Linux 操作系统编译 blissify-rs,您可能会遇到一个错误,提示您使用 bindgen 功能。
error: failed to run custom build command for `bliss-audio-aubio-sys v0.2.2`
Caused by:
process didn't exit successfully: `path/release/build/bliss-audio-aubio-sys-fb4d0ec74b3698ed/build-script-build` (exit status: 101)
--- stderr
thread 'main' panicked at .cargo/registry/src/index.crates.io-6f17d22bba15001f/bliss-audio-aubio-sys-0.2.2/build.rs:34:13:
No prebuilt bindings. Try use `bindgen` feature.
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile `blissify v0.4.1`, intermediate artifacts can be found at `/var/folders/pb/g43q604n6v71kwp_89ccy6840000gn/T/cargo-installoyKiUv`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
要修复此错误并成功构建 blissify-rs,请使用以下命令:cargo install blissify --features=default,bliss-audio/update-aubio-bindings
。
依赖关系
~50MB
~875K SLoC