воскресенье, 1 сентября 2013 г.

PHP скрипт для выкачивания музыки из ВК в папку



<?php
set_time_limit(0); // убираем тайм аут

$cookie = "";
$login = "ваш@емаил";
$password = "ваш пароль";
$user_vk = "айди/адрес"; // откуда хотим скачать (номер страницы/адрес страницы)
$savefolder = "music"; // куда будем сохранять файлы


$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);  // true т.к. мы будем отправлять post запрос:
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)');// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // по редиректам будем переходить автоматически.
curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');

$post = array( //Формирование запроса
        'act' => 'login',
        'q' => '',
        'al_frame' => '1',
        'expire' => '',
        'captcha_sid' => '',
        'captcha_key' => '',
        'from_host' => 'vkontakte.ru',
        'email' => $login,
        'pass' => $password
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$answer = curl_exec($ch);
/* В $answer нам приходит javascript, который и устанавливает куки
    с названием: remixsid Нам нужно cпарсить эти 60 символов,
    идентификатора сессии. с помощью них vkontakte поймет,
    что мы авторизировались.*/

$sid = substr($answer, strpos($answer, "setCookieEx('sid', '")+20, 60);
$cookie = 'remixsid='.$sid;
//
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "act=load_audios_silent&al=1&edit=0&gid=0&id=".$user_vk);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_URL, 'http://vkontakte.ru/audio'); // укажем страницу, с которой мы получим данные
$data = curl_exec($ch);
preg_match_all("/\['(.*?)','(.*?)','(.*?)','(.*?)','(.*?)','(.*?)','(.*?)','(.*?)','(.*?)','(.*?)'\]/i",$data,$parse);
curl_close($ch);
// и собственно и скачиваем
echo "<pre>";

echo "<b>Начинаем скачку</b><br><br>\n\n";
flush();
foreach($parse[0] as  $array_num => $array_list) { // начинаем скачивать
        $file=str_replace(array("#",";","/","\\"),"",(iconv("cp1251","utf-8",$parse[6][$array_num]))).".mp3"; //путь куда сохранит не забудь дать разрешение на запись в директорию
        $ch = curl_init ($parse[3][$array_num]); // url файла
        $fp = fopen ($savefolder."/".$file, "w"); // создаем файл для записи
        curl_setopt ($ch, CURLOPT_FILE, $fp);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_exec ($ch);
        curl_close ($ch);
        fclose ($fp);
        echo "файл скачан: ".iconv("cp1251","utf-8",($parse[6][$array_num].' - '.$parse[7][$array_num]))." ".date("H:i:s")."<br>\n";
        flush();
        //echo "filename:".$parse[3][$array_num].",     name:".iconv("cp1251","utf-8",($parse[6][$array_num].' - '.$parse[7][$array_num]))."\n";
}
?>


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

Отправить комментарий

Постоянные читатели

Популярные сообщения