Warning: Trying to access array offset on value of type bool in
/var/www/sandalov.org/blog/wp-content/themes/mantra/includes/theme-loop.php on line
249
С помощью 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.