Редактировать метаданные MP3 на файловом объекте в Python? - PullRequest
3 голосов
/ 08 октября 2009

Мы генерируем файлы MP3 на лету в Python, и нам нужно редактировать заголовки ID3 в памяти, используя файловый объект.

Все библиотеки ID3 на PyPI отображаются , требуя, чтобы вы указали путь файловой системы в виде строки. Я нахожу это довольно расстраивающим!

Запись нашего сгенерированного MP3 на диск (или рамдиск) только для добавления тегов ID3 ​​недопустима по ряду причин, особенно из-за производительности.

Учитывая множество библиотек ID3 , существует ли библиотека ID3, которая просто работает с файловыми объектами?

Ответы [ 4 ]

2 голосов
/ 14 марта 2017

Для тех, кто найдет этот ответ в далеком будущем, mutagen отлично сработал для меня, и конструктор для одного из его объектов MP3 берет либо путь к файлу файлоподобный объект (документы называют его «filething»).

С https://mutagen.readthedocs.io/en/latest/user/filelike.html:

Первый аргумент, передаваемый FileType или Metadata, может быть либо именем файла, либо файловым объектом, таким как StringIO (BytesIO в Python 3), и mutagen определит, что делать.

MP3("myfile.mp3")
MP3(myfileobj)
0 голосов
/ 08 октября 2009

Помогает ли StringIO? http://docs.python.org/library/stringio.html

0 голосов
/ 09 октября 2009

Что ж, похоже, ответ таков: такого животного не существует. Преимущества программирования для интерфейса, по-видимому, потеряны для хакеров фреймов Python MP3. Мы решили проблему, изменив существующую библиотеку.

0 голосов
/ 08 октября 2009

Теги AFAIR добавляются в конец файла. Возможно, вы захотите изучить формат и создать простую библиотеку самостоятельно, что не должно быть очень сложным.

Кроме того, вы можете хранить их временно в файловой системе, такой как tmpfs (ramdisk).

...