Есть ли способ прочитать теги 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
.
Я хотел искать ключевое слово во всех 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.
Проверьте lltag
, если вы ищете решение, которое поддерживает не только mp3 / ID3.
Установите его с помощью:
sudo apt-get install lltag
, чтобы просмотреть все теги с ним: (-S
для шоу)
lltag -S somefile.mp3
, чтобы просмотреть определенные теги с ним:
lltag --show-tags artist,album,title,number somefile.mp3
Вы можете использовать eyed3 . Сначала из терминала установите:
sudo apt-get install eyed3
Затем выполните:
eyeD3 song.mp3
Объедините это с grep
, чтобы получить конкретные теги в одной строке.
eyeD3 song.mp3 | grep artist
(чтобы удалить все mp3-теги, см. ЗДЕСЬ )
Я предпочитаю использовать id3v2, просто введите id3v2 -l somefile.mp3
. Вы также можете увидеть справочную страницу id3v2 для более конкретного использования.
Вы можете попробовать 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 Фила Харви
blockquote>Вот пример команды:
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)
Хорошо, я нашел программу сам. Он называется mp3info и устанавливается
sudo apt-get install mp3info
. Чтобы получить одиночные mp3-теги из файла, нужно позвонить в
mp3info -p %a file.mp3
, который сообщает исполнителю файла. % A означает, что один хочет получить исполнителя, и есть другие ключи для других тегов.
Можно запустить с этого скринкаста и Руководства по началу работы
Установите также:
pip install beets # latest version
apt install beets # repo version
Также:
exiftool -v3 *.mp3
mid3v2
от (python-mutagen
пакет) (вместо id3v2
, последнее обновление было на 2013!)id3
- Редактор для тегов ID3 (не то же как этот id3)id3tool
- Редактор командной строки для тегов id3id3ren
- теггер id3 и renamer