mixlion/Youtube-Tools — Issue #1: Баг, функция get_links
Author: sofree
Created: 2012-02-14 10:32:59+00:00
State: open

При существующим алгоритме парсинга - не все ссылки парсятся нормально.
Например для видео с id Sd3diED-M0c
полученная ссылка для mp4-640x360 не работает.

Далее, если класс использовать в цикле и передавать в init разные youtube id, - возвращаемые значения всегда одинаковы. Я закомментировал эту строку.
Вот исправленная функция:

public static function get_links(){
// if(!empty(self::$links)) return self::$links;
if(empty(self::$info)) $get_i = self::get_info();

if($get_i === false)
return false;

$links_map = explode(',', self::$info['url_encoded_fmt_stream_map']);
foreach($links_map as $link)
{
parse_str($link, $link2);

if(isset($link2['itag']))
{
$numb = $link2['itag'];
$link = $link2['url'];
# Get information of type of video
preg_match('|'.$numb.'/([0-9]{2,4}x[0-9]{2,4})|', self::$info['fmt_list'], $format);
# Create array of information of video
self::$links[self::$formats[$numb] .'-'. $format[1]] = array(self::$formats[$numb], $format[1], $link);
}
}
return self::$links;
}