L'impostazione del tag del titolo ID3 deve essere uguale al nome del file MP3


14

Qualcuno ha uno script bash che passa attraverso una libreria multimediale e imposta il tag del titolo id3 di ciascun file MP3 in modo che sia uguale al nome del file?

Sono aperto anche ad altri metodi automatizzati. Può essere un'applicazione GUI o qualsiasi altra cosa che farà automaticamente il lavoro.

Qui viene annotato un metodo EasyTag: Come rinominare il tag del titolo in blocco nei file ID3 mp3 - Sfortunatamente, non capisco i passaggi.


Puoi rispondere alla tua domanda. Elenca i passaggi che hai trovato ubuntuforums.orge cita la tua fonte. :) Questo aiuterà i futuri visitatori di Superuser, nel caso in cui il ubuntuforums.orglink non sia disponibile.
iglvzx,

3
Ecco alcuni suggerimenti: 1) Non ingombrare la tua domanda con "modifica 1", "modifica 2", ecc. Risolvi i problemi utilizzando i commenti. 2) Se trovi una soluzione, pubblicala come una risposta, come se stessi cercando di rispondere alla domanda di qualcun altro. Non inserire la risposta nella domanda . Non è qui che la gente lo cerca :) Inoltre, usa blockquotes per tutto ciò che citi da qualche altra parte (vedi la guida alla formattazione).
slhck

Ho creato uno script per taggare correttamente i file MP3 nel formato "Artist - Track.mp3" e quindi rinominare il file in "Track.mp3": gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0 utilizzandoeyed3
Zach Saucier

Risposte:


17

EasyTAG è davvero un ottimo strumento per questo problema. Ho trovato la mia risposta qui . In termini di come usarlo, il miglior riferimento risulta essere la documentazione di EasyTAG .

Apri EasyTag, vai a una cartella con i file musicali, seleziona tutti i file nella cartella o tutti i file che vuoi taggare, fai clic sul pulsante "Scansione file" (dovrai passare con il mouse su di essi per capire quale è).

Quindi, assicurati che il menu a discesa dello scanner sia impostato su "Riempi tag", quindi nel campo Riempi tag, apporta le modifiche appropriate fino a quando l'esempio sotto il campo sembra quello che stai cercando. Se hai bisogno di ulteriore aiuto su cosa inserire nel campo Riempi tag, fai clic su "?" pulsante per la legenda (elenco di ciò con cui i diversi codici possibili devono essere tradotti) e premere il pulsante maschera per elencare alcuni punti di partenza.

Quando sei soddisfatto dei risultati, fai clic sul pulsante "Scansione file" (nella finestra di dialogo Scansione file, non quello su cui hai fatto clic per arrivare dove sei ... le icone sembrano uguali) e le modifiche verranno applicate . Se non stai ottenendo il nome dell'artista o dell'album, seleziona semplicemente tutto ciò che desideri modificare, inserisci i dati e fai clic sul piccolo pulsante accanto a quel campo e tutti i file selezionati verranno compilati o modificati in quell'artista o album. Funziona nella maggior parte dei campi.

Al termine, fai clic sul pulsante Salva e il gioco è fatto.

PS: lo scanner CDDB spesso funziona abbastanza bene, se hai album completi che stai cercando di taggare, o almeno file di brani disponibili in commercio.

PPS: Apparentemente sono ancora mezzo sveglio. Secondo quanto hai scritto nel tuo post originale, prova questo nel campo Riempi tag:

%n. %a - %t

Ecco la sezione relativa a questa domanda:


1.2.2. Automaticamente con lo scanner "Fill Tag":

Alcune condizioni per utilizzare questa modalità:

  • file ordinati per album
  • i nomi di file o la directory principale contengono informazioni sui tag (artista, album, titolo, ...)
  • tag vuoti o non corretti

Lo scanner "Fill Tag" utilizza un modello per associare le parole nel nome file e nelle directory con le voci dei tag. In questo modo, i campi dei tag possono essere completati automaticamente premendo il pulsante "verde" nella finestra dello scanner o sulla barra degli strumenti. Se il tag è parzialmente completato, utilizzare l'opzione "Sovrascrivi campi durante la scansione del tag" nella scheda "Scanner" della finestra "Preferenze", per sostituire tutti i campi con i nuovi valori.

Ogni codice corrisponde a un campo, seguendo queste regole:

Strings associated with code    Will fill the field
%a
  Artist
%b
  Album
%c
  Comment
%p
  Composer
%r
  Copyright
%e
  Encoded by
%g
  Genre
%i
  None! (used to ignore a string)
%l
  Number of tracks
%o
  Original artist
%n
  Track
%t
  Title
%u
  URL
%y
  Year

Nota: per evitare errori, si consiglia di utilizzare un codice una sola volta nel modello. Naturalmente, come quando si tagga manualmente, lo scanner elabora solo i file selezionati. È possibile utilizzare i motivi definiti nell'elenco o scrivere i propri motivi per corrispondere al formato dei nomi e delle directory dei file. Per evitare errori quando si seleziona il modello giusto o si scrive, un'anteprima mostra immediatamente i risultati prima di applicare il modello. Se hai bisogno di aiuto con i diversi codici, premi il pulsante “Aiuto” (il salvagente) per visualizzare la legenda di ciascun codice. Inoltre, se si desidera salvare i propri schemi, modificarli o ordinarli, premendo il pulsante "Maschera" verrà visualizzato un piccolo editor sulla finestra dello scanner.

Di seguito un esempio di utilizzo di modelli:

a) il seguente nome file:

“/mnt/MP3/EVANESCENCE  Fallen (2003)  Rock/01. Going Under.mp3

b) with the pattern :

“%a - %b (%y) - %g/%n. %t

c) you will fill the tag with theses strings :

    Artist (%a) => EVANESCENCE
    Album (%b) => Fallen
    Year (%y) => 2003
    Genre (%g) => Rock
    Track (%n) => 01
    Title (%t) => Going Under


3

Ho trovato utili vari strumenti da riga di comando:

ID3v2

id3v2 è un editor di tag id3v2 da riga di comando. È possibile aggiungere / modificare / eliminare i tag id3v2 e convertire i tag id3v1 in tag id3v2. Usa id3lib. Sto cercando un co-manutentore. Invia un'email a myers_carpenter se sei interessato.

eyed3

eyeD3 è un modulo e un programma Python per l'elaborazione di tag ID3. Vengono inoltre fornite informazioni sui file mp3 (ad es. Bit rate, frequenza di campionamento, tempo di riproduzione, ecc.). I formati supportati sono ID3 v1.0 / v1.1 e v2.3 / v2.4.

questi sono ideali quando si esegue lo scripting di qualcosa per la scansione di directory.


2

Questo non sempre lo rende esattamente perfetto, ma l'ho usato per ottenere i nomi dei file mp3 usando solo gli strumenti unix comuni (comprese le versioni busybox) Forse qualcuno con più di solo 6 mp3 Tom Petty può fare qualche ulteriore test.

for x in *.mp3; do
  TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
  #mv "$x" "$TITLE.mp3"
  echo $x" "$TITLE.mp3" #just echo for now, until further tested
done

Modifica: ho letto male la domanda, ma sapendo questo sopra possiamo usare sed per sostituire $ TITLE con il nome del file "$ x" usando sed per sostituire la stringa in atto

sed -i "s/$TITLE/$x/" "$x"

Sono quasi sicuro al 100% che non soddisfa tutte le specifiche ID3, ma potrebbe essere sufficiente per un uso personale di base purché esegua prima un backup


Grazie. Ho trovato un modo per raggiungere il mio obiettivo utilizzando EasyTAG, ma la tua risposta risponde effettivamente alla mia domanda originale. stringhe è una buona utility da conoscere. (Non l'ho mai usato prima.) Potresti pubblicare una soluzione completa basata sulla tua modifica in modo da poter essere sicuro di aver compreso la modifica suggerita?
MountainX

2

Per Ubuntu 18.04 LTS (suppongo che tutte le versioni di Debian funzioneranno bene):

  • Installa eyeD3 con sudo apt install eyeD3

  • Crea un file per lo script bash (ho usato "touch"; puoi usare qualsiasi editor di testo che ti piace)

  • Copia questo e incollalo nel file:

    Copia il nome del file e lo scrive nel tag Title

    for x in *; do
        eyeD3 --title="${x%.*}" "$x"
        echo $a
    done

    Se non ti interessa visualizzare i progressi, ometti la riga echo $a sopra la parola "fatto".

  • Rendi eseguibile il file:

    chmod +x filename
  • Copia lo script nella directory in cui vuoi che venga eseguito, quello contenente i tuoi file multimediali; per esempio:

    cp filename /music/directory
  • Passa alla directory in cui hai appena copiato lo script in:

    cd /music/directory
  • Esegui lo script:

    ./filename

    FATTO

Ha funzionato per me su Ubuntu 18.04 LTS - mia moglie ha scritto questo per me in circa 3 minuti, quindi non posso rispondere a nessuna domanda se non funziona per te; Non sono un esperto di programmatori, sto installando questo web, dns, ssh, sftp, ftp, AD / Domain, file, firewall, router / server kinda guy :-) ODIO fare scripting, programmare e simili. ADORO approfittare di scripting, programmazione e simili :-)


1

Sono sorpreso che nessuno abbia suggerito la soluzione più semplice usando ffmpego avconv:

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;

0

Vorrei installare eyeD3 in un python virtualenv in pip install eyeD3modo da ottenere la versione rilasciata più di recente. Dopo quella corsa:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.