С помощью regexp можно просто скачнуть все песни: сохраняете страничку audio в текстовый файл и проходитесь по нему:
cat vk | grep -P -o "http://cs.+?\.mp3" | xargs -tl -I _ wget _
Иногда бывает так, что песня в контакте называется правильно, а вот тег совершенно неправильный. Выход один – брать названия у Дурова.
Для этого написал на досуге маленький bash-скриптик script.sh упрощающий массовое скачивание песен из контакта.
script.sh:
#!/bin/bash cat audio.html | egrep "mp3|title_wrap" > rename.sh chmod 777 rename.sh vim -s vk.sh wget -i download.lst sh rename.sh rm rename.sh rm download.lst
Рядом со скриптом лежит скрипт vk.sh для текстового редактора vim, который парсит страницу, получая названия песен и ссылки на них.
vk.sh:
:e ++enc=cp1251 rename.sh :%s/\.mp3,.*/\.mp3/g :%norm jdd :%s/.*"\ value="//g :norm Gdd :w! download.lst :norm uuu :%s/^.*audio\///g :%s/\ <\/span><span\ class="user">.*//g :%s/^.*');\ return\ false">//g :%s/<\/a><\/b>\ -\ <span\ class="title">/\ -\ /g :%s/<a href=""\ onclick="Audio.showLyrics('.*;">//g :%s/<\/a>//g :%s/"/'/g :%s/\//\ /g :%s/?/\ /g :%s/</\ /g :%s/>/\ /g :%s/\\/\ /g :%s/\:/\ /g :%s/*/\ /g :%s/|/\ /g :%s/mp3.*\n/mp3\ "/g :%s/^/mv\ /g :%s/\n/\.mp3"\r/g :%s/\ -\ $// :%s/&/\&/g :%s/"\ /"/g :%s/"\ /"/g :%s/\ .mp3"/.mp3"/g :%s/\ .mp3"/.mp3"/g :%s/\ \ -/\ -/g :%s/\ \ -/\ -/g :%s/-\ \ /-\ /g :%s/-\ \ /-\ /g :norm Gdddddd :w! ++enc=utf-8 rename.sh :q!
Для работы скрипта необходимо наличие установленного текстового редактора vim в системе.
Ubuntu:
sudo aptitude install vim
Процедура скачивания:
- Сначала необходимо зайти через браузер на страницу с нужными песнями (к примеру сюда: http://vkontakte.ru/audio.php) и сохранить её как html-файлик: audio.php.html
- Положить рядом с audio.php.html файл script.sh и vk.sh
- Запустить скрипт
$ sh script.sh
UPD: Скачал файл audio.php.html с утра, вечером хотел запустить скрипт на скачку. Ссылки оказались недействительными. Видимо контакт меняет ссылки на файлы через какие-то промежутки времени. Т.о. скрипт стоит запускать сразу же после скачивания audio.php.html, чтоб не было ошибок 404.
UPD2: Скрипт подправил: теперь правильно отображается “&”, подчистил пробелы, а также – да(!), UNIX/WIN не любят “/” в названиях файлов/папок :).
Также, юзеры вконтакте взрослеют и уже освоили копипаст Unicode символов, по типу:
♥♡♥♡♥ Дима Билан ♥♡♥♡♥ - ♥♡♥♡♥ Ты, только ты ♥♡♥♡♥ ☭☭☭ Гражданская оборона ☮☮☮ - У войны не женское лицо
Такую штуку придётся вычищать руками. 🙂 (Всю таблицу как-то неохота в vim скрипт кидать)
20110812: Поправил в связи с новыми поправками Vk.