Чи є спосіб прочитати mp3-теги файлу з оболонки? Щось на зразок:
mp3tags MyFile.mp3 author
має вивести авторський тег mp3-файлу.
Чи є спосіб прочитати mp3-теги файлу з оболонки? Щось на зразок:
mp3tags MyFile.mp3 author
має вивести авторський тег mp3-файлу.
Відповіді:
Ви також можете використовувати те, ffprobe
що входить до складу ffmpeg
.
sudo apt-get install ffmpeg
ffprobe file.mp3
Якщо ви не хочете іншої інформації, наприклад, довжини доріжки тощо, ви можете комбінувати результат з грепом:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
Або для того, щоб отримати лише автора:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Ви можете вибрати інші теги, відокремивши їх комою, наприклад format_tags=title,album
.
Я хотів шукати ключове слово у всіх файлах mp3 у папці. У папці було 486 файлів, тож стало цікаво дізнатися, яке із згаданих тут рішень є найшвидшим. Ось цикл, який я використав:
# 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
Примітки:
lltag
і mp3info
не знайдіть заголовок, оскільки файли, які я використовував, мали теги ID3v2, дивіться коментар @ s-prasanth: Як читати mp3-теги в оболонці?eyeD3
проблематично використовувати програмно, оскільки він використовує кольорові коди (сміливість).eyeD3
а також id3v2
(але лише для тегів ID3 v1) повертати назву та виконавця в одному рядку, що ще більше ускладнює речі; тому getTitleEyed
іноді getTitleId3
повертайте і заголовок, і виконавця, тому не скопіюйте ці функції.getTitleId3 працюватиме лише для тегів ID3 v2, оскільки id3v2
має різні формати для ID3v1- та ID3v2-тегів, тобто
Title : Artist:
проти ID3v2:
TIT2 (Title/songname/content description):
В якості єдиної програми з цих 5-ти eyeD3
друкується червоне попередження для двох файлів:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Схоже , що ці два файли має ID3v1 тегів, тому що ці два файли є єдиними, де lltag
і mp3info
може отримати титул. Мені цікаво, чи це помилка, eyeD3
оскільки жодна інша програма, згадана тут, не має проблем з цими файлами ...
Результати (в режимі реального часу):
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
Тут переможцем є час id3tool
(mp3info швидше, але не працює з ID3 v2).
id3v2
також досить швидкий, але getTitleId3
функція потребує коригування, щоб також працювати з ID3v1-тегами, що, в гіршому випадку, може сповільнити його за рахунок коефіцієнта 2.
id3info
у своє порівняння?
ffmpeg
є ще одна перевага: вона працює з aac
/ m4a
файлами. Інші інструменти, схоже, не (чи ви знаєте інше?). Я також запропоную шукати його FORMAT
розділ, щоб уникнути випадків, коли в потоці також є title
тощо ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
.
exiftool
або ffprobe
. Більш спеціалізований інструмент для цієї роботи був би metaflac --list
в flac
пакеті. Для ogg exiftool
також працює, але є і vorbiscomment -l
з vorbis-tools
пакета. Дивно vorbiscomment
і metaflac
їх не можна замінювати, навіть якщо у обох FLAC та OGG є метадані Vorbis?
Гаразд, я знайшов програму сам. Він називається mp3info та встановлений
sudo apt-get install mp3info
Щоб отримати окремі mp3 теги з файлу, потрібно зателефонувати
mp3info -p %a file.mp3
який дає виконавцю файлу. % A означає, що потрібно знайти виконавця, а для інших тегів є ще деякі ключі.
mp3info
. Ви можете подивитися id3v2
- Він може редагувати / додавати v2 та відображати v1 та v2. Якщо вам не подобається те, як він відображає теги, ви можете написати скрипт, який запускає id3v2
та обробляє вихід належним чином.
-R
прапор, grep
щоб отримати вказаний вихід.
Only ID3 versions 1.0 and 1.1 are supported
.
Можна використовувати eyed3 . Спочатку з терміналу встановіть:
sudo apt-get install eyed3
Потім запустіть:
eyeD3 song.mp3
Поєднайте це, grep
щоб отримати конкретні теги в одному рядку.
eyeD3 song.mp3 | grep artist
(щоб зняти всі mp3-теги, дивіться ТУТ )
eyeD3
неeyed3
eyeD3 --plugin display -p "%t% by %a%" *
.
Я вважаю за краще використовувати id3v2, просто введіть id3v2 -l somefile.mp3
. Ви також можете ознайомитись із довідковою сторінкою id3v2 для більш конкретного використання.
mid3v2
замість цього через відсутність підтримки Unicode. Також остання версія оновлення id3v2 була 2013 року .
Ви можете спробувати exiftool (Читання та запис метаінформації у файли).
"ExifTool - незалежна від платформи бібліотека Perl, а також додаток командного рядка для читання, запису та редагування метаінформації в широкому спектрі файлів. ExifTool підтримує безліч різних форматів метаданих, включаючи EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Профіль, Photoshop IRB, FlashPix, AFCP та ID3, а також нотатки виробника багатьох цифрових камер 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 та Sony ". - ExifTool від Філа Гарві
Ось приклад команди:
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)
Перевірте, lltag
чи шукаєте ви рішення, яке підтримує більше, ніж просто mp3 / ID3.
Встановіть його за допомогою:
sudo apt-get install lltag
щоб переглянути всі теги з ним: ( -S
призначено для показу)
lltag -S somefile.mp3
для перегляду певних тегів із ним:
lltag --show-tags artist,album,title,number somefile.mp3
Ви можете почати з цим скрінкасти і в Початку роботи керівництва
Встановіть будь-який:
pip install beets # latest version
apt install beets # repo version
Також:
exiftool -v3 *.mp3
mid3v2
з ( python-mutagen
пакета) ( замістьid3v2
, останнє оновлення було в 2013 році !)id3
- Редактор тегів ID3 (не такий, як цей id3 )id3tool
- Редактор командного рядка для тегів id3id3ren
- ідентифікатор id3 та перейменування