- Язык: Go
- Тип: нативное кроссплатформенное консольное приложение
Вот бывало у вас такое, что давно уже зудит где-то на краю сознания идея утилитки, но руки все не доходят? У меня вот да — где-то примерно с 2012 года.
goMusicTagFixer — консольная утилита для быстрой правки тэгов в mp3 файлах на название директории, в которой они лежат. И да, она написана на Go.
Как я к этому пришел? Все просто. Когда-то в далеком-далеком 2012 году, когда у меня на работе поя… Хотя стоп. Это было еще раньше, где-то в 2010, когда я купил себе iPod Classc на 160Гб и впервые в жизни вляпался в iTunes.
Как и у многих, у меня помимо «полных» дискографий исполнителей в коллекции музыки есть каталоги, куда навалено кучей всего подряд в одном примерно стиле, и назвается это все «Разное» или «В машину», или «Для тренировки».. Ну и так далее. Поскольку файлы там набраны из совершенно различных источников, в тэгах творится абы что, а если даже и не абы что, то они все разные в плане исполнителя и названия альбома. Впервые я в это вляпался, когда залил в тунца свою любимую в тот момент директорию с файлами и обнаружил, что вместо одной «папки» в библиотеке создалось 300 исполнителей с одном альбомом и одной песней в нем. При заливке этого всего в плеер получилась такая же вакханалия, что не придало совершенно никакого удобства пользованию им.
Если на фразе «Как и у многих» вы фыркнули и подумали про облака — что ж, ваше право, но я предпочитаю до сих пор хранить музыку локально.
Да да, есть всякие комбайны для правки тэгов, но у меня тогда возникла идея именно простой утилиты с одной кнопкой «сделать зашибись». И вот я наконец дошел до того, чтобы ее сделать.
Тем более, что я давно хотел посмотреть на язык Go.
Итак, в утилите есть всего пара команд.
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 - Shanghaid 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 - Shanghaid 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
— показывает окно справки.
Лицензия: GPLv3.
GitHub проекта.