【发布时间】:2009-10-07 21:39:49
【问题描述】:
我们在 Python 中动态生成 MP3 文件,并且需要使用类似文件的对象在内存中编辑 ID3 标头。
PyPI 上的所有 ID3 库 出现 要求您将文件系统路径作为字符串传递。我觉得这很令人沮丧!
将我们生成的 MP3 写入磁盘(或 ramdisk)只是为了添加 ID3 标签是不可接受的,原因有很多,尤其是性能。
鉴于大量的 ID3 库,是否有一个 ID3 库可以简单地处理类文件对象?
【问题讨论】:
我们在 Python 中动态生成 MP3 文件,并且需要使用类似文件的对象在内存中编辑 ID3 标头。
PyPI 上的所有 ID3 库 出现 要求您将文件系统路径作为字符串传递。我觉得这很令人沮丧!
将我们生成的 MP3 写入磁盘(或 ramdisk)只是为了添加 ID3 标签是不可接受的,原因有很多,尤其是性能。
鉴于大量的 ID3 库,是否有一个 ID3 库可以简单地处理类文件对象?
【问题讨论】:
对于那些在遥远的未来找到这个答案的人,mutagen 对我来说非常有效,它的 MP3 对象之一的构造函数采用 要么 文件路径 或 一个类似文件的对象(文档称它为“文件”)。
来自https://mutagen.readthedocs.io/en/latest/user/filelike.html:
传递给 FileType 或 Metadata 的第一个参数可以是文件名或类似文件的对象,例如 StringIO(Python 3 中的 BytesIO),mutagen 会确定要做什么。
MP3("myfile.mp3") MP3(myfileobj)
【讨论】:
audio 的模型并且您有一个模型实例instance,则可以执行mutagen.File(instance.audio) 并且可以按预期访问info
StringIO 有帮助吗? http://docs.python.org/library/stringio.html
【讨论】:
嗯,答案似乎是不存在这样的动物。 python MP3框架黑客显然失去了对接口进行编程的优势。我们通过修改现有库解决了这个问题。
【讨论】:
AFAIR 标记附加到文件末尾。您可能想学习格式并自己制作一个简单的库,这应该不是很困难。
此外,您可以考虑将它们临时存储在 tmpfs (ramdisk) 等文件系统上。
【讨论】: