使用 Python3 和 Mutagen 的 iTunes MP4 标签/元数据

Pas*_*rat 3 python mp4 itunes mutagen python-3.x

我目前正在使用 Python 的 Mutagen 模块来为 iTunes 准备视频文件的 MP4 标签。它工作得很好,但我错过了一个非常重要的标签,它称为“stik”,代表 iTunes 媒体类型。

这是我当前的代码:

mp4_video_tags = MP4(mp4_file)

mp4_video_tags['\xa9nam'] = 'Video Name'
mp4_video_tags['\xa9alb'] = 'DVD-Name'
mp4_video_tags['\xa9gen'] = 'Video-Training'
mp4_video_tags['\xa9day'] = '2015'
mp4_video_tags['\xa9ART'] = 'Company'
mp4_video_tags['aART'] = 'Company'
mp4_video_tags['\xa9wrt'] = 'Company'
mp4_video_tags['cprt'] = 'Copyright (c) Company'
mp4_video_tags['desc'] = 'description'
mp4_video_tags['tvsh'] = 'DVD-Name'
mp4_video_tags['trkn'] = [(1, 18)]
mp4_video_tags['disk'] = [(1, 1)]
mp4_video_tags['stik'] = 10

mp4_video_tags.save()
Run Code Online (Sandbox Code Playgroud)

该代码工作得很好,但在“mp4_video_tags['stik'] = 10”时崩溃,因为该标签的值不能是整数。但根据此列表:https://code.google.com/p/mp4v2/wiki/iTunesMetadata#Media_Type_%28stik%29

对于电视节目,它必须是值为 10 的整数。

我注意到 Mutagen 没有在其标签列表/文档中显示“stik”标签,也许默认情况下不支持:https ://mutagen.readthedocs.org/en/latest/api/mp4.html

谁能解释一下如何将带有 Mutagen 的电视节目的 MP4 标签“stik”设置为 10?

小智 5

我知道我来晚了一点,但我有一份礼物:

mp4_tags['stik'] = str(unichr(10))
Run Code Online (Sandbox Code Playgroud)

我还没有尝试过,但我认为你也可以使用mp4_tags['stik'] = '\n'换行符由二进制数10表示。

问题是 iTunes 将该字段读取为二进制数,您可以或多或少地保存您想要的任何内容。例如,我尝试设置mp4_tags['tvsn'] = '2'并将文件加载到 iTunes 中,它显示为第 50 季,如果您查看 ASCII 表,这就是字符 2 的表示方式。

似乎是库中的一个错误。