You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Mutagen打印ID3标签?扩展MP3元信息获取代码

修改代码获取MP3的ID3标签信息

嘿,我来帮你搞定这个问题!你已经用mutagen成功拿到了MP3的时长和比特率,要提取ID3标签信息其实非常直接——mutagen的MP3对象自带的tags属性就是专门存储这些元数据的。不过要注意,有些MP3文件可能缺少部分标签,所以最好做一下异常处理,避免程序报错。

下面是修改后的完整代码:

import easygui
from mutagen.mp3 import MP3

# 选择MP3文件
audio = MP3(easygui.fileopenbox('选择MP3文件', '', '*.MP3'))

# 打印基础信息
print(f"时长: {audio.info.length:.2f} 秒")
print(f"比特率: {audio.info.bitrate / 1000:.0f} kbps")
print("--- ID3标签信息 ---")

# 获取并打印ID3标签,处理标签不存在的情况
try:
    # 标题(对应ID3帧TIT2)
    title = audio.tags.get('TIT2')
    print(f"标题: {title.text[0] if title else '无'}")
    
    # 艺术家(对应ID3帧TPE1)
    artist = audio.tags.get('TPE1')
    print(f"艺术家: {artist.text[0] if artist else '无'}")
    
    # 专辑(对应ID3帧TALB)
    album = audio.tags.get('TALB')
    print(f"专辑: {album.text[0] if album else '无'}")
    
    # 发行年份:兼容ID3v2.3的TYER和ID3v2.4的TDRC
    year = audio.tags.get('TYER') or audio.tags.get('TDRC')
    print(f"发行年份: {year.text[0] if year else '无'}")
    
    # 评论(对应ID3帧COMM)
    comment = audio.tags.get('COMM')
    print(f"评论: {comment.text[0] if comment else '无'}")
    
    # 流派(对应ID3帧TCON)
    genre = audio.tags.get('TCON')
    print(f"流派: {genre.text[0] if genre else '无'}")
    
except AttributeError:
    print("该MP3文件没有ID3标签信息")

代码小说明:

  • 用audio.tags.get(帧ID)来获取标签,get方法会在标签不存在时返回None,避免直接访问报错
  • 发行年份做了兼容:旧版ID3用TYER帧,新版用TDRC,所以代码里两种都尝试获取
  • 每个标签对象的text[0]是实际内容(部分标签支持多值,但日常用第一个就够)
  • 外层的try-except是为了处理完全没有ID3标签的文件,防止audio.tags为None时触发错误

这样修改后,你就能轻松获取并打印MP3的各类ID3标签信息啦!

内容的提问来源于stack exchange,提问作者Sampai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:57:56