alibek
Мне нужно получить отладочный вывод (например в JSON) всех имеющихся тэгов id3 из файла.
Не подскажете, как это сделать?
Тэги считываются из eyed3.id3.tag, но это свойство не является перечисляемым и я не могу использовать for.
Так ты составь сначала словарь, а потом его переведи в JSON.
#!/usr/bin/env python3
import eyed3
import json
mp3file = eyed3.load('file.mp3')
dct = {}
for frame in mp3file.tag.frameiter():
dct[frame.id.decode('latin1')] = frame.text
out = json.dumps(dct)
print(out)
[guest@localhost mp3tags]$ ./mp3tags.py
{"COMM": "https://vk.com/the.zeus", "TALB": "https://vk.com/the.zeus", "TIT2": "The Power (Jump & Hide Remix)", "TPE1": "Snap"}
[guest@localhost mp3tags]$
Ничего вумного, я просто использовал функцию help() и dir()
>>> import eyed3
>>>
>>> mp3file = eyed3.load('file.mp3')
>>>
>>> help(mp3file)
>>>
>>> mp3file.tag
<eyed3.id3.tag.Tag object at 0x7f45adcbdfd0>
>>>
>>> help(mp3file.tag)
>>>
>>> mp3file.tag.frameiter()
<generator object Tag.frameiter at 0x7f45aa89d9e8>
>>>
>>> frame = next(_)
>>>
>>> frame
<eyed3.id3.frames.CommentFrame object at 0x7f45aa839080>
>>>
>>> help(frame)
>>>
>>> frame.header
<eyed3.id3.headers.FrameHeader object at 0x7f45aa8390f0>
>>>
>>> help(frame.header)
>>>
>>> dir(frame.header)
['COMPRESSED', 'DATA_LEN', 'ENCRYPTED', 'FILE_ALTER', 'GROUPED', 'READ_ONLY', 'TAG_ALTER', 'UNSYNC', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_flags', '_isValidFrameId', '_parse2_2', '_setBitMask', '_version', 'compressed', 'copyFlags', 'data_length_indicator', 'data_size', 'encrypted', 'file_alter', 'grouped', 'id', 'major_version', 'minor_version', 'parse', 'read_only', 'render', 'size', 'tag_alter', 'unsync', 'version']
>>>
>>> frame.header.id
b'COMM'
>>>
>>> frame.id
b'COMM'
>>>