Apakah ada cara untuk membaca tag mp3 file dari shell? Sesuatu seperti:
mp3tags MyFile.mp3 author
harus menampilkan tag penulis file mp3.
sumber
Apakah ada cara untuk membaca tag mp3 file dari shell? Sesuatu seperti:
mp3tags MyFile.mp3 author
harus menampilkan tag penulis file mp3.
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 denganaac
/m4a
file. Alat-alat lain sepertinya tidak (atau Anda tahu sebaliknya?). Saya juga akan menyarankan mencariFORMAT
bagiannya, untuk menghindari kasus di mana aliran juga memilikititle
dllffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
.:exiftool
atauffprobe
. Alat yang lebih khusus untuk pekerjaan ini berasalmetaflac --list
dariflac
paket. Untuk oggexiftool
juga berfungsi, tetapi ada jugavorbiscomment -l
darivorbis-tools
paket. Anehvorbiscomment
danmetaflac
tidak dapat dipertukarkan, meskipun FLAC dan OGG keduanya memiliki metadata coment vorbis?Ok, saya menemukan sebuah program sendiri. Ini disebut mp3info dan diinstal oleh
Untuk mendapatkan tag mp3 tunggal dari suatu file, seseorang harus menelepon
yang memberi artis file. % A berarti seseorang ingin mendapatkan artis dan ada beberapa kunci lain untuk tag lainnya.
sumber
mp3info
. Anda mungkin ingin melihatid3v2
- Ini dapat mengedit / menambah v2 dan menampilkan v1 dan v2. Jika Anda tidak suka caranya menampilkan tag, Anda dapat menulis skrip yang menjalankanid3v2
dan memproses output dengan tepat.-R
flag dengangrep
untuk mendapatkan output yang ditentukan.Only ID3 versions 1.0 and 1.1 are supported
.Anda bisa menggunakan eyed3 . Pertama, dari terminal, instal:
Lalu lari:
Gabungkan dengan
grep
untuk mendapatkan tag tertentu dalam satu baris.(untuk menghapus semua tag mp3, lihat DI SINI )
sumber
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.sumber
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).
Ini adalah contoh dari perintah:
sumber
Periksa
lltag
apakah Anda mencari solusi yang mendukung lebih dari sekadar mp3 / ID3.Instal dengan:
untuk melihat semua tag dengan itu: (
-S
untuk pertunjukan)untuk melihat tag tertentu dengannya:
sumber
Bit
Anda bisa mulai dengan screencast ini dan yang mulai Mendapatkan panduan
Instal salah satu:
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 renamersumber