ypshidifu
|
8a281f584c
|
Fix: > 重定向相对路径应相对于输入文件目录解析
问题:用户从 C:\Users\ypshidifu 运行,执行
D:\CloudMusic\VipSongsDownload\*.ncm>../1.wav
输出显示成功,但 D:\CloudMusic 目录空空如已,文件消失。
根因:_parse_gt_output 将相对路径解析为相对于 cwd 而非输入文件目录。
cwd is C:\Users\ypshidifu,导致 ../1.wav 解析为 C:\Users\1.wav。
修复:相对路径在 _parse_gt_output 结尾处相对于输入文件目录 (p.parent) 解析。
|
2026-09-17 15:16:38 +08:00 |
|
ypshidifu
|
e24966935e
|
Fix: > 重定向目录+格式语法解析错误
问题:输入 'dir/*.ncm>../.ogg' 时,所有文件输出到同一路径 '../.ogg',
覆盖互相,导致 17 个文件都写入同一个空白路径。
根因:_parse_gt_output 将包含路径分隔符的输出规格 '../.ogg' 直接当作
完整文件路径处理,未识别出 '..' 是目录、'.ogg' 是格式扩展名。
修复:当输出规格包含路径分隔符时,检查分隔符后的部分:
- 若为 '.ext' 格式(如 '.ogg' '._mp3')→ 视为 目录+格式,为每个输入文件
生成独立输出路径 <dir>/<filename>.<ext>
- 若为裸格式名(如 'ogg') → 同样视为目录+格式
- 若为普通文件名(如 'yy.mp3') → 保持原有字面路径行为
- 若仅目录(如 '/tmp/') → 使用原文件名 + mp3 扩展名
提交哈希:
|
2026-09-17 15:07:51 +08:00 |
|
ypshidifu
|
110eef3d3c
|
Round 4: 修复ffmpeg空格式错误 + 添加防御性校验
- 添加 _normalize_format() 函数,规范化格式字符串,防止空/无效格式
- 修复 _parse_gt_output 空输出规格 bug(如 song.ncm> 会导致 ValueError)
- 在 _convert_audio 中添加 src_fmt/dst_fmt 空值保护,确保 never empty
- 在 convert_file 中添加 out_fmt 空值保护
- 在 _process_patterns 中添加 > 重定向空输出警告 + 回退到全局格式
- 将 -f 参数解析改为使用 _normalize_format(argv + 交互模式)
- 添加 VIPSONG_DEBUG 环境变量支持,输出 container/out_fmt/src_fmt/dst_fmt 诊断日志
根因:out_fmt 为空字符串时,_FORMAT_MAP.get 返回空字符串,
导致 audio.export(format="") -> ffmpeg -f '' -> "is not known" 错误。
|
2026-09-17 14:57:00 +08:00 |
|
ypshidifu
|
e7656911e8
|
修复完整路径输入与>重定向语法,修正int.from_bytes字节序参数类型
|
2026-09-17 13:48:40 +08:00 |
|
ypshidifu
|
3af7501b47
|
修复 vipsong.py 多处错误
1. 修复 Line 277 语法错误:output_path")" 多余引号导致的 SyntaxError
2. 添加缺失的 META_KEY 常量(NCM 元数据 AES 密钥,16 字节)
3. 添加缺失的 KUGOU_KEY_PATH 常量(指向 kugou_key.xz)
4. 添加缺失的 stats 和 kgm_decoder 模块级初始化
5. 添加缺失的 import io(用于 _convert_audio 的 BytesIO)
6. 添加缺失的 _sniff_container 函数(音频容器魔术字节检测)
7. 添加缺失的 _extension_for 函数(格式到扩展名映射)
8. 添加缺失的 _convert_audio 函数(原始音频转码)
9. 修复 print("\n") 为 print()(恢复更清洁的输出格式)
|
2026-09-17 13:22:49 +08:00 |
|
ypshidifu
|
430e7156b8
|
初始提交:vipsong 音乐加密格式转码工具
|
2026-09-17 12:58:10 +08:00 |
|