微信扫码 , 快速开始
1
0
江湖小虾
歌单导入 应用中心安装的Navidrome支持将歌曲目录中的m3u歌单导入自动识别导入
歌单生成脚本代码
#!/bin/bash # 获取当前目录的绝对路径(解决符号链接问题) current_dir=$(pwd -P) # 遍历当前目录下的所有子文件夹 for dir in */; do # 去除路径末尾的斜杠 dir_name="${dir%/}" # 设置歌单名称(子文件夹名.m3u) playlist_name="${dir_name}.m3u" # 删除已存在的旧歌单 rm -f "$playlist_name" # 查找该子目录下的音频文件(包含子目录) find "${current_dir}/${dir_name}" -type f \( \ -iname "*.mp3" -o \ -iname "*.flac" -o \ -iname "*.wav" -o \ -iname "*.ogg" -o \ -iname "*.m4a" -o \ -iname "*.aac" -o \ -iname "*.wma" \) \ | sort --ignore-case \ >> "$playlist_name" # 转换路径为UNIX格式(可选,解决Windows兼容问题) sed -i 's/\\/\//g' "$playlist_name" # 统计歌曲数量 song_count=$(wc -l < "$playlist_name" 2>/dev/null) # 输出结果 if [ "$song_count" -gt 0 ]; then echo "✅ 已生成歌单: ${playlist_name} (${song_count}首)" echo " 示例路径: $(head -1 "$playlist_name")" else rm -f "$playlist_name" echo "⚠️ 跳过空文件夹: ${dir_name}" fi done echo "🎉 所有歌单生成完成!"
假设目录结构为:
MyMusic/ **── Artist_A/ ** **── song1.mp3 ** **── song2.flac **── Artist_B/ ** **── album.mp3 **── EmptyFolder/
将生成:
Artist_A.m3u Artist_B.m3u
特点:
-maxdepth 1
Artist_A/song1.mp3
如果需要包含子文件夹的子目录内容(即递归搜索),只需删除 -maxdepth 1 参数即可。
使用方法
将脚本命名为getplaylist_m3u.sh
将脚本放置与歌曲最上层文件夹中
如我这里为/vol3/1000/Music
运行脚本
使用ssh连接nas,获取root权限,进入/vol3/1000/Music
chmod +x getplaylist_m3u.sh ./getplaylist_m3u.sh
重启Navidrome即可
代码已编写,飞牛外链可直接下载 getplaylist_m3u.sh
您需要 登录 才可以下载或查看,没有账号?立即注册
2
24
举报
好东西呀,感谢分享
5
请问大佬,我音乐都在win server的服务器里,通过smb给飞牛的,为啥生成的都是空的播放列表啊
Mr.George.X 发表于 2025-7-12 18:10 请问大佬,我音乐都在win server的服务器里,通过smb给飞牛的,为啥生成的都是空的播放列表啊 ...
72
初出茅庐
歌单里都是空白,怎么回事,楼主说一下
本版积分规则 发表回复