kma21 20.12.2010 01:45
Есть проблема! — Bash (или Python) скрипт для удаления первых N символов в тегах мультимедиа-файлов
Привет всем! Решил привести свою музыкальную коллекцию в порядок, посему надо отредактировать теги. В целых дискографиях оч. долго удалять несколько символов в тегах. Знаю, что есть скрипты для работы с тегами, но программированием не владею, посему прошу помощи.Нужен скрипт, который можно натравить на папку и который может удалить первые N символов в определЁнном поле (в моЁм случае это поле "Альбом") тега мультимедиа-файла (mp3, ogg, flac). В идеале чтобы он мог и переходить по папкам, т.е. папка Artist, в ней Album_1, Album_2. И чтобы натравить скрипт на папку Artist, а он сам будет переходить в Album_1, Album_2 и т.д.
sakal 20.12.2010 01:56 #
+ 7 -
Прежде чем создать новое решение, рекомендую вам посмотреть на уже существующее: EasyTag. Есть подозрение, что оно вполне соответствует вашим требованиям.
id3 -A"" /home/my/Music/*
Кажется так можно сбросить названия альбомов или заменить на что то однообразное(указать в кавычках после -А).
А вообще id3 может все, если заглянуть в доки ... есть ключики для всех полей файла.
Может поможет это? Умеет работать с папками, читает, где артисты, где название даже в файлах, посмотри в настройках ее и описаниях.
Я для себя это использую: http://pastebin.com/xiYAV2bp
Но тут, конечно, надо немного прогать :)
Но тут, конечно, надо немного прогать :)
А что делает Ваш скриптик? А то насколько я понял это что-то интересное для меня =)
Разобрался. Это немного не то, что мне надо. А можно ли массово переименовать файлы по такой маске, чтобы удалялись первые N символов?
Удалить первые 3 (три точки) символа из всех mp3-файлов:
find . -depth -name "*.mp3" -exec rename 's/^...//' {} \;
find . -depth -name "*.mp3" -exec rename 's/^...//' {} \;
Не знаю почему, но эта команда удаляет только по одному символу. Но уже что-то. Нельзя ли еЁ отредактировать, чтобы она ещЁ и по вложенным папкам сама гуляла?
find же! man find.
Возьмите за правило читать man по упомянутым командам. Здесь полезны будут:
man find
man rename
Почему по 1 символу переименовывает не знаю. Точно правильно указали именно три точки? Если хотите один-три буквенных символа, то выражение будет 's/^\w{1,3}//'. Кавычки везде корректно расставили?
find . — искать все файлы из текущего каталога,
-depth — обрабатывать файлы «изнутри-наружу»,
-name "*.mp3" — только mp3-файлы,
-exec — для каждого найденного запустить команду:
rename 's/^...//' {} — переименовать файл (вместо {} будет имя найденного файла), применив регулярное выражение «^...» и удалив совпадение:
^ — привязка к началу строки,
. — любой символ, соотв-но три точки — три любых символа (пробелы считаются!)
\; — запускать команду для каждого файла отдельно.
Возьмите за правило читать man по упомянутым командам. Здесь полезны будут:
man find
man rename
Почему по 1 символу переименовывает не знаю. Точно правильно указали именно три точки? Если хотите один-три буквенных символа, то выражение будет 's/^\w{1,3}//'. Кавычки везде корректно расставили?
Я скопировали приведЁнную Вами команду.
В принципе, это пусть и небольшой костыль, в данной ситуации, но тоже решение. Спасибо за помощь!
В принципе, это пусть и небольшой костыль, в данной ситуации, но тоже решение. Спасибо за помощь!