当前位置:  开发笔记 > 编程语言 > 正文

抽象id3标签,m4a标签,flac标签之间的转换

如何解决《抽象id3标签,m4a标签,flac标签之间的转换》经验,为你挑选了1个好方法。

我正在寻找python或bash中的资源,这将使其易于使用,例如,mp3文件X和m4a文件Y并说"将X的标签复制到Y".

Python的"mutagen"模块通常适用于标记标记,但是没有"艺术家字段"的抽象概念跨越不同类型的标记; 我想要一个处理所有繁琐位的库,并知道fieldname等价.对于并非所有标签系统都可以表达的东西,我可以将信息丢失或最佳猜测.

(使用案例:我将无损文件编码为mp3,然后使用mp3进行收听.每个月左右,我希望能够使用我对mp3进行的任何标记更改来更新'master'无损文件.我我厌倦了根据格式之间的实施差异来纠缠我的脚趾.)



1> Jeremy Cantr..:

我需要这个确切的东西,我也很快意识到诱变剂不是一个足够远的抽象来做这种事情.幸运的是,mutagen的作者需要它的媒体播放器QuodLibet.

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

如果你想查看源代码,这里有一个指向最新tarball的链接.该包实际上是一组三个命令行脚本和一个用于与QL连接的模块.如果你想安装整个东西,你可以使用:

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)

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有