Довелось скачать саундтрек к игре в виде кучи файлов без тегов вообще.
Захотелось на скорую руку заполнить хотя бы названия и номера треков (альбом/год/жанр — одинаковые для всех, с этим все сильно проще).
Для начала из имени каждого файла нужно вычленить название трека. Используем sed в однострочном цикле для разделения имени файла на три блока. Блоки в sed выделяются экранированными скобками: начало — \(, конец — \)
- вычленяем блок №2
- | |
- for file in *.mp3; do name=$(sed "s/\(^.*_.\{1,3\}_\)\(.*\)\(\.mp3\)/\2/" <<< $file); echo $name ; done;
- | |
- блок №1: начало строки, любые символы, блок №3: .mp3
- подчеркивание, 1-3 любых символа,
- подчеркивание
Вывод:
- chat_thiscouldbeAWESOME
- lab sewers
- chat_downthe
- ...
(да, если вы решаете проблему с помощью регулярных выражений — у вас уже 2 проблемы, но в данном случае это отличное решение).
Убедившись что имена получаются корректные, меняем echo $name на редактор тегов mid3v2
- for file in *.mp3; do name=$(sed "s/\(^.*_.\{1,3\}_\)\(.*\)\(\.mp3\)/\2/" <<< $file); mid3v2 -t "$name" "$file" ; done;
Самое сложное сделано. Теперь номера треков (всего их 46, так что это число я подставляю вручную):
- i=1; for file in *.mp3; do mid3v2 -T "${i}/46" "$file" ; ((i+=1)); done;
Все одинаковые для треков теги заполняются совсем просто, например год:
- for file in *.mp3; do mid3v2 -y 2010 "$file" ; done;
PS: утилита mid3v2 (рекомендуется как полностью поддерживающая v2/utf8-теги) входит в питоновский пакет mutagen и ставится примерно так (для debian/ubuntu)
- apt install python3-mutagen
или так (установка в пользовательский профиль из репозитория pypi)
- pip3 install --user mutagen