e24966935efe714835c1f766036cb155b3c0630b
问题:输入 'dir/*.ncm>../.ogg' 时,所有文件输出到同一路径 '../.ogg', 覆盖互相,导致 17 个文件都写入同一个空白路径。 根因:_parse_gt_output 将包含路径分隔符的输出规格 '../.ogg' 直接当作 完整文件路径处理,未识别出 '..' 是目录、'.ogg' 是格式扩展名。 修复:当输出规格包含路径分隔符时,检查分隔符后的部分: - 若为 '.ext' 格式(如 '.ogg' '._mp3')→ 视为 目录+格式,为每个输入文件 生成独立输出路径 <dir>/<filename>.<ext> - 若为裸格式名(如 'ogg') → 同样视为目录+格式 - 若为普通文件名(如 'yy.mp3') → 保持原有字面路径行为 - 若仅目录(如 '/tmp/') → 使用原文件名 + mp3 扩展名 提交哈希:
vipsong - 酷狗/网易云音乐加密格式转码工具
CLI 工具,将酷狗加密格式 (.kgm/.kgma/.vpr) 和网易云加密格式 (.ncm) 解密转码为常见音频格式。
安装依赖
pip install -r requirements.txt
确保系统已安装 FFmpeg(用于格式转换)。
酷狗密钥
首次使用前,需获取酷狗密钥文件 kugou_key.xz:
curl -o kugou_key.xz https://raw.githubusercontent.com/HRuiCcc/music-geshizhuanhuan/master/assets/kugou_key.xz
使用方法
命令行模式
python vipsong.py .ncm python vipsong.py ./music/song.kgm python vipsong.py .ncm -f flac -d python vipsong.py song.ncm -d python vipsong.py ./downloads/.ncm ./music/.kgm
交互模式
python vipsong.py
vipsong> *.ncm # 转换当前目录全部 ncm 文件 vipsong> ./xx/xx/xx.kgm # 转换指定 kgm 文件 vipsong> song.ncm -d # 转码后删除原 ncm 文件 vipsong> /get # 查看转码统计 vipsong> /exit # 退出
命令说明
| 命令/参数 | 说明 |
|---|---|
| *.ncm | 转换当前目录全部 ncm 文件 |
| ./xx/xx/xx.kgm | 转换指定路径的文件 |
| -f <格式> | 指定输出格式:mp3/flac/wav/ogg/m4a/original(默认 mp3) |
| -d | 转码成功后删除原加密文件 |
| /exit | 退出交互模式 |
| /get | 显示转码统计(成功数、失败数、文件列表) |
支持格式
| 输入格式 | 说明 | 输出格式 |
|---|---|---|
| .ncm | 网易云音乐加密格式 | mp3/flac/wav/ogg/m4a |
| .kgm/.kgma/.vpr | 酷狗音乐加密格式 (v3/v4) | mp3/flac/wav/ogg/m4a |
注意
- 转换后保留原始 ID3 标签(歌名、艺术家、专辑、封面)
- KGM 格式需要 kugou_key.xz 密钥文件(存放在项目根目录)
- 仅支持 KGM v3/v4,v5 需要客户端密钥暂不支持
Languages
Python
76.3%
HTML
23.7%