LINUX.ORG.RU

Когда хочется странного или goMusicTagFixer by Zhbert

 , , ,


1

1

Вот бывало у вас такое, что давно уже зудит где-то на краю сознания идея утилитки, но руки все не доходят? У меня вот да - где-то примерно с 2012 года.

Представляю вашему вниманию эталонное ненужно (как скорее всего скажут тут многие): goMusicTagFixer - консольная утилита для быстрой правки тэгов в mp3 файлах на название директории, в которой они лежат. И да, она написана на Go.

Как я к этому пришел? Все просто. Когда-то в далеком-далеком 2012 году, когда у меня на работе поя… Хотя стоп. Это было еще раньше, где-то в 2010, когда я купил себе iPod Classc на 160Гб и впервые в жизни вляпался в iTunes.

Как и у многих, у меня помимо «полных» дискографий исполнителей в коллекции музыки есть каталоги, куда навалено кучей всего подряд в одном примерно стиле, и назвается это все «Разное» или «В машину», или «Для тренировки».. Ну и так далее. Поскольку файлы там набраны из совершенно различных источников, в тэгах творится абы что, а если даже и не абы что, то они все разные в плане исполнителя и названия альбома. Впервые я в это вляпался, когда залил в тунца свою любимую в тот момент директорию с файлами и обнаружил, что вместо одной «папки» в библиотеке создалось 300 исполнителей с одном альбомом и одной песней в нем. При заливке этого всего в плеер получилась такая же вакханалия, что не придало совершенно никакого удобства пользованию им.

//Да да, есть всякие комбайны для правки тэгов, но у меня тогда возникла идея именно простой утилиты с одной кнопкой «сделать зашибись». И вот я наконец дошел до того, чтобы ее сделать.

Итак, в утилите есть всего пара команд.

  • scandir - рекурсивно сканирует каталог, откуда была запущена (да, достаточно просто прийти туда в терминале и запустить утилиту из любого места прямой ссылкой) и показывает результаты в виде «дерева». Эдакое «tree» из DOS, о котором я до сих пор вспоминаю с теплотой. Писал скорее ради фана, а не из-за необходимости.
Starting program at 22:26:38 05-10-2020
Please enter the command:
scandir
Starting the folder scan at 22:26:41 05-10-2020
Temp
├─ 02 - Театр одного актера.mp3
├─ 03 - Последняя искра.mp3
├─ 04 - Шкатулка.mp3
├─ 05 - В последний раз.mp3
├─ 1983 - Rebel Yell
│  ├─ 01 - Rebel Yell.mp3
│  ├─ 02 - Daytime Drama.mp3
│  ├─ 03 - Eyes Without A Face.mp3
│  ├─ 04 - Blue Highway.mp3
│  ├─ 05 - Flesh For Fantasy.mp3
│  ├─ 06 - Catch My Fall.mp3
│  ├─ 07 - Crank Call.mp3
│  ├─ 08 - (Do Not) Stand In The Shadows.mp3
│  ├─ 09 - The Dead Next Door.mp3
│  ├─ Covers
├─ 1987 - Hot Track
│  ├─ 01 - Love Hurts.mp3
│  ├─ 02 - Shanghai'd in Shanghai.mp3
│  ├─ 03 - Carry Out Feelings.mp3
│  ├─ 04 - Razamanaz.mp3
│  ├─ 05 - Hair of the Dog.mp3
│  ├─ 06 - I Want to (Do Everything for You).mp3
│  ├─ 07 - This Flight Tonight.mp3
│  ├─ 08 - Broken Down Angel.mp3
│  ├─ 09 - Born to Love.mp3
│  ├─ 10 - My White Bicycle.mp3
│  ├─ 11 - Go Down Fighting.mp3
│  ├─ 12 - Vancouver Shakedown.mp3
│  ├─ Covers
├─ Космические Рейнджеры - Longway.mp3
├─ Космические Рейнджеры - Пробуждение.mp3
├─ Космические Рейнджеры 1 - Бой.mp3
├─ Космические рейнджеры 1 - Космический ветер.mp3
─────────────────────────────────────────
Scanning complete at  22:31:30 05-10-2020
Founded  49  mp3 files in  5  folders.
  • deepscan - аналогичная первой, только дополнена для каждого mp3 файла информацией о его тэгах: исполнитель, альбом, название. Освновная задача - посмотреть, что там есть из коробки, а потом убедиться, что все сработало как надо. Выхлоп цветной, тэги визуально отличаются от дерева.
Please enter the command:
deepscan
Deep scan started at  22:29:25 05-10-2020
Temp
├─ 1983 - Rebel Yell
│  ├─ 01 - Rebel Yell.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:   Rebel Yell 
│  ├─ 02 - Daytime Drama.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:    
│  ├─ 03 - Eyes Without A Face.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:    
│  ├─ 04 - Blue Highway.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:    
│  ├─ 05 - Flesh For Fantasy.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:    
│  ├─ 06 - Catch My Fall.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:    
│  ├─ 07 - Crank Call.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:   Crank Call 
│  ├─ 08 - (Do Not) Stand In The Shadows.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:   (Do Not) Stand In The Shadows 
│  ├─ 09 - The Dead Next Door.mp3
│     Artist:   Rebel Yell 
│     Album:    Rebel Yell 
│     Title:    
│  ├─ Covers
─────────────────────────────────────────
Scanning complete at  22:31:49 05-10-2020
Founded  49  mp3 files in  5  folders.

  • mp3settags - основная та самая команда «сделать зашибись». Рекурсивно пробегает по всем mp3-файлам в каталоге и прописывает им в «Исполнитель» и «Альбом» название каталога, в котором они лежат. Она же, кстати, на скриншоте.
Please enter the command:
mp3settags
Changing of mp3 tags started at  22:30:37 05-10-2020
Temp
 02 - Театр одного актера.mp3  setting  Temp  album and artist name
 03 - Последняя искра.mp3  setting  Temp  album and artist name
 04 - Шкатулка.mp3  setting  Temp  album and artist name
 05 - В последний раз.mp3  setting  Temp  album and artist name
 Rebel Yell
 01 - Rebel Yell.mp3  setting   Rebel Yell  album and artist name
 02 - Daytime Drama.mp3  setting   Rebel Yell  album and artist name
 03 - Eyes Without A Face.mp3  setting   Rebel Yell  album and artist name
 04 - Blue Highway.mp3  setting   Rebel Yell  album and artist name
 05 - Flesh For Fantasy.mp3  setting   Rebel Yell  album and artist name
 06 - Catch My Fall.mp3  setting   Rebel Yell  album and artist name
 07 - Crank Call.mp3  setting   Rebel Yell  album and artist name
 08 - (Do Not) Stand In The Shadows.mp3  setting   Rebel Yell  album and artist name
 09 - The Dead Next Door.mp3  setting   Rebel Yell  album and artist name
Covers
 Hot Track
 01 - Love Hurts.mp3  setting   Hot Track  album and artist name
 02 - Shanghai'd in Shanghai.mp3  setting   Hot Track  album and artist name
 03 - Carry Out Feelings.mp3  setting   Hot Track  album and artist name
 04 - Razamanaz.mp3  setting   Hot Track  album and artist name
 05 - Hair of the Dog.mp3  setting   Hot Track  album and artist name
 06 - I Want to (Do Everything for You).mp3  setting   Hot Track  album and artist name
 07 - This Flight Tonight.mp3  setting   Hot Track  album and artist name
 08 - Broken Down Angel.mp3  setting   Hot Track  album and artist name
 09 - Born to Love.mp3  setting   Hot Track  album and artist name
 10 - My White Bicycle.mp3  setting   Hot Track  album and artist name
 11 - Go Down Fighting.mp3  setting   Hot Track  album and artist name
 12 - Vancouver Shakedown.mp3  setting   Hot Track  album and artist name
Covers
 Космические Рейнджеры - Longway.mp3  setting  Temp  album and artist name
 Космические Рейнджеры - Пробуждение.mp3  setting  Temp  album and artist name
 Космические Рейнджеры 1 - Бой.mp3  setting  Temp  album and artist name
 Космические рейнджеры 1 - Космический ветер.mp3  setting  Temp  album and artist name
Разное
 01 - 2000 - Frozen Features - The solitude.mp3  setting  Разное  album and artist name
 01 - Мир стекла.mp3  setting  Разное  album and artist name
 02 - 2000 - Frozen Features - The cry of silence.mp3  setting  Разное  album and artist name
 02 - Театр одного актера.mp3  setting  Разное  album and artist name
 03 - Последняя искра.mp3  setting  Разное  album and artist name
 04 - Шкатулка.mp3  setting  Разное  album and artist name
 05 - В последний раз.mp3  setting  Разное  album and artist name
 05 - О ней.mp3  setting  Разное  album and artist name
 07 - Ангел.mp3  setting  Разное  album and artist name
 08 - Гредят новый век.mp3  setting  Разное  album and artist name
 Григорий Семенов - Музыка людей (Космические рейнджеры).mp3  setting  Разное  album and artist name
 Космические Рейнджеры - Longway.mp3  setting  Разное  album and artist name
 Космические Рейнджеры - Безграничный космос.mp3  setting  Разное  album and artist name
 Космические Рейнджеры - Гимн.mp3  setting  Разное  album and artist name
 Космические Рейнджеры - Пробуждение.mp3  setting  Разное  album and artist name
 Космические Рейнджеры 1 - Бой.mp3  setting  Разное  album and artist name
 Космические рейнджеры 1 - Космический ветер.mp3  setting  Разное  album and artist name
 Космические рейнджеры 1 - Полетная.mp3  setting  Разное  album and artist name
 Космические рейнджеры OST - Starflight(2).mp3  setting  Разное  album and artist name
 Спящий - Abyssphere.mp3  setting  Разное  album and artist name
─────────────────────────────────────────
Changing complete at  22:30:37 05-10-2020
Changed  49  mp3 files in  5  folders.
  • help - показывает окно справки.

О скриншоте: гента, кеды, дефолт, кроме значков - Memphis98, они идеальны.

>>> Сорцы

>>> Просмотр (1600x900, 947 Kb)

★★★★★

Проверено: cetjs2 ()

но у меня тогда возникла идея именно простой утилиты с одной кнопкой «сделать зашибись».

MusicBrainz Picard делает это «зашибись» одной кнопкой, только умнее (с помощью AcoustID может вообще файл без имени и тегов протегать).

commagray ★★★★★ ()
Последнее исправление: commagray (всего исправлений: 3)

#ясделаль, ну ты чо.

Folder stub: to add it to the git..gitkeep если тебе нужно схоронить директорию, пока она пуста, либо .gitignore если тебе нужно сохранить директорию и оставить её пустой:

*
!.gitignore


== true писать не нужно, а build.sh выбрось, напиши Makefile. Код не смотрел (только пролистал), но если хочешь, покритикую.

WitcherGeralt ★★ ()

Эдакое «tree» из DOS, о котором я до сих пор вспоминаю с теплотой.

Чем оно отличается от tree?

Да да, есть всякие комбайны для правки тэгов, но у меня тогда возникла идея именно простой утилиты с одной кнопкой «сделать зашибись». И вот я наконец дошел до того, чтобы ее сделать.

Ну да, это все получилось куда проще чем взять find (или даже просто средствами bash) id3tool и написать скрипт\алиас на пол строки.

эталонное ненужно (как скорее всего скажут тут многие)

Главное что у вас наконец-то есть инструмент, о котором 10 лет мечтали.

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

Оксиджен? Зачот. Значки не то, рядом со шрифтом не выглядят. И палитра не та, но хум хау.

А утилиты для обхода проблем тунца - а не лучше ли не пользоваться тунцом?

ChekPuk ★★ ()

Ребят, научите kde готовить? ))

DAGAZ ()

жирный плюс за космические рейнджеры :)

imho-linux ()

Дефолт. Даже через wine лучше шрифты рендерятся, че с этими кедами не так

deity ★★★ ()

Как и у многих, у меня помимо «полных» дискографий исполнителей в коллекции музыки есть каталоги, куда навалено кучей всего подряд в одном примерно стиле, и назвается это все «Разное» или «В машину», или «Для тренировки»

Нет, не как у многих, время уже давно другое.

time_LORd ()

Представляю вашему вниманию эталонное ненужно

не то что бы эталонное, но 248 из 250 полуляхов оно набирает спокойно

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

Шрифты — это всегда на любителя и на конкретный монитор. И да, я со своим infinality могу сделать примерно как угодно.

KDE рисует шрифты через freetype, соответственно, претензии к кедам — это примерно как требовать от автозавода хороших дорог.

AlexM ★★★★★ ()

где найти такие же oxygen заголовки окон для кед? нахожу только немного другие

doctorx ★★★ ()

Ого! Ты таки собрался. Крассавчик.

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

но если хочешь, покритикую.

Давай, хорошая идея. Я и так в курсе, что наговнокодил местами =) Только лучше в личку, чтоб тут срач не устраивать.

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

где значки взял

Здесь же где-то в скриншотах были, там ссылку давали.

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

Нет, не как у многих, время уже давно другое.

О, любитель облаков подтянулся? Молодец. А я вот все же по старинке предпочитаю хранить все дома в хранилище.

Zhbert ★★★★★ ()

Неплохо, только заголовки квина какие-то большие. Я в настройках окон oxygen ставлю размер маленький, так вообще идеально

TheAnonymous ★★★★★ ()

Лайк не глядя за Абиссфер в плейлисте!

Man-o-Jar ()

+1 за Abyssphere. Правда судя по листингам ты и не знаешь, что их слушаешь. Бывает.

bread ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)