Есть ли способ читать mp3-теги файла из оболочки? Что-то вроде: mp3tags MyFile.mp3 author должно выводить авторский тег mp3-файла.
Вы также можете использовать ffprobe, который является частью ffmpeg.
sudo apt-get install ffmpeg
ffprobe file.mp3
Если вам не нужна другая информация, например длина дорожки и т. д., вы можете комбинировать вывод с grep:
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. [ ! d4]
Я хотел найти ключевое слово во всех 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" | grep 'title'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^TIT2 \([^)]*\): (.*)/\1/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -n '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, поскольку никакая другая программа, упомянутая здесь, не имеет проблемы с этими файлами ... Примечания:
Поразительно, что победитель здесь id3tool (mp3info работает быстрее, но не работает с ID3 v2). id3v2 также довольно быстро, но функция getTitleId3 нуждается в настройке, чтобы работать с ID3v1-тегами, что в худшем случае может замедлить его в 2 раз.
Вы можете использовать eyed3. Во-первых, с терминала установите:
sudo apt-get install eyed3
Затем запустите:
eyeD3 song.mp3
Объедините это с grep, чтобы получить определенные теги в одной строке.
eyeD3 song.mp3 | grep artist
(снять все теги mp3, см. eyed3 )
Я предпочитаю использовать id3v2, просто введите id3v2 -l somefile.mp3. Вы также можете увидеть справочную страницу id3v2 для более конкретного использования.
Проверьте lltag, если вы ищете решение, которое поддерживает больше, чем просто mp3 / ID3.
Установите его с помощью:
sudo apt-get install lltag
, чтобы просмотреть все теги с помощью it: (-S для показа)
lltag -S somefile.mp3
для просмотра определенных тегов с ним:
lltag --show-tags artist,album,title,number somefile.mp3
Вы можете попробовать exiftool (чтение и запись метаинформации в файлах).
«ExifTool - это независимая от платформы библиотека Perl плюс приложение командной строки для чтения, записи и редактирования метаинформации в широком разнообразные файлы ExifTool поддерживает множество различных форматов метаданных, включая EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, 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 от Phil HarveyВот пример команды:
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)