perevezenzev

Рейтинг
35
Регистрация
14.05.2012

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

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


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 не для неё

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


<?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" ....

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

ivan-lev, что мне нужно сделать что-бы информация постоянно обновлялась, не по клику а просто так по задержке в 1 секунду

ivan-lev:
Попробуйте в document.ready =)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>


<script>
function changetext () {
$('#data').fadeOut('fast', function() {
$.get("http://bigseotools/cit/page.php", function( data ){
$('#data').html(data).fadeIn('fast');
});
});
}

$(document).ready(function() {
setInterval(1000, changetext ());
});
</script>


<div id="data" style="width: 150px; height: 150px;">

</div>

так не работает, как надо??

Chukcha:
ну так добавьте в НУЖНОЕ место
setInterval(10000,changetext)
Где это нужное место, надеюсь... Вы догадаетесь сами.

Ни как не могу найти это самое НУЖНОЕ место

Chukcha:
Вы шутите?

У вас был код функции
теперь вы делаете нужное вам анонимной функцией.
Верните все в зад

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>


<script>
function changetext () {
$('#data').fadeOut('fast', function() {
$.get("http://bigseotools/cit/page.php", function( data ){
$('#data').html(data).fadeIn('fast');
});
});
}

$(document).ready(function() {
changetext ();
});
</script>


<div id="data" style="width: 150px; height: 150px;" onClick=" changetext ()">

</div>

Вот так, теперь все происходит по клику, а хотелось бы что бы просто так менялось, не подскажите как это сделать?

Всего: 49