如何使用eyed3为清空元数据后的MP3文件添加评论?
解决eyed3清空MP3元数据后添加新评论的问题
核心问题
调用tag.clear()清空所有元数据后,mp3.tag.comments会返回None,无法通过遍历现有评论的方式修改,需要使用添加新评论的专用方法。
解决方案
可以通过两种方式给清空元数据后的MP3添加评论:
方法1:使用Tag对象的add_comment快捷方法
这是最简单的实现方式,直接调用Tag内置方法添加评论:
import eyed3 FILE_PATH = "target.mp3" mp3 = eyed3.load(FILE_PATH) # 执行你的元数据处理流程 original_title = mp3.tag.title.title() # 复制原标题并转为标题格式 original_artist = mp3.tag.artist.title() mp3.tag.clear() # 重新添加格式化后的元数据 mp3.tag.title = original_title mp3.tag.artist = original_artist # 添加新评论 mp3.tag.add_comment("这是清空元数据后新增的评论") # 保存修改 mp3.tag.save()
方法2:直接操作CommentsAccessor的add方法
如果需要自定义评论的语言、描述等参数,可以直接操作comments属性(若为None则手动初始化):
import eyed3 from eyed3.id3.tag import CommentsAccessor FILE_PATH = "target.mp3" mp3 = eyed3.load(FILE_PATH) mp3.tag.clear() # 重新添加其他格式化元数据... # 初始化CommentsAccessor(当comments为None时) if mp3.tag.comments is None: mp3.tag.comments = CommentsAccessor(mp3.tag) # 添加带自定义参数的评论 mp3.tag.comments.add( text="自定义内容的评论", lang="zh", # 语言代码,中文为zh,英文为eng description="备注" # 可选的评论描述字段 ) mp3.tag.save()
原有代码失效原因
原有代码依赖遍历已存在的评论列表,但tag.clear()会将mp3.tag.comments置为None,不存在可迭代的评论集合。添加新评论必须调用add()方法,该方法会自动创建新的Comment实例并绑定到标签中。
内容的提问来源于stack exchange,提问作者Turbo Deoradhan
相关产品推荐
相关产品推荐

