bash-скрипт пакетной загрузки аудиозаписей из Вконтакте

3 Мар
2012

Многие слушают музыку Вконтакте. Добавляют треки в “Мои аудиозаписи”, даже создают альбомы. И иногда возникает необходимость сохранить треки на компьютер. Чтобы в плеер записать к примеру, ну или еще какие у кого причины могут быть. И если с поштучной загрузкой проблем нет (за что спасибо создателям расширений для браузеров), то вот для загрузки, скажем, альбома из 100 треков придется 100 раз нажать на соответствующую кнопку расширения. Попробуем немного автоматизировать процесс. Для этого нам понадобятся: ОС Linux (в данном примере Ubuntu), Google Chrome, расширение VKontakte Tools и python-mutagen.
Сперва установим VKontakte Tools в Google Chrome. Для чего оно нужно? Данное расширение добавляет на страницу “Мои аудиозаписи” замечательную ссылку, позволяющую загрузить плейлист из записей на странице. Плейлист можно получить в двух форматах: pls  и m3u. Нас интересует второй. Сохраняем плейлист и переходим к скрипту.

#!/bin/sh
PLAYLIST="$(zenity --file-selection --title="Выберите файл плейлиста...")";
[ "$PLAYLIST" ] || exit 0;
SAVEFOLDER="$(zenity --file-selection --directory --title="Выберите каталог для сохранения...")";
[ "$SAVEFOLDER" ] || exit 0;
cd "$SAVEFOLDER";
touch output.list;
for URL in `cat "$PLAYLIST" | tr " " "_"`;
do
echo $URL | grep http:// | cut -s -d? -f1 >> output.list;
done
wget -i output.list;
rm output.list;
find -iname '*.mp3' | while read RAW;
do
mid3iconv -eCP1251 --remove-v1 "$RAW";
ARTIST=$(mid3v2 -l "$RAW" | sed -n 's/^TPE1=//p');
TITLE=$(mid3v2 -l "$RAW" | sed -n 's/^TIT2=//p');
mv "$RAW" "$ARTIST - $TITLE.mp3";
done


Как он работает:
  1. открытие окна выбора файла плейлиста. Если файл выбран
  2. открытие окна выбора каталога, в который буду загружаться аудиозаписи
  3. переход в указанный каталог
  4. создание временного файла, в который будут записываться ссылки на аудиозаписи
  5. в цикле читается плейлист. В плейлисте помимо ссылок на аудиозаписи содержится и другая информация (описание трека и т.п.), которая нам не нужна. Поэтому во временный файл output.list сохраняем только те строки, которые содержат ссылки
  6. запускается wget, которому в качестве параметра передается наш временный файл со ссылками
  7. большинство аудиозаписей имеют теги в кодировке cp1251. Для перекодировки тегов в UTF-8 используется скрипт из пакета python-mutagen
  8. VKontakte Tools генерирует названия аудиозаписей в виде набора букв и цифр (что-то вроде fm0c9m234c2.mp3). Для исправления этого недоразумения утилитой mid3v2 из аудиозаписей читаются значения тегов ARTIST и TITLE, после чего имена аудиозаписей переименованием приводятся к виду “ARTIST — TITLE.mp3”

Сохраните скрипт в домашнем каталоге, дайте права выполнения. Запускать можно как из консоли так и двойным щелчком мыши в наутилусе.
Вот и все.

Скрипт написан в учебных целях. Помните о соблюдении авторских прав и законодательства.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх