歌曲批量整理脚本,为构建 Navidrome 音乐库而生。
注意:脚本对音乐标签的支持并不完善,因此请在乐库整理的早期步骤运行脚本,之后再通过专业软件进行处理。
在运行脚本前请先用少量歌曲测试一下,本人不对您的歌曲文件的损失负责!
- 安装 nodejs
- 安装 ffmpeg 并将
bin
目录配置到环境变量Path
中 - 执行命令
npm install -g pnpm
安装pnpm
- 执行命令
git clone https://github.com/gitbobobo/one_al_art.git
下载源码 - 执行命令
pnpm install
安装依赖项 - 修改
config.js
中的配置项 - 参照
package.json
的scripts
列表中的命令,通过pnpm <command>
执行即可
执行命令:pnpm convert
处理逻辑:
- 无损音乐转为
.flac
- 有损音乐转为
.mp3
执行命令:pnpm one
处理逻辑:
首先收集到所有歌曲数据,按专辑分类。
如果某个专辑只有一个艺术家,不做处理。
如果某个专辑有艺术家参与了 70% 以上的歌曲,则将参与比例最高的艺术家设置为专辑艺术家,若有两个相同参与比例的艺术家,则将第一个艺术家设置为专辑艺术家,其他情况则根据艺术家名字设置为 群星、华语群星、日韩群星、欧美群星。
最终达成的效果是一个专辑可以有多个艺术家,但只有一个专辑艺术家。
执行命令:pnpm tree
Windows 系统下输出目录若出现无法删除的文件,请执行命令:
pnpm clear
清空输出文件夹。
处理逻辑:
按照 专辑艺术家 - 专辑 - 歌曲 的结构构建目录结构。
排除标题中包含(伴奏)的歌曲文件。
排除非音频文件。
执行命令:pnpm cue
处理逻辑:
Navidrome 对整柜文件的支持较为一般,因此需要在导入音乐库前执行分轨操作。
目前此脚本只会列出可能包含整轨文件的文件夹,判断逻辑也有待优化。
执行命令:pnpm short
处理逻辑:
Windows 下路径名称过长可能导致某些软件无法识别,因此批量将音乐文件夹下的目录按序号递增命名。
注意:执行此脚本前请先将音乐文件的标签处理好,不然后续处理起来可能会有困难。