Помогите. Перебрать заголовки через CURL.

Статус
В этой теме нельзя размещать новые ответы.

rom4art2

Постоялец
Регистрация
27 Фев 2009
Сообщения
275
Реакции
172
Здравствуйте, такая вот задача.
Хочу сделать парсер видео, на входе страничка с видео - на выходе ссылка на видеофайл для скачки. Программ и сервисов достаточно, но все же...
есть такой алгоритм:
Загружаем страницу с видео через CURL, циклом перебираем все заголовки. Берем заголовок с самым большим размером, выдираем оттуда URL - это и будет ссылка для скачивания)
Алгоритм вроде рабочий, но из-за не профессионализма не знаю как перебрать заголовки и извлечь оттуда URL:confused:

Нашел функцию получения контента, подскажите как извлечь URL с видео?

function get_web_page( $url )
{
$uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";

$ch = curl_init( $url );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу
curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращает заголовки
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходит по редиректам
curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывает все кодировки
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // останавливаться после 10-ого редиректа

$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );

$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
 
покажи страничку откуда выдерать данные

получить страничку и парсить данные с помощью regexp
 
напиши более конкретно че нуджно сделать
 
В общем, при загрузке страницы с ютуба или другого ресурса, через firebag или temper data можно просмотреть заголовки каждого елемента на странице, отсортировать их всех по размеру, и получить заголовок в котором записан сам URL видео файла.
Я хочу написать функцию, которая будет делать все вышеперечисленное, и отдавать только ссылку на видео файл.

Тоесть получить ссылку на видео из заголовка где Content-Length[больше чем у всех остальных]. Для этого нужно перебрать ontent-Length[] у всех елементов на странице.
Как можно осуществить подобное?:bc:
или может я куда-то не туда мыслю?:nezn:
 
Как я понял, задача получить ссылку на скачивание для определенного ролика на видео-сервисе(например, YouTube). Имхо реализация через анализ заголовков нереальна. Потому что получится сделать лишь 1ый запрос - на страницу с урлом.
В принципе, с утубом тесно не сталкивался. Но беглый осмотр показал следующее: в коде страницы с видео есть ссылка вида
Код:
http://v4.lscache6.c.youtube.com/generate_204?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1264082400&key=yt1&signature=D80384EF478ECDD09042D8EA17A5F93985EE271B.181B0AF33EB0E0999207F0E26522AA64AD71656C&factor=1.25&id=e7b502285faf346f
Парсим эту линку, заменяем generate_204 на videoplayback и получаем линк на скачивание flv. Повторюсь, это только первое впечатление - нужно проверить на определенной выборке данных.
 
есть такой алгоритм:
Загружаем страницу с видео через CURL, циклом перебираем все заголовки. Берем заголовок с самым большим размером, выдираем оттуда URL - это и будет ссылка для скачивания)
Алгоритм вроде рабочий, но из-за не профессионализма не знаю как
В общем, при загрузке страницы с ютуба или другого ресурса, через firebag или temper data можно просмотреть заголовки каждого елемента на странице, отсортировать их всех по размеру, и получить заголовок в котором записан сам URL видео файла.
Я хочу написать функцию, которая будет делать все вышеперечисленное, и отдавать только ссылку на видео файл.
Тоесть получить ссылку на видео из заголовка где Content-Length[больше чем у всех остальных]. Для этого нужно перебрать ontent-Length[] у всех елементов на странице.
Как можно осуществить подобное?:bc:
или может я куда-то не туда мыслю?:nezn:
такое невозможно голыми средствами CURL-а
он только загружает конкретную ссылку которую вы ему укажите.
никаких связанных с ней документов, как в случае браузера он не грузит
то есть если вы ему скармливаете ссылку на HTML страницу, то он не получает никаких ссылок/заголовков для рисунков на странице, и приаттаченных к нему скриптов/CSS/видео/музыки
он вообще понятия не имеет об этом.
писать универсальный парсер, который бы разбирал весь HTML, и находил бы все файлы необходимые для отображения-напрасная трата сил, так как такой скрипт будет слишком сложным.
Для решения вашей задачи(и аналогичных)есть только один способ:
1)загружаем страницу на которой показывыается пользователю видео
2)с помощью регулярок/DOM/etc парсим страницу, выдирая конкретную ссылку на видео.
вполне возможно что она зашифрована в каком-то виде/разнесена по частям во flash-vars, либо вообще получается ajax-запросом на определенный скрипт
3)поулчив конкретную ссылку, вы уже можете приступить к скачиванию, либо отображению пользователю
4)...
5)PROFIT
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху