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

12
P
На сайте с 14.05.2012
Offline
35
5021

Решил для себя сделать парсер но не работает, и не могу понять в чем дело


<?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;
//гдето тут проблема

include('simple_html_dom.php'); //включаем класс
$html = str_get_html($answer);
$div = $html->find('div.play_btn_wrap',0);
$i = 0;
while($item = $div->children($i++)){
echo $item->innertext;
}




curl_close($ch);
?>

что не так. $answer выдает код страницы ВК но парсер не хочет работать

A
На сайте с 18.02.2009
Offline
46
#1

А где регулярка?

Аккаунты на торрент-трекеры. () Тут дают деньги!!! (http://Pop-Bazar.com/registration.php?ref=2115)
V
На сайте с 28.12.2012
Offline
2
vdk
#2
perevezenzev:
$div*=*$html->find('div.play_btn_wrap',0);

Вы ищите в div'е первую ссылку,но там ее нет. Поэтому Вы не получаете ничего.

Ведь ссылка на аудио идет в input'е.

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

через api проще работать

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
V
На сайте с 28.12.2012
Offline
2
vdk
#4

Кстати да.

Что можно вытащить смотрите тут

TF-Studio, у Вас нету случаем примерного шаблона запроса?

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

у меня полуготовый сайт, который дергает музыку из ВК (прослушивание, скачивание).

Но где он лежит - без понятия.

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

vdk, да :) В simple_html_dom нипонимаю почти ничего. Подскажите как правильно это записать.

H2
На сайте с 07.02.2012
Offline
21
#7
vdk:
Кстати да.
Что можно вытащить смотрите тут

TF-Studio, у Вас нету случаем примерного шаблона запроса?

подробный пример

и напомню, все ссылки на .mp3 привязаны к ip

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

Ссылки привязаны, поэтому гоняем музончик через сервер.

Ничего сложного в этом нету.

Примеров в сети куча, сделать из них сайт - дело пары дней.

V
На сайте с 28.12.2012
Offline
2
vdk
#9
http23:
все ссылки на .mp3 привязаны к ip

Если у меня динамический ip, то парсить ссылки нет смысла?

H2
На сайте с 07.02.2012
Offline
21
#10
TF-Studio:
Ссылки привязаны, поэтому гоняем музончик через сервер.
Ничего сложного в этом нету.
Примеров в сети куча, сделать из них сайт - дело пары дней.

Я думаю, что гонять песни через сервер - не выгодно.

Лучше получать ответ от api vk со стороны клиента в xml, и потом уже парсить его с помощью jquery.

---------- Добавлено 30.12.2012 в 13:57 ----------

vdk:
Если у меня динамический ip, то парсить ссылки нет смысла?

всё зависит от того, с какого ip идёт запрос к api vk, если вы получаете ответ с помощью php, то запрос идёт через сервер, следует, в полученном ответе все ссылки на .mp3 будут привязаны к ip вашего сервера и прослушивать их можно будет только если у вас ip как у вашего сервера, чего не может быть. А если напрямую вставить ссылку с запросом к api vk в адресную строку и получить ответ, то все ссылки будут действительны для вашего ip адреса и .mp3 можно будет прослушать только вам.

12

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