Парсер музыки из ВК

12
P
На сайте с 14.05.2012
Offline
35
#11


<?php
//header('Content-type: text/html; charset=utf-8');
//error_reporting(55);

$user_agent = '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)';
$cookie = '';
$login = '***';
$password = '******';
// Функция, которая позволяет нам переходить по редиректам с включенной опцией open_basedir
function curl_redirect_exec($ch, $redirects = 0, $curlopt_returntransfer = true, $curlopt_maxredirs = 10, $curlopt_header = false) {
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$exceeded_max_redirects = $curlopt_maxredirs > $redirects;
$exist_more_redirects = false;
if ($http_code == 301 || $http_code == 302) {
if ($exceeded_max_redirects) {
list($header) = explode("\r\n\r\n", $data, 2);
$matches = array();
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
$url = trim(array_pop($matches));
$url_parsed = parse_url($url);
if (isset($url_parsed)) {
curl_setopt($ch, CURLOPT_URL, $url);
$redirects++;
return curl_redirect_exec($ch, $redirects, $curlopt_returntransfer, $curlopt_maxredirs, $curlopt_header);
}
}
else {
$exist_more_redirects = true;
}
}
if ($data !== false) {
if (!$curlopt_header)
list(,$data) = explode("\r\n\r\n", $data, 2);
if ($exist_more_redirects) return false;
if ($curlopt_returntransfer) {
return $data;
}
else {
echo $data;
if (curl_errno($ch) === 0) return true;
else return false;
}
}
else {
return false;
}
}

$ch = curl_init();
// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
// ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch,CURLOPT_REFERER,'http://vk.com/login?fast=1&hash=&s=0&to=');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, 'https://login.vk.com/?act=login&from_host=m.vk.com&from_protocol=http&ip_h=&pda=1');
$answer = curl_redirect_exec($ch);
//формируем запрос
$post = array(
'email' => $login,
'pass' => $password
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
// собственно этот ответ сервера уже доказывает что мы авторизировались
$answer = curl_redirect_exec($ch);
curl_setopt($ch, CURLOPT_POST, false);
// укажем страницу, с которой мы получим данные для проверки. она может быть как с мобильного так и с основного сайта
curl_setopt($ch, CURLOPT_URL, 'http://vk.com/audio');
$answer = curl_redirect_exec($ch);

//echo $answer; //переменна с кодом
$source = $answer;
preg_match('/\<input type="hidden" id="????????????" value="(.*)"\>/', $source, $out);

foreach($out as $a){
echo $a;
}


curl_close($ch);
?>

Вопрос что поставить в регулярке вместо id="????????????"

Если код ответа от сервера примерно такой

<input type="hidden" id="audio_info90554618_176051316" ....
P
На сайте с 14.05.2012
Offline
35
#12

Короче удалось получить все ссылки со страницы (на mp3 файлы) теперь следующая задача как их оттуда скачать? Нужен какой-то (желательно jquery AJAX) скрипт который бы скачивал бы файлы с сервера.

дани мапов
На сайте с 06.09.2012
Offline
204
#13

Используйте CURL для скачивания.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
P
На сайте с 14.05.2012
Offline
35
#14


function curl_download($url, $file)
{
// открываем файл, на сервере, на запись
$dest_file = @fopen($file, "w");

// открываем cURL-сессию
$resource = curl_init();

// устанавливаем опцию удаленного файла
curl_setopt($resource, CURLOPT_URL, $url);

// устанавливаем место на сервере, куда будет скопирован удаленной файл
curl_setopt($resource, CURLOPT_FILE, $dest_file);

// заголовки нам не нужны
curl_setopt($resource, CURLOPT_HEADER, 0);

// выполняем операцию
curl_exec($resource);

// закрываем cURL-сессию
curl_close($resource);

// закрываем файл
fclose($dest_file);
}

curl_download("http://cs521200.userapi.com/u119594733/audios/80c166d0ea10.mp3", "music/1.mp3");
?>

нашёл функцию которая прекрасно скачивает html но mp3 не для неё

дани мапов
На сайте с 06.09.2012
Offline
204
#15

http://cs521200.userapi.com/u119594733/audios/80c166d0ea10.mp3 - 404 ошибка. А причем здесь тип файла? Просто ссылка нужна прямая на скачивание.

P
На сайте с 14.05.2012
Offline
35
#16

http://cs521200.userapi.com/u119594733/audios/51140a391cce.mp3 -вот не 404 но результата нет

дани мапов
На сайте с 06.09.2012
Offline
204
#17
perevezenzev:
http://cs521200.userapi.com/u119594733/audios/51140a391cce.mp3 -вот не 404 но результата нет

Попробуйте через анонимайзер зайти - 404 выдает, это ссылка скорее всего только для вашего адреса, как и на видео. Неужели нет уже готовых скриптов - возьмите оттуда нужную часть и доработайте под себя, зачем велосипед изобретать.

P
На сайте с 14.05.2012
Offline
35
#18

На счет ip вы правы. Но мне интересен сам принцип и хочется все сделать самому. Если взять любой другой mp3-шник то функция выдаёт кокозябры а не файл

TF-Studio
На сайте с 17.08.2010
Offline
334
#19

потому что надо корректный header отправить

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
P
На сайте с 14.05.2012
Offline
35
#20
корректный header отправить

хорошо, и какой хеадер?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий