Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [304]
Японский язык [12]
ZX Spectrum [70]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [39]
Python [3]
Магнитольное [44]
Commodore64 [14]
Игровые приставки [2]


 
Дневник (2024 » Март » 23 в 15:12)
GNU/Linux ID3tag: CLI way vs GUI easytag way

mid3v2, id3v2, lltag, id3tool, id3info, mid3iconv
Линуксоид должен стремиться уметь всё делать в консоли - мне прочно вьелась в мозг эта максима. Но должен признаться, что годы не удавалось следовать ей в полной мере. Есть куча костылей инструментов, но все либо ломаются, либо не работают. И вот в очередную итерацию поисков, когда меня припекло снова, я нашёл решение, надеюсь, его не сломают. 

Как вы уже догадались, в блоке выше приведены обозреваемые утилиты, и подсвечена единственная работающая. =)

Небольшая предыстория

Я храню музыку только локально и принципиально не пользуюсь стримминговыми сервисами, чтобы не зависеть от интернет соединения и правозабирателей. В любой момент в мире 1984 могут что-то отменить, не поделить права, и вот у вас в библиотеке опять никогда не было то, что вы слушали ещё вчера. А ещё я старый пират и принципиально не желаю отстёгивать стримминговым помойкам деньги. Думаю после событий 2014, 2022го годов многие поняли, на какие грабли они наступили, храня свои  коллекции у добрых буржуинских дядь. Оставшись без своих денег, без оплаченных игр, фильмов, музыки, просто потому, что они русские или граждане РФ и на сервис для белых господ их больше не пускают.

Поэтому пошли к чёрту все буржуи и провайдеры, я храню свою музыку у себя. И сам выбираю из всего мирового наследия, а не из предлагаемых "по акции" в этом месяце за полцены на аккаунте какого стриминга.

В силу исторических причин, далеко не всегда id3tag указаны верно или вообще имеются. Особенно это актуально для старых аудиокниг и редких исполнителей. Чаще всего я использовал GUI easytag как наиболее удобную программу с логичным интерфейсом и возможностью заполнить у выделенных файлов отдельный тэг общим значением.  Но меня всегда тяготило это, что я не могу сделать это в консоли без камлания с бубном.

Я слушаю музыку в консоли в плеере cmus, он к сожалению не умеет редактировать тэги, но хотелось бы править их не покидая консоли. А также заполнять тэги у множества файлов используя find. Вжик, и готово, и не надо грузить GUI софт, кликать мышью и копипастить.  Вот и вся предыстория и мотивация, зачем мне mp3 и именно CLI решение.



Обзор утилит


mid3v2 — Я сразу привожу это лучшее решение, потом остальные. Вот этой конструкции достаточно, чтобы ввести основные теги: артист, альбом, трек. Для удобства восприятия написал её в три строки со слешами-разделителями:
mid3v2 -a  "ARTIST" /path/to/file.mp3 ; \
mid3v2 -A "ALBUM" /path/to/file.mp3 ;  \
mid3v2 -t "SONG/TITTLE" /path/to/file.mp3

Для универсального использования, чтобы не редактировать каждую строку, лучше использовать такую конструкцию:
mid3v2 --artist "" --album "" --song "" /path/to/file 
Например:
mid3v2 "Технология - Всё, что ты хочешь.mp3" \
--artist "Технология" \
--album "Нажми на кнопку" \
--song "Всё, что ты хочешь"


Это было решение на базе библиотеки python-mutagen. Остальные утилиты работают на id3lib и с ними большие проблемы.



id3v2 — с ней я провозился сутки, пока мне не рассказали, что его опять сломали. " id3v2 в арче не будет работать с не-латинскими тегами, т. к. он сломан. Точнее, сломано в апстриме, но в дебиане его основательно пропатчили, а в арче нет.)"  То есть у меня в Manjaro Linux он нормально не работает, но у вас на дебиане вероятно заведётся.
id3v2 -2 -a  "ARTIST" /path/to/file.mp3 ; \
id3v2 -2 -A "ALBUM" /path/to/file.mp3 ;  \
id3v2 -2 -t "SONG/TITTLE" /path/to/file.mp3
После выполнения у меня в тэгах в плеере cmus вместо букв кракобябры. Это можно исправить, применив после:
mid3iconv "/path/to/file.mp3"
...но лучше использовать исправную утилиту выше.




lltag — пишет почему-то только в id3v1, там кириллицу низзя, помещается с ошибками. Ключ -2 отсутствует,  ключи --mp3read=2, --mp3v2, --id3v2 не работают, или заточены для другого. Как записать в  id3v2 непонятно.

lltag --yes -a  "ARTIST" /path/to/file.mp3 ; \
lltag --yes -A "ALBUM" /path/to/file.mp3 ;  \
lltag --yes -t "SONG/TITTLE" /path/to/file.mp3

mid3iconv после не спасает.



id3tool — кажется изначально заточен только под id3v1, и пишет в id3v1 в кодировке cp1251 и его лучше вообще не использовать.
id3toll -r  "ARTIST" /path/to/file.mp3 ; \
id3tool -a "ALBUM" /path/to/file.mp3 ;  \
id3tool -t "SONG/TITTLE" /path/to/file.mp3


Просмотр и чистка тэгов



Следует отметить схожесть ключей id3v2 и mid3v2.

Удаление тэгов:
mid3v2 -s /path/to/file.mp3   # удалить тэги v1
mid3v2 -d /path/to/file.mp3  # удалить тэги v2
mid3v2  --delete-all /path/to/file.mp3  # удалить оба: v1 и v2
mid3v2  -D /path/to/file.mp3  # краткая запись --delete-all
Просмотреть имеющиеся в файле тэги обоих версий:
mid3v2 -l /path/to/file.mp3

Тэгов заметно больше, чем ключей для них, поэтому по -l можно посмотреть, какой текст на каких тэгах хранится, и нужное назначить, ненужное удалить. Потому, что если есть TPE1 и TPE2,  то показываться в плеере будет последний, а первый лежать мёртвым грузом.

Назначить тэг по его коду:
mid3v2 --TPE1="Белка" /path/to/file.mp3
mid3v2 --TPE2="и Стрелка" /path/to/file.mp3

Удалить тэг по его коду:
mid3v2 --delete-frames=TPE3

mp3info — работает и довольно криво только с id3v1 тэгами, поэтому даже не буду приводить её примеры. Её функционал делает любая нормальная утилита.


Вспомогательные утилиты


mid3iconv — конвертация id3v1 в формат unicode в id3v2. Помогает в случае кракозябр, когда плеер не поддерживает старые досовые тэги и русскеи буквы там.

Простое перекодировывание:
mid3iconv /path/to/file.mp3

Явно указать, в какой кодировке файл, и после удалить id3v1 тэги.
mid3iconv -e CP1251 --remove-v1 /path/to/file.mp3

mp3unicode — Эта утилита может перекодировывать из одной кодировки в другую и удалять тэги

Удаление всех тэгов,  v1 и v2:
mp3unicode -s utf8 -1 none -2 none /path/to/file.mp3

Перекодировать id3v1 тэги в кодировке cp1251 в id3v2 тэги в кодировку unicode:
mp3unicode --source-encoding cp1251 \
--id3v1-encoding none --id3v2-encoding unicode /path/to/file.mp3

Кстати это удобно заворачивать в find для "массовых репрессий".


Групповые операции над файлами


Пример массовой обработки с mp3unicode:

find . -type f -iname "*.mp3" -print -exec mp3unicode --source-encoding cp1251 \
--id3v1-encoding none --id3v2-encoding unicode {} \;

В текущем каталоге назначить всем mp3 тег артиста:
find . -maxdepth 1 -type f -iname "*.mp3" -print -exec mid3v2 -a "ARTIST" {} \;

Рекурсивно удалить у всех mp3 второй тэг TPE2:
find . -type f -iname "*.mp3" -print -exec mid3v2 --delete-frames=TPE2 {} \;



Заключение

Я тут с удивление узнал, что  в id3v1 не должно быть ничего, кроме латиницы. Хотя не должно не значит нет, ведь есть русские буквы в старых тэгах id3v1. Или я ошибаюсь?


ССЫЛКИ:

  1. https://www.baeldung.com/linux/mp3-metadata-get-command-line
  2. https://www.linux.org.ru/forum/multimedia/17559694

Категория: GNU/Linux | Просмотров: 20 | Добавил: harushima | Рейтинг: 0.0/0 |
Всего комментариев: 0.
В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous
Логин:
Пароль:

Календарь
«  Март 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы