gpt4 book ai didi

python - 抽象id3标签、m4a标签、flac标签之间的转换

转载 作者:太空狗 更新时间:2023-10-29 17:18:46 26 4
gpt4 key购买 nike

我正在寻找 python 或 bash 中的资源,例如,mp3 文件 X 和 m4a 文件 Y 并说“将 X 的标签复制到 Y”。

Python 的“诱变剂”模块通常非常适合操作标签,但没有跨越不同类型标签的“艺术家领域”的抽象概念;我想要一个库来处理所有繁琐的位并知道字段名等价。对于并非所有标签系统都能表达的内容,我可以接受信息丢失或最佳猜测。

(用例:我将无损文件编码为 mp3,然后使用 mp3 进行收听。每个月左右,我希望能够使用我对mp3。我厌倦了在格式之间的实现差异上踩脚趾。)

最佳答案

我确实需要这个东西,而且我也很快意识到诱变剂并不是做这种事情的抽象概念。幸运的是,mutagen 的作者在他们的媒体播放器中需要它 QuodLibet .

我不得不深入研究 QuodLibet 的源代码以了解如何使用它,但一旦我理解了它,我就编写了一个名为 sequitur 的实用程序,它旨在成为一个等同于 ExFalso(QuodLibet 的标记组件)。它使用这种抽象机制并提供一些附加的抽象和功能。

如果您想查看源代码,here's a link to the latest tarball .该包实际上是一组三个命令行脚本和一个用于与 QL 接口(interface)的模块。如果你想安装整个东西,你可以使用:

easy_install QLCLI

关于 exfalso/quodlibet(以及随后的 sequitur)要记住的一件事是它们实际上正确地实现了音频元数据,这意味着所有标签都支持多个值(除非文件类型禁止它,这种情况并不多)做)。所以,做类似的事情:

print qllib.AudioFile('foo.mp3')['artist']

不会输出单个字符串,但会输出像这样的字符串列表:

[u'The First Artist', u'The Second Artist']

您可以使用它来复制标签的方式如下:

import os.path
import qllib # this is the module that comes with QLCLI

def update_tags(mp3_fn, flac_fn):
mp3 = qllib.AudioFile(mp3_fn)
flac = qllib.AudioFile(flac_fn)
# you can iterate over the tag names
# they will be the same for all file types
for tag_name in mp3:
flac[tag_name] = mp3[tag_name]
flac.write()

mp3_filenames = ['foo.mp3', 'bar.mp3', 'baz.mp3']

for mp3_fn in mp3_filenames:
flac_fn = os.path.splitext(mp3_fn)[0] + '.flac'
if os.path.getmtime(mp3_fn) != os.path.getmtime(flac_fn):
update_tags(mp3_fn, flac_fn)

关于python - 抽象id3标签、m4a标签、flac标签之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/697776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com