Domanda

Per il mio media server, sto cercando modi per trasferire i tag dai miei file FLAC a MP3.

In uno script bash, posso estrarre tag usando Metaflac ai vari locali, ma quando tag MP3 con Id3v2, mi sembra di perdere caratteri nazionali (immagino che debba essere Unicode?)

Inoltre, devo essere in grado di impostare tag di guadagno replay e arte dell'album (tutti presenti in FLAC).

Sto cercando una soluzione scritta per correre incustodito.

È stato utile?

Soluzione

Prova questo strumento Eyed3. Supporta l'incorporamento dell'arte dell'album, codifica di testo in latin1, UTF8, UTF16-BE e UTF16-LE. Tuttavia, il guadagno del replay non è supportato. Per quanto ho capito, non è ampiamente supportato.

Altri suggerimenti

Se sei interessato a una soluzione Python, la Biblioteca Mutagen sembra davvero buona.

Potrebbe essere facile come:

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()

Ho trovato questa soluzione per la copia dei tag MP3 ID3 in file FLAC.

La soluzione di Victor mi ha mostrato la strada. Potrebbe fallire, tuttavia, se copia i tag in un file che hai appena convertito, ad esempio, da FLAC a MP3. Cioè, fallirà se il file in cui si sta copiando i tag non ha già alcun tag.

Quindi potrebbe essere necessario innescare prima il file di destinazione, dandogli i mezzi per avere tag.

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
    # http://stackoverflow.com/questions/8873364/linux-script-to-transfer-id3-tags-from-flac-to-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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top