如何使用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
相关产品推荐
相关产品推荐

