LINUX.ORG.RU

Посоветуйте plz CLI утилиты для редактирования id3tag

 


1

1

СИНОПСИС: Периодически навожу порядок в тэгах музыкальных mp3 коллекций. Пока работаю в GUI - easytag. Очень хочется делать это в пределах консоли, поскольку музыку слушаю только в cmus из-под сессии tmux, и лазить в другие программы не очень удобно, особенно в GUI в сеансе ssh. Или когда мне нужно сотне mp3 какой аудиокниги назначить один общий тэг:

find . -type f -iname "Эдгар*.mp3" -print -exec lltag --yes -a "Эдгар А. По" {} \;

но гуй, кракозябры вам, а не русские буквы.

Вроде утилит много, но все как-то работают с киррилицей через жопу.

id3v2

Беру для примера файл с правильно заполненными и корректно отображаемыми русскими тэгами.
Пытаюсь добавить/изменить тег:

id3v2 -a "ТехнологиR" Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3

Просматриваю:

id3v2 -l Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3
id3v1 tag info for Технология - Всё, что ты хочешь.mp3:
Title  : AQ, GB> BK E>G5HL              Artist: ТехнологиR
Album  : 06<8 =0 :=>?:C                 Year: 1994, Genre: Unknown (255)
Comment: Exactaudiocopy v1.0b4           Track: 2
id3v2 tag info for Технология - Всё, что ты хочешь.mp3:
COMM (Comments): ()[eng]: Exactaudiocopy v1.0b4
TALB (Album/Movie/Show title): 06<8 =0 :=>?:C
TCON (Content type): Synth-Pop/New Wave/Techno/Pop (255)
TIT2 (Title/songname/content description): AQ, GB> BK E>G5HL
TPE2 (Band/orchestra/accompaniment): "5E=>;>38O
TRCK (Track number/Position in set): 02
TYER (Year): 1994
APIC (Attached picture): ()[, 3]: image/jpeg, 9926 bytes
COMM (Comments): (ID3v1 Comment)[XXX]: Exactaudiocopy v1.0b4
TPE1 (Lead performer(s)/Soloist(s)): ТехнологиR

Вроде ок, иду в cmus, делаю :update-cache -f, и вижу вместо букв:

<12>AQ, GB> BK E>G5HL (Технологи)          

Пробую менять tittle:

id3v2 -t "Всё, что ты хочешь." Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3

Вижу в cmus вместо букв:

Всё, что ты хоче (Технологи)     

Хотя сама утилита внутри себя вроде как записанное прочитала:

id3v2 -l Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3 | grep TIT

ВЫВОД:
TIT2 (Title/songname/content description): Всё, что ты хочешь

И как такой утилитой пользоваться, скажите пожалуйста? Почему cmus видит какое-то говно? И прошу не винить плеер, он нормально отображает все музыкальные теги. Правлю файл в easytag - и нормально всё отображается.

Такие же проблемы с другой утилитой:

lltag --yes -a "Technologia" Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3

Или:

id3tool --set-artist="Технология" Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3

Даже если использовать латинские буквы, внезапно всё равно, кракозябры.

Утилиту eyeD3 не пробовал, не удалось даже установить пошли проблемы ошибка: не удалось получить файл 'python-faker-' они специально так называют файлы? Я даже не хочу с этим разбираться…

Конечно можно потом сделать

mid3iconv Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3

и исправить кодировку, но хотелось бы без лишней работы писать сразу в правильную.

Может нужно провести какие-то неочевидные действия по подготовке консоли? Или есть адекватные нормально работающие CLI утилиты?

Как узнать в какой кодировке тэги? Чем их нормально без лишнего мусора посмотреть?

У меня в который раз опустились руки, но вы видели, я честно пытался. :-(

★★★

Последнее исправление: hikikomori (всего исправлений: 1)

Ответ на: комментарий от hikikomori

Я с твоим файлом следующие манипуляции

$ id3v2 --delete-all Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3
Stripping id3 tag in "Технология - Всё, что ты хочешь.mp3"...id3v1 and v2 stripped.

$ id3v2 -2 -a "ТехнологиR" -t "Всё, что ты хочешь."  Технология\ -\ Всё\,\ что\ ты\ хочешь.mp3

$ id3v2 -l Технология\ -\ Всё,\ что\ ты\ хочешь.mp3 
id3v2 tag info for Технология - Всё, что ты хочешь.mp3:
TPE1 (Lead performer(s)/Soloist(s)): ТехнологиR
TIT2 (Title/songname/content description): Всё, что ты хочешь.
Технология - Всё, что ты хочешь.mp3: No ID3v1 tag

PRN
()
Ответ на: комментарий от hikikomori

Я вроде написал: не пользоваться программой id3v2, пока не починят в арче, или поставить патченую. Дальше — как написал Dimez.

Как вариант, можешь вместо id3v2 взять mid3v2 из python-mutagen. А id3v2 выкинуть, потому что это мёртвая программа с мёртвым апстримом из 2000-х.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от PRN

Что это за утилита, она русские буквы не умеет чтоли? Зачем она тогда?

v1 подчистил. сейчас такой вывода дала:

$ exiftool -v "Технология - Всё, что ты хочешь.mp3"
  ExifToolVersion = 12.76
  FileName = .................... - ......, ...... .... .............mp3
  Directory = .
  FileSize = 9381888
  FileModifyDate = 1711117386
  FileAccessDate = 1711117370
  FileInodeChangeDate = 1711117386
  FilePermissions = 33188
  FileType = MP3
  FileTypeExtension = MP3
  MIMEType = audio/mpeg
  MPEGAudioVersion = 3
  AudioLayer = 1
  AudioBitrate = 14
  SampleRate = 0
  ChannelMode = 0
  MSStereo = 0
  MPEG_Audio_Bit26-27 = 0
  IntensityStereo = 0
  CopyrightFlag = 0
  OriginalMedia = 0
  Emphasis = 0
  ID3Size = 795
ID3v2.4.0:
  + [ID3v2_4 directory, 785 bytes]
  | Title = ......, ...... .... .............
  | Artist = ....................
  | Album = .......... .... ............

hikikomori ★★★
() автор топика
Ответ на: комментарий от intelfx
  1. А как поставить?

  2. Мне кажется, это давно/всегда так было. Я не раз тыкался в эту прогу и оппаньки.

  3. А какие ещё варианты?

id3tool --set-artist="Технология" "Технология - Всё, что ты хочешь.mp3"; \
lltag --yes -A "Нажми на кнопку" "Технология - Всё, что ты хочешь.mp3";  \

^ они тоже не работают.

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 1)
Ответ на: комментарий от intelfx

А id3v2 выкинуть, потому что это мёртвая программа с мёртвым апстримом из 2000-х.

Плять, и на это говно я убил дни мозгового штурма…!

Очистка и заполнение тэгов:

mid3v2 -D "Технология - Всё, что ты хочешь.mp3";\
mid3v2 -a  "Технология" "Технология - Всё, что ты хочешь.mp3"; \
mid3v2 -A "Нажми на кнопку" "Технология - Всё, что ты хочешь.mp3";  \
mid3v2 -t "Всё, что ты хочешь." "Технология - Всё, что ты хочешь.mp3"

Сработало. Неужели этот чертов поиск завершён? СПАСИБО, чувак! И Котику спасибо!

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

Я бы на твоем месте не заморачивался, а лучше бы занялся чем-нибудь по полезнее. Тем более у тебя не дебиан и тебе придется делать это руками.

Но если тебе интересно, то действия приблизительно следующие: скачиваешь отсюда https://packages.debian.org/trixie/id3v2 оригинальные исходники и патчи к ним (id3v2_0.1.12+dfsg.orig.tar.xz id3v2_0.1.12+dfsg-7.debian.tar.xz). Распаковываешь в одну директорию. Дальше из id3v2-0.1.12 накладываешь патчи xargs -a ../debian/patches/series -i cat ../debian/patches/{} | patch. И если все хорошо make. В фале control еще зависимости указаны, это libid3-3.8.3-dev. Тебе придется искать аналог у себя в репах, иначе не соберется. Вроде все)

PRN
()
Последнее исправление: PRN (всего исправлений: 1)
Ответ на: комментарий от hikikomori

Это библиотека для работы с тегами (не мёртвая, в отличие от libid3). И консольная программа в комплекте.

mid3v2 работает не через id3lib а через него

Да, т. к. это всё один и тот же проект.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от hikikomori

Давай лучше я тебе скажу.

Возьми PKGBUILD отсюда: https://gitlab.archlinux.org/intelfx/id3v2/-/tree/work/debian-patches и собери через makepkg. Git-ом, если хочешь, посмотри, какие именно патчи и как были наложены.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Ещё раз спасибо тебе и @Dimez за оказанную помощь! Я законспектировал пост по обновлённым знаниям, надеюсь кому-то ещё это пригодится:

https://telegra.ph/ID3tag-CLI-way-vs-GUI-easytag-way-03-23

hikikomori ★★★
() автор топика
Ответ на: комментарий от Dimez

Конечно так проще. Но «осталось исторически». Исправлю. Я не был уверен, что он нормально с несколькими ключами отработает. Ну и для удобства записи в три строки, когда значения длинные.

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 1)
Ответ на: комментарий от hikikomori

Я не был уверен, что он нормально с несколькими ключами отработает.

Так это проверяется за 5 секунд.

Ну и для удобства записи в три строки, когда значения длинные.

Для удобства записи делается обычно так:

command -arg1 "long-long-long-long-long-long-long-long-val1" \
        -arg2 "long-long-long-long-long-long-long-long-val2" \
        -arg3 "long-long-long-long-long-long-long-long-val3"

А не N вызовов программы вместо 1 :)

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 3)
Ответ на: комментарий от Dimez

Я день убил на этот пост, упорядочивая полученную информацию и заново пробуя все утилиты и читая маны. Упустил :( Исправил :) Спасибо за фактчекинг.

hikikomori ★★★
() автор топика
Ответ на: комментарий от Dimez

Спасибо, что напомнил эти прописные истины) Но если помнишь,Я начинал с опытов ввода каждого тега разной утилитой для демонстрации. Не заметил, как это просто унаследовалось)

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

Я тут с удивление узнал, что в id3v1 не должно быть ничего, кроме латиницы.

Это по стандарту. А на практике все хотели видеть кириллицу и весело туда писали cp1251 и потом весело патчили плееры (например, в нулевых был проект rusxmms, где я тоже был)

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

Да. Я воспринимал это как должную данность. ибо видеть русские названия песен латиницей вытекали глаза) Надо будет что-то почитать про оба этих стандарта с нуля.

И не понимаю, почему такая нужная штука как библиотека id3lib так похерена поломана и заброшена. Если бы не это, то завелась бы почти любая утилита из опробованных.

hikikomori ★★★
() автор топика
Ответ на: комментарий от hikikomori

почему такая нужная штука как библиотека id3lib так похерена поломана и заброшена.

Проблема исключительно в заброшенной программе id3v2, перечитай ещё раз тред.

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

id3lib тоже заброшена, лол. Оно всё протухло в прошлом десятилетии.

Библиотеку форкнули как https://taglib.org, но она давно API/ABI-несовместима с оригиналом.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

id3lib тоже заброшена, лол. Оно всё протухло в прошлом десятилетии.

Да что ж такоэ то. Куда не ткни в знакомое, всё в прошлом десятилетии протухло :) Хорошо хоть не в прошлом тысячелетии.

Dimez ★★★★★
()
Ответ на: комментарий от hikikomori

Да нет, ненужная. Грязный сишный код, невменяемое API — где нужность-то?

«Я что-то не заметил, чтобы люди перестали ездить по дорогам, следовательно странно, что такая нужная вещь, как ВАЗ-2101, была выкинута на мороз.»

Нужной она была бы при отсутствии альтернатив.

intelfx ★★★★★
()