Пакетное преобразование файлов ape и flac в mp3 на языке Groovy
Музыкальные форматы ape и flac позволяют слушать музыку без искажений. Это, конечно, хорошо, но не все мобильные устройства их умеют воспроизводить. Поэтому, как ни грустно, приходится преобразовывать в mp3. Лучше всего делать это на каком-нибудь «сервере», т.е. постоянно работающей машине, раздающей, например, Интернет по квартире. Ей всё равно делать нечего: работает себе на антресолях, не шумит, пусть хоть всю ночь молотит. Однако для этого нужен консольный скрипт.
Если нужно преобразовать файлы всего в одном каталоге, то выглядит такой скрипт просто:
Но простота эта обманчива. Можно споткнуться о пробелы, содержащиеся в именах файлов. Если же речь идет не о единственном каталоге, а о множестве, да еще и с неопределенной степенью вложенности — придется задйствовать команду find, да и прочие огороды городить. Задолбавшись это делать, я решил задачу на языке Groovy.
Скрипт сохраняется с именем типа /usr/bin/apeflac2mpg. Далее следует зайти в каталог, где много неконвертированных файлов, запустить
отключиться от квартирного шлюза и… ложиться спать. К утру, может и успеет преобразовать гигабайт flac-файлов в mp3
Если нужно преобразовать файлы всего в одном каталоге, то выглядит такой скрипт просто:
for i in `ls *.{flac,ape}` ; do ffmpeg -ab 256k -i "$i" "$i.mp3"; done
Но простота эта обманчива. Можно споткнуться о пробелы, содержащиеся в именах файлов. Если же речь идет не о единственном каталоге, а о множестве, да еще и с неопределенной степенью вложенности — придется задйствовать команду find, да и прочие огороды городить. Задолбавшись это делать, я решил задачу на языке Groovy.
#!/usr/bin/groovy
dir = new File('.')
dir.eachFileRecurse {
if(it.getName().endsWith('.flac') || it.getName().endsWith('.ape')){
println it.getName()
mp3Name = it.getAbsolutePath() + '.mp3'
n = it.getName().lastIndexOf('.')
ext = it.getName().substring(n)
tmp = File.createTempFile('music', ext, dir)
mp3 = File.createTempFile('music', '.mp3', dir)
tmp.deleteOnExit()
it.renameTo(tmp)
ffmpeg = "ffmpeg -y -ab 256k -i ${tmp.getName()} ${mp3.getName()}".split(/\s+/).execute()
ffmpeg.waitFor()
mp3.renameTo(new File(mp3Name))
}
}
Скрипт сохраняется с именем типа /usr/bin/apeflac2mpg. Далее следует зайти в каталог, где много неконвертированных файлов, запустить
screen apeflac2mpg
отключиться от квартирного шлюза и… ложиться спать. К утру, может и успеет преобразовать гигабайт flac-файлов в mp3
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.