好不容易把自己压箱底的 MP3 传到了网易云音乐云盘,打算在手机上随时听歌怀旧,结果点开一看:歌词呢?我那辛辛苦苦整理的大段歌词怎么全是空白?

这种感觉就像是精心准备了一顿大餐,结果发现没给餐具。别急着骂网易云,这其实是因为网易云音乐有个“怪癖”:它不爱走寻常路。标准的 MP3 歌词存储方式(USLT 帧)它视而不见,非要读取一个叫 TXXX:LYRICS 的自定义字段。

今天 taishanhuo.com 就带大家用一个简单的 Python 脚本,暴力解决这个“歌词失踪案”。


为什么你的歌词在网易云里“装死”?

简单来说,MP3 文件的标签(ID3 协议)就像一个档案袋。

  • 国际标准: 大家都把歌词放在一个叫 USLT(Unsynced Lyrics)的隔层里。

  • 网易云云盘: 偏不看 USLT,它只盯着一个叫 TXXX(自定义文本)且描述为 LYRICS 的小纸条。

想让歌词显示?咱们得把档案袋拆了,把 USLT 里的内容掏出来,塞进 TXXX:LYRICS 里。这就是咱们今天要干的“搬运工”活计。


准备工作:搭好“手术台”

在动刀之前,我们需要准备两样东西:

  1. Python 环境: 去官网下个 3.9 以上的版本就行。安装时千万记得勾选 “Add Python to PATH”,不然回头电脑不认识你写的命令。

  2. 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🎉 全部处理完成!快去上传云盘试试吧。")

实操步骤:别在最后一步别翻车

  1. 解决中文乱码: 在 Windows 的命令行里,输入 chcp 65001 然后回车。这一步是告诉电脑:“咱现在说的是 UTF-8,别把中文路径搞晕了。”

  2. 运行脚本: 输入 python geci.py

  3. 输入路径: 把你装满 MP3 的文件夹拖进去,按回车。


常见坑点吐槽(避坑指南)

“为什么我跑完脚本,MP3Tag 里看着没变?” 兄弟,别急着怀疑人生。先把 MP3Tag 关了重新打开!那软件有缓存,不刷新它是不会告诉你真相的。

“依然不显示歌词?” 检查三件事:

  1. 字段名是不是全大写 LYRICS

  2. 原来的 USLT 删干净了吗?(脚本里已经帮你删了)

  3. 是否保存成了 ID3v2.3?网易云对 v2.4 的兼容性有时候像玄学,用 v2.3 最稳。