Apakah ada cara untuk membaca tag mp3 file dari shell? Sesuatu seperti:
mp3tags MyFile.mp3 author
harus menampilkan tag penulis file mp3.
Apakah ada cara untuk membaca tag mp3 file dari shell? Sesuatu seperti:
mp3tags MyFile.mp3 author
harus menampilkan tag penulis file mp3.
Jawaban:
Anda juga dapat menggunakan ffprobe
bagian mana dari ffmpeg
.
sudo apt-get install ffmpeg
ffprobe file.mp3
Jika Anda tidak menginginkan informasi lain, seperti panjang trek dan sebagainya, Anda dapat menggabungkan output dengan grep:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
Atau hanya untuk mendapatkan penulis:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Anda dapat memilih tag lain dengan memisahkannya dengan koma, seperti format_tags=title,album
.
Saya ingin mencari kata kunci di semua file mp3 di folder. Folder ini memiliki 486 file, jadi menarik untuk mengetahui solusi mana yang disebutkan di sini yang tercepat. Inilah loop yang saya gunakan:
# 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
Catatan:
lltag
dan mp3info
tidak menemukan judul, karena file yang saya gunakan memiliki tag ID3v2, lihat komentar oleh @ s-prasanth: Bagaimana cara membaca tag mp3 di shell?eyeD3
bermasalah untuk digunakan secara pemrograman, karena menggunakan kode warna (tebal).eyeD3
dan juga id3v2
(tetapi hanya untuk tag ID3 v1) mengembalikan judul dan artis pada baris yang sama, yang semakin memperumit masalah; karena itu getTitleEyed
dan kadang-kadang getTitleId3
mengembalikan judul dan artisnya, jadi tolong jangan salin-tempel fungsi-fungsi itu.getTitleId3 hanya akan berfungsi untuk tag ID3 v2, karena id3v2
memiliki format berbeda untuk tag ID3v1- dan ID3v2, yaitu
Title : Artist:
vs. ID3v2:
TIT2 (Title/songname/content description):
Karena satu-satunya program dari 5 ini eyeD3
mencetak peringatan merah untuk dua file:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Sepertinya kedua file tersebut memiliki tag ID3v1, karena kedua file tersebut adalah satu-satunya tempat lltag
dan mp3info
dapat memperoleh judul. Saya bertanya-tanya apakah ini bug eyeD3
karena tidak ada program lain yang disebutkan di sini memiliki masalah dengan file-file ini ...
Hasil (waktu nyata):
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
Dari id3tool
segi waktu, pemenang di sini adalah (mp3info lebih cepat, tetapi tidak berfungsi dengan ID3 v2).
id3v2
juga cukup cepat, tetapi getTitleId3
fungsinya perlu penyesuaian untuk juga bekerja dengan ID3v1-tag, yang mungkin paling lambat memperlambatnya dengan faktor 2.
id3info
dalam perbandingan Anda?
ffmpeg
memiliki kelebihan lain: ia bekerja dengan aac
/ m4a
file. Alat-alat lain sepertinya tidak (atau Anda tahu sebaliknya?). Saya juga akan menyarankan mencari FORMAT
bagiannya, untuk menghindari kasus di mana aliran juga memiliki title
dll ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
.:
exiftool
atau ffprobe
. Alat yang lebih khusus untuk pekerjaan ini berasal metaflac --list
dari flac
paket. Untuk ogg exiftool
juga berfungsi, tetapi ada juga vorbiscomment -l
dari vorbis-tools
paket. Aneh vorbiscomment
dan metaflac
tidak dapat dipertukarkan, meskipun FLAC dan OGG keduanya memiliki metadata coment vorbis?
Ok, saya menemukan sebuah program sendiri. Ini disebut mp3info dan diinstal oleh
sudo apt-get install mp3info
Untuk mendapatkan tag mp3 tunggal dari suatu file, seseorang harus menelepon
mp3info -p %a file.mp3
yang memberi artis file. % A berarti seseorang ingin mendapatkan artis dan ada beberapa kunci lain untuk tag lainnya.
mp3info
. Anda mungkin ingin melihat id3v2
- Ini dapat mengedit / menambah v2 dan menampilkan v1 dan v2. Jika Anda tidak suka caranya menampilkan tag, Anda dapat menulis skrip yang menjalankan id3v2
dan memproses output dengan tepat.
-R
flag dengan grep
untuk mendapatkan output yang ditentukan.
Only ID3 versions 1.0 and 1.1 are supported
.
Anda bisa menggunakan eyed3 . Pertama, dari terminal, instal:
sudo apt-get install eyed3
Lalu lari:
eyeD3 song.mp3
Gabungkan dengan grep
untuk mendapatkan tag tertentu dalam satu baris.
eyeD3 song.mp3 | grep artist
(untuk menghapus semua tag mp3, lihat DI SINI )
eyeD3
tidakeyed3
eyeD3 --plugin display -p "%t% by %a%" *
.
Saya lebih suka menggunakan id3v2, cukup ketik id3v2 -l somefile.mp3
. Anda juga dapat melihat halaman manual id3v2 untuk penggunaan yang lebih spesifik.
mid3v2
sebagai gantinya karena kurangnya dukungan Unicode. Juga id3v2 pembaruan terakhir adalah pada 2013 .
Anda dapat mencoba exiftool (Baca dan tulis informasi meta dalam file).
"ExifTool adalah perpustakaan Perl platform-independen plus aplikasi baris perintah untuk membaca, menulis, dan mengedit informasi meta dalam berbagai file. ExifTool mendukung banyak format metadata yang berbeda termasuk EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profil, Photoshop IRB, FlashPix, AFCP dan ID3, serta catatan pembuat banyak kamera digital oleh Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Leaf, Minolta / Konica-Minolta, Motorola, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Fase Satu, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon dan Sony. " - ExifTool oleh Phil Harvey
Ini adalah contoh dari perintah:
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)
Periksa lltag
apakah Anda mencari solusi yang mendukung lebih dari sekadar mp3 / ID3.
Instal dengan:
sudo apt-get install lltag
untuk melihat semua tag dengan itu: ( -S
untuk pertunjukan)
lltag -S somefile.mp3
untuk melihat tag tertentu dengannya:
lltag --show-tags artist,album,title,number somefile.mp3
Anda bisa mulai dengan screencast ini dan yang mulai Mendapatkan panduan
Instal salah satu:
pip install beets # latest version
apt install beets # repo version
Juga:
exiftool -v3 *.mp3
mid3v2
from ( python-mutagen
package) ( bukannyaid3v2
, pembaruan terakhir pada 2013 !)id3
- Editor untuk tag ID3 (tidak sama dengan id3 ini )id3tool
- Editor baris perintah untuk tag id3id3ren
- id3 tagger dan renamer