Linux script para transferir (id3) etiquetas de flac a mp3
Pregunta
Para mi servidor de medios, estoy buscando formas de transferir etiquetas de mis archivos FLAC a MP3.
En un script bash, puedo extraer etiquetas usando metaflac A Vars locales, pero al etiquetar MP3 con ID3V2, parece que pierdo personajes nacionales (¿supongo que debe ser unicode?)
También necesito poder establecer etiquetas de ganancia de reproducción y la carátula del álbum (todas presentes en los FLAC).
Estoy buscando una solución con guión para ejecutar desatendidas.
Solución
Prueba esta herramienta Eyed3. Admite la integración del álbum, la codificación de texto en Latin1, UTF8, UTF16-Be y UTF16-Le. Sin embargo, la ganancia de repetición no es compatible. Por lo que entiendo, no es ampliamente compatible.
Otros consejos
Si está interesado en una solución de Python, la Biblioteca Mutagen se ve realmente bien.
Podría ser tan fácil como:
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()
Encontré esta solución para copiar etiquetas MP3 ID3 en archivos FLAC.
La solución de Victor me mostró el camino. Sin embargo, puede fallar si copia las etiquetas en un archivo que acaba de convertir, por ejemplo, de FLAC a MP3. Es decir, fallará si el archivo al que está copiando etiquetas ya no tiene etiquetas.
Por lo tanto, es posible que primero deba preparar el archivo de destino, dándole los medios para tener etiquetas.
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