C'è un modo per leggere i tag mp3 di un file dalla shell? Qualcosa di simile:
mp3tags MyFile.mp3 author
dovrebbe generare il tag autore di un file mp3.
C'è un modo per leggere i tag mp3 di un file dalla shell? Qualcosa di simile:
mp3tags MyFile.mp3 author
dovrebbe generare il tag autore di un file mp3.
Risposte:
Puoi anche usare di ffprobe
cui fa parte ffmpeg
.
sudo apt-get install ffmpeg
ffprobe file.mp3
Se non desideri altre informazioni, come la lunghezza della traccia e così via, puoi combinare l'output con grep:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
O per ottenere solo l'autore:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Puoi selezionare altri tag separandoli con una virgola, ad esempio format_tags=title,album
.
Volevo cercare una parola chiave in tutti i file mp3 in una cartella. La cartella aveva 486 file, quindi è diventato interessante sapere quale delle soluzioni menzionate qui è la più veloce. Ecco il ciclo che ho usato:
# sudo apt-get install ffmpeg lltag eyed3 mp3info id3v2 libimage-exiftool-perl libid3-tools id3tool
keyword='fill_me_in'
getTitleFF() { ffprobe "$1" 2>&1 | sed -E -n 's/^ *title *: (.*)/\1/p'; }
getTitleLL() { lltag --show-tags title "$1" | sed -nE 's/^ TITLE=(.*)/\1/p'; }
getTitleEyed() { eyeD3 2>&1 "$1" | sed -n 's|\x1b\[[0-9;]*mtitle[^:]*: ||p'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^(TIT2 \([^)]*\)|Title *): (.*)/\2/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -nE 's/^=== TIT2 \([^)]*\): //p'; }
getTitleTool() { id3tool "$1" | sed -n 's|^Song Title:\t||p'; }
for prog in FF LL Eyed Info Id3 Exif Id3i Tool; do
echo "=== getTitle${prog} ==="
time \
for file in *.mp3; do
if "getTitle${prog}" "$file" | grep -q "$keyword"; then
echo "$file"
fi
done
done
Appunti:
lltag
e mp3info
non trovo un titolo, perché i file che stavo usando avevano i tag ID3v2, vedi il commento di @ s-prasanth: Come leggere i tag mp3 nella shell?eyeD3
è problematico da utilizzare a livello di codice, perché utilizza codici colore (grassetto).eyeD3
e anche id3v2
(ma solo per i tag ID3 v1) restituiscono il titolo e l'artista sulla stessa riga, il che complica ulteriormente le cose; pertanto getTitleEyed
e talvolta getTitleId3
restituiscono sia il titolo che l'artista, quindi per favore non copiare e incollare quelle funzioni.getTitleId3 funziona solo con tag ID3 v2, perché id3v2
ha formati diversi per tag ID3v1 e ID3v2, ad es.
Title : Artist:
vs. ID3v2:
TIT2 (Title/songname/content description):
Poiché l'unico programma di questi 5 eyeD3
stampa un avviso rosso per due dei file:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Sembra che quei due file abbiano tag ID3v1, perché quei due file sono gli unici dove lltag
e mp3info
possono ottenere un titolo. Mi chiedo se questo è un bug in eyeD3
quanto nessun altro programma menzionato qui ha un problema con questi file ...
Risultati (tempo reale):
Program | Version | Time / s
----------+------------+-----------
exiftool | 10.25 | 49.5 ± 0.5
lltag | 0.14.5 | 41 ± 1.0
ffprobe | 3.1.3-1+b3 | 33 ± 0.5
eyeD3 | 0.6.18 | 24 ± 0.5
id3info | 3.8.3 | 4.2 ± 0.1
id3v2 | 0.1.12 | 2.9 ± 0.1
id3tool | 1.2a | 1.7 ± 0.1
mp3info | 0.8.5a | 1.4 ± 0.1
Per quanto riguarda il tempo, il vincitore qui è id3tool
(mp3info è più veloce, ma non funziona con ID3 v2).
id3v2
è anche abbastanza veloce, ma la getTitleId3
funzione dovrebbe essere regolata per funzionare anche con i tag ID3v1, che nella peggiore delle ipotesi potrebbero rallentarla del fattore 2.
id3info
nel tuo confronto?
ffmpeg
ha un altro vantaggio: funziona con aac
/ m4a
files. Altri strumenti non sembrano (o sai altrimenti?). Suggerirò anche di cercare nella sua FORMAT
sezione, per evitare casi in cui uno stream ha anche un title
etc ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
. : .
exiftool
o ffprobe
. Lo strumento più specializzato per questo lavoro sarebbe metaflac --list
dal flac
pacchetto. Per ogg exiftool
funziona anche, ma c'è anche vorbiscomment -l
dal vorbis-tools
pacchetto. Stranamente vorbiscomment
e metaflac
non possono essere scambiati, anche se FLAC e OGG hanno entrambi metadati con commento di vorbis?
Ok, ho trovato un programma da solo. Si chiama mp3info e viene installato da
sudo apt-get install mp3info
Per ottenere singoli tag mp3 da un file, è necessario chiamare
mp3info -p %a file.mp3
che dà all'artista il file. % A significa che si vuole ottenere l'artista e ci sono alcune altre chiavi per gli altri tag.
mp3info
. Potresti voler guardare id3v2
- Può modificare / aggiungere v2 e visualizzare v1 e v2. Se non ti piace il modo in cui visualizza i tag puoi scrivere uno script che esegue id3v2
ed elabora l'output in modo appropriato.
-R
flag with grep
per ottenere l'output specificato.
Only ID3 versions 1.0 and 1.1 are supported
.
Puoi usare eyed3 . Innanzitutto, da un terminale, installare:
sudo apt-get install eyed3
Quindi, esegui:
eyeD3 song.mp3
Combina questo con grep
per ottenere tag specifici in una riga.
eyeD3 song.mp3 | grep artist
(per rimuovere tutti i tag mp3, vedi QUI )
eyeD3
noneyed3
eyeD3 --plugin display -p "%t% by %a%" *
.
Preferisco usare id3v2, basta digitare id3v2 -l somefile.mp3
. Puoi anche vedere la pagina man id3v2 per un uso più specifico.
mid3v2
invece raccomandato a causa della mancanza del supporto Unicode. Anche l'ultimo aggiornamento di id3v2 era del 2013 .
Puoi provare exiftool (leggi e scrivi meta informazioni nei file).
"ExifTool è una libreria Perl indipendente dalla piattaforma più un'applicazione a riga di comando per la lettura, la scrittura e la modifica di meta informazioni in un'ampia varietà di file. ExifTool supporta molti formati di metadati diversi tra cui EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, Photoshop IRB, FlashPix, AFCP e ID3, nonché le note del produttore di molte fotocamere digitali di Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Leaf, Minolta / Konica-Minolta, Motorola, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Phase One, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon e Sony. " - ExifTool di Phil Harvey
Ecco un esempio del comando:
exiftool test.mp3
ExifTool Version Number : 10.00
File Name : test.mp3
Directory : .
File Size : 8.2 MB
File Modification Date/Time : 2016:03:02 21:44:58+01:00
File Access Date/Time : 2016:04:06 21:34:01+02:00
File Inode Change Date/Time : 2016:03:02 21:45:36+01:00
File Permissions : rw-rw-r--
File Type : MP3
File Type Extension : mp3
MIME Type : audio/mpeg
MPEG Audio Version : 1
Audio Layer : 3
Sample Rate : 44100
Channel Mode : Stereo
MS Stereo : Off
Intensity Stereo : Off
Copyright Flag : False
Original Media : False
Emphasis : None
VBR Frames : 9544
VBR Bytes : 8467680
ID3 Size : 115419
Band : Tech N9ne Collabos
Album : Strangeulation (Deluxe Edition)
Composer : Tech N9ne Collabos
Genre : Rap & Hip-Hop
Copyright : 2014 Strange Music, Inc
Title : American Horror Story (feat. Ces Cru)
Artist : Tech N9ne Collabos
Track : 10
Year : 2014
Comment :
Lyrics :
Private : (Binary data 8192 bytes, use -b option to extract)
Picture MIME Type : image/jpeg
Picture Type : Front Cover
Picture Description :
Picture : (Binary data 104371 bytes, use -b option to extract)
Audio Bitrate : 272 kbps
Date/Time Original : 2014
Duration : 0:04:09 (approx)
Scopri lltag
se stai cercando una soluzione che supporti più di un semplice mp3 / ID3.
Installalo con:
sudo apt-get install lltag
per visualizzare tutti i tag con esso: ( -S
è per spettacolo)
lltag -S somefile.mp3
per visualizzare determinati tag con esso:
lltag --show-tags artist,album,title,number somefile.mp3
Si può iniziare con questo screencast e il operazioni preliminari guida
Installa:
pip install beets # latest version
apt install beets # repo version
Anche:
exiftool -v3 *.mp3
mid3v2
da ( python-mutagen
pacchetto) ( invece diid3v2
, l' ultimo aggiornamento è stato il 2013 !)id3
- Editor per tag ID3 (non uguale a questo id3 )id3tool
- Editor della riga di comando per tag id3id3ren
- id3 tagger e renamer