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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:24:30