Open Ethan-Core2 opened 1 year ago
For MP4 the tag names are atom names and limited to 4 characters. mutagen truncates the given name.
What you really should do is use the proper atom names. You hit a bit of a lucky punch here, as titl
seems to be an atom name interpreted by exiftools. But in case of audio files to store the track title the expected atom name is actually ©nam
(yes, that's a copyright symbol as first character). Take a look at e.g. https://picard-docs.musicbrainz.org/downloads/MusicBrainz_Picard_Tag_Map.html for some common atom names as typically used.
If you want a simple way to set or read some tags with readable names have a look at mutagen's EasyMP4 class, which is similar to the EasyMP3 one. With it you could do something like this.
from mutagen.easymp4 import EasyMP4
f = EasyMP4('test.m4a')
f.tags["title"] = "foo"
f.tags["album"] = "bar"
f.save()
The you will get something like this:
% mutagen-inspect test.m4a
-- test.m4a
- MPEG-4 audio (AAC LC), 0.11 seconds, 14376 bps (audio/mp4)
©alb=bar
©nam=foo
©too=FAAC 1.24
Or maybe if you want some generic abstraction to use the same approach and names across different tagging formats have a look at the MediaFIle library, which adds a format independent wrapper API over mutagen.
Steps to reproduce:
Set
filename
to the path to a .m4a file.This will work, which can be verified with exiftool:
exiftool $filename | grep "Title"
Returns:Title : This is a title
However, if you try to display it in python, it changes
title
totitl
:Returns:
I don't think it's just a printing error, as if you try to access the property like this:
Then it doesn't work, (returns
None
) but if you changetitle
totitl
then it will work