如何在Python中读取与修改.m4a音乐文件的评分(Popularity Meter星级)
如何在Python中读取与修改.m4a音乐文件的评分(Popularity Meter星级)
刚好帮你解决这个问题,我来详细说明一下:
一、.m4a文件中评分对应的正确标签名
.m4a属于MP4容器格式,它的评分(也就是Windows资源管理器里显示的星级)对应的标准标签是rtng。这个标签存储的是0-100之间的整数值,和星级的对应关系是:
- 0 → 0星
- 20 → 1星
- 40 → 2星
- 60 → 3星
- 80 → 4星
- 100 → 5星
你之前尝试的POPM是MP3文件的专属评分标签,在.m4a里并不适用,这就是之前操作没成功的核心原因。
二、使用Python(mutagen库)读取和修改评分的步骤
首先确保你已经安装了mutagen库,如果没有的话先执行:
pip install mutagen
1. 读取评分
以下代码可以读取.m4a文件的评分并转换为直观的星级:
from mutagen.mp4 import MP4 # 替换为你的.m4a文件路径 file_path = "your_music_file.m4a" # 打开音频文件 audio = MP4(file_path) # 检查是否存在评分标签 if 'rtng' in audio.tags: # rtng标签存储的是整数列表,取第一个元素即可 rating_value = audio.tags['rtng'][0] # 转换为星级(0-5星) star_rating = (rating_value // 20) if rating_value > 0 else 0 print(f"当前文件的评分是:{star_rating}星(原始数值:{rating_value})") else: print("该文件尚未设置任何评分")
2. 修改评分
下面的函数可以帮你快速设置指定星级,直接调用即可:
from mutagen.mp4 import MP4 def set_m4a_star_rating(file_path, star_rating): # 验证输入的星级是否合法 if not isinstance(star_rating, int) or star_rating < 0 or star_rating > 5: raise ValueError("请输入0-5之间的整数作为星级") # 把星级转换为rtng标签对应的数值 rating_value = star_rating * 20 # 打开文件并修改标签 audio = MP4(file_path) audio.tags['rtng'] = [rating_value] # 保存修改 audio.save() print(f"已成功将文件评分设置为{star_rating}星") # 使用示例:把文件设置为5星 set_m4a_star_rating("your_music_file.m4a", 5)
注意事项
- 修改后一定要执行
audio.save(),否则修改不会生效; rtng标签的值是列表类型,不能直接赋值单个整数,必须用[rating_value]这样的格式;- 修改后在Windows资源管理器里可能需要按F5刷新一下,才能看到更新后的星级。
备注:内容来源于stack exchange,提问作者P.Los
相关产品推荐
相关产品推荐

