Скрипт Linux для переноса (ID3) тегов из FLAC в MP3 - PullRequest
3 голосов
/ 16 января 2012

Для моего медиасервера я ищу способы передачи тегов из моих файлов FLAC в MP3.

В скрипте bash я могу извлечь теги, используя metaflac , в локальные переменные,но при пометке mp3 с id3v2 я, кажется, теряю национальные символы (угадайте, что это должен быть юникод?)

Также мне нужно иметь возможность устанавливать теги усиления воспроизведения и обложки альбомов (все присутствующие в FLAC).

Я ищу решение на основе сценариев для автоматического запуска.

Ответы [ 3 ]

9 голосов
/ 16 апреля 2012

Если вы заинтересованы в решении Python, библиотека мутагенов выглядит действительно хорошо.

Это может быть так просто, как:

from mutagen.flac import FLAC
from mutagen.easyid3 import EasyID3

flacfile = FLAC("flacfile.flac")
mp3file = EasyID3("mp3file.mp3")

for tag in flacfile:
    if tag in EasyID3.valid_keys.keys():
        mp3file[tag] = flacfile[tag]

mp3file.save()

Я нашел это решение для копирования mp3 тегов id3в FLAC-файлы.

5 голосов
/ 16 января 2012

Попробуйте этот инструмент eyed3 .Он поддерживает встраивание обложек альбомов, кодировку текста в латиницу 1, utf8, utf16-BE и utf16-LE.Однако усиление воспроизведения не поддерживается.Насколько я понимаю, это широко не поддерживается.

1 голос
/ 19 ноября 2016

Решение Виктора показало мне путь.Однако может произойти сбой, если копировать теги в файл, который вы только что преобразовали, например, из flac в mp3.То есть произойдет сбой, если файл, в который вы копируете теги, еще не имеет тегов.

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

from mutagen import File
from mutagen.flac import FLAC
from mutagen.easyid3 import EasyID3
from mutagen.id3 import ID3, ID3NoHeaderError

def convert_tags(f1,f2):
    # f1: full path to file copying tags from
    # f2: full path to file copying tags to
    # /7277373/skript-linux-dlya-perenosa-id3-tegov-iz-flac-v-mp3
    # http://stackoverflow.com/a/18369606/2455413
    try:
        meta = EasyID3(f2)
    except ID3NoHeaderError:
        meta = File(f2, easy=True)
        meta.add_tags()
        meta.save()
    from_f = FLAC(f1)
    to_f = EasyID3(f2)
    for tag in from_f:
        if tag in EasyID3.valid_keys.keys(): to_f[tag] = from_f[tag]
    to_f.save()
    return
...