告别“歌词失踪案”:用 Python 一键修复网易云云盘 MP3 歌词显示
好不容易把自己压箱底的 MP3 传到了网易云音乐云盘,打算在手机上随时听歌怀旧,结果点开一看:歌词呢?我那辛辛苦苦整理的大段歌词怎么全是空白? 这种感觉就像是精心准备了一顿大餐,结果发现没给餐具。别急着骂网易云,这其实是因为网易云音乐有个“怪癖”:它不爱走寻常路。标准的 MP3 歌词存储方式(USLT 帧)它视而不见,非要读取一个叫 TXXX:LYRICS 的自定义字段。 今天 taishanhuo.com 就带大家用一个简单的 Python 脚本,暴力解决这个“歌词失踪案”。 为什么你的歌词在网易云里“装死”? 简单来说,MP3 文件的标签(ID3 协议)就像一个档案袋。 国际标准: 大家都把歌词放在一个叫 USLT(Unsynced Lyrics)的隔层里。 网易云云盘: 偏不看 USLT,它只盯着一个叫 TXXX(自定义文本)且描述为 LYRICS 的小纸条。 想让歌词显示?咱们得把档案袋拆了,把 USLT 里的内容掏出来,塞进 TXXX:LYRICS 里。这就是咱们今天要干的“搬运工”活计。 准备工作:搭好“手术台” 在动刀之前,我们需要准备两样东西: Python 环境: 去官网下个 3.9 以上的版本就行。安装时千万记得勾选 “Add Python to PATH”,不然回头电脑不认识你写的命令。 mutagen 库: 这是处理音频标签的神器。 打开你的 CMD(命令行),输入: pip install mutagen 核心脚本:一键乾坤大挪移 新建一个文本文档,把下面这段代码粘进去,保存为 geci.py(记得后缀是 .py,不是 .txt)。 Python import os from mutagen.id3 import ID3, USLT, SYLT, TXXX def force_convert(mp3_path): try: tags = ID3(mp3_path) # 看看有没有标准歌词 uslt_frames = tags.getall("USLT") if not uslt_frames: return lyrics_text = uslt_frames[0].text # 暴力清理:把旧的、乱七八糟的标签全部抹掉 tags.delall("USLT") tags.delall("SYLT") tags.delall("TXXX") # 重新写入网易云认的格式 tags.add( TXXX( encoding=3, # 使用 UTF-8 编码,拒绝乱码 desc="LYRICS", text=lyrics_text ) ) # 强制保存为 ID3v2.3 版本,兼容性最强 tags.save(v2_version=3) print(f"✅ 已修复: {mp3_path}") except Exception as e: print(f"❌ 报错了: {mp3_path} -> {e}") def process_folder(folder): for root, dirs, files in os.walk(folder): for file in files: if file.lower().endswith(".mp3"): full_path = os.path.join(root, file) force_convert(full_path) if __name__ == "__main__": folder = input("请输入你的 MP3 文件夹路径: ").strip('"') process_folder(folder) print("\n🎉 全部处理完成!快去上传云盘试试吧。") 实操步骤:别在最后一步别翻车 解决中文乱码: 在 Windows 的命令行里,输入 chcp 65001 然后回车。这一步是告诉电脑:“咱现在说的是 UTF-8,别把中文路径搞晕了。” ...