如何用Python修改MP3等音频元数据 移除下载站点自带的标题标记
问题原因
你使用的tinytag是只读的音频元数据读取库,本身不支持元数据修改操作,因此只能读取打印无法完成修改需求。
解决方案
推荐使用mutagen库,它支持几乎所有常见音频格式的元数据读写操作,完全覆盖你用到的mp3、m4a、flac、alac格式。
第一步:安装依赖
pip install mutagen
第二步:修改后的完整代码
import os from mutagen import File from mutagen import MutagenError path = "你的音频文件根目录路径" # 替换为你自己的实际目录 for root, dirs, files in os.walk(path): for name in files: if not name.endswith((".mp3",".m4a",".flac",".alac")): continue file_path = os.path.join(root, name) try: # 读取音频文件,easy模式可简化元数据读写逻辑 audio = File(file_path, easy=True) if audio is None: print(f"无法识别的文件:{file_path}") continue # 读取原标题,兼容无标题元数据的情况 original_title = audio.get("title", [""])[0] if not original_title: print(f"文件无标题元数据:{file_path}") continue # 移除标题中的yt5s.com相关内容,可根据实际情况补充替换规则 cleaned_title = original_title.replace("yt5s.com", "").replace("YT5S.COM", "")\ .replace("- ", "- ").strip().strip("-").strip() # 如需处理带括号的前缀,可补充下面的规则 # cleaned_title = cleaned_title.replace("[yt5s.com]", "").strip() # 写回修改后的标题 audio["title"] = cleaned_title audio.save() print(f"处理完成:{original_title} -> {cleaned_title}") except MutagenError as e: print(f"处理文件出错 {file_path}:{str(e)}")
补充说明
- 代码中使用
os.path.join拼接路径,兼容Windows、Mac、Linux系统,避免硬编码路径分隔符的兼容性问题 - 你可以根据自己实际遇到的标题格式,自行添加更多
replace规则处理其他多余字符 - 如果需要同时修改艺术家、专辑等其他元数据,和修改title的逻辑一致,直接给
audio["artist"]/audio["album"]等字段赋值后保存即可
内容的提问来源于stack exchange,提问作者czromXL
相关产品推荐
相关产品推荐

