Я борюсь с чтением/записью тега комментариев mp3 в Python. Частично я не могу прочитать ожидаемые значения комментариев. Или при настройке новых комментариев создается впечатление, что комментарий не сохраняется в мп3-файл.
например с Eyed3 я попробовал:
mp3 = eyed3.load(filename)
comments = mp3.tag.comments
mp3.tag.comments.set("comment set with eye3d")
mp3.tag.save()
Впоследствии я не смог увидеть комментарий при проверке в VLC.






Во-первых, я узнал, что mp3-файл может содержать несколько комментариев и для каждого комментария определен язык. Многие инструменты этого не показывают и ненадежны. Я нашел исполняемый файл EyeD3 очень полезным:
$ eyeD3 ./Frank\ Sinatra\ -\ My\ Way.mp3
/home/Frank Sinatra - My Way.mp3 [ 4.20 MB ]
--------------------------------------------------------------------------------
Time: 02:48 MPEG1, Layer III [ ~209 kb/s @ 48000 Hz - Stereo ]
--------------------------------------------------------------------------------
ID3 v2.4:
title: My Way
artist: Frank Sinatra
album: My Way
track:
Publisher/label:
Comment: [Description: ] [Lang: XXX]
That's a comment entered in VLC
UserTextFrame: [Description: TRACKTOTAL]
--------------------------------------------------------------------------------
Потом я понял, что нужно следить за языком комментариев при чтении или изменении комментариев. Библиотека Eyed3 по умолчанию использует язык «eng». Вы можете передать параметр языка при настройке комментария, как показано ниже. Но это должно быть число, поэтому мне это не пригодилось.
mp3.tag.comments.set("comment set with eye3d","",b'1')
Мутаген библиотеки не знает тег комментария «из коробки», но вы можете легко зарегистрировать его, как объясняет Трэвис Кардвелл в своем блоге. Там вы можете указать значение языка в качестве параметра для Register_tag_comment. Вы можете передавать такие значения, как «eng» или «XXX». Это помогло мне.
register_tag_comment("XXX")
try:
tag = EasyID3(entry.path)
except:
tag = mutagen.File(path, easy=True)
tag.add_tags()
comment = tag['comment']
tag['comment'] = ["comment set with mutagen"]
tag.save()
Кстати, я заметил, что VLC использует язык «XXX» при сохранении нового комментария. Однако это также показывает, например. 'eng' комментарии и можете их менять.