Есть ли способ прочитать теги mp3 файла из оболочки? Что-то вроде:
mp3tags MyFile.mp3 author
должен выводить автор-тег mp3-файла.
источник
Есть ли способ прочитать теги 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 раза.
id3info
в ваше сравнение?ffmpeg
имеет еще одно преимущество: он работает сaac
/m4a
files. Другие инструменты, кажется, не (или вы знаете иначе?). Я также предлагаю поискать его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
пакета. Для oggexiftool
тоже работает, но есть иvorbiscomment -l
изvorbis-tools
пакета. Странноvorbiscomment
иmetaflac
не может быть взаимозаменяемо, хотя FLAC и OGG имеют метаданные vorbis coment?Хорошо, я нашел программу самостоятельно. Это называется mp3info и устанавливается
Чтобы получить отдельные mp3-теги из файла, нужно позвонить
который дает исполнителю файл. % A означает, что один хочет получить исполнителя, и есть другие ключи для других тегов.
источник
mp3info
. Возможно, вы захотите посмотретьid3v2
- он может редактировать / добавлять v2 и отображать v1 и v2. Если вам не нравится, как отображаются теги, вы можете написать скрипт, который будет запускатьid3v2
и обрабатывать вывод соответствующим образом.-R
флаг с,grep
чтобы получить указанный вывод.Only ID3 versions 1.0 and 1.1 are supported
.Вы можете использовать eyed3 . Сначала из терминала установите:
Затем запустите:
Объедините это с,
grep
чтобы получить определенные теги в одной строке.(чтобы удалить все mp3-теги, смотрите ЗДЕСЬ )
источник
eyeD3
неeyed3
eyeD3 --plugin display -p "%t% by %a%" *
.Я предпочитаю использовать id3v2, просто введите
id3v2 -l somefile.mp3
. Вы также можете увидеть справочную страницу id3v2 для более конкретного использования.источник
mid3v2
вместо этого из-за отсутствия поддержки Unicode. Также id3v2 последнее обновление было в 2013 году .Вы можете попробовать exiftool (чтение и запись метаинформации в файлах).
Вот пример команды:
источник
Проверьте,
lltag
если вы ищете решение, которое поддерживает больше, чем просто mp3 / ID3.Установите его с помощью:
просмотреть все теги с ним: (
-S
для галочки)для просмотра определенных тегов:
источник
Свеклу
Вы можете начать с этим скринкастом и в Начале работы руководства
Установите либо:
Также:
exiftool -v3 *.mp3
mid3v2
из (python-mutagen
пакета) ( вместоid3v2
, последнее обновление было в 2013 году !)id3
- Редактор для тегов ID3 (не такой, как этот id3 )id3tool
- Редактор командной строки для тегов id3id3ren
- id3 tagger и переименовыватьисточник