У меня уже был php-файл, использующий regex для извлечения ссылки m3u8 из youtube, которая работала до последней недели.
http://server.com/youtube.php?id=youtbueid
используйте для передачи идентификатора YouTube, как это.
$string = get_data('https://www.youtube.com/watch?v=' . $channelid);
if(preg_match('@"hlsManifestUrl.":."(.*?m3u8)@', $string, $match)) {
$var1=$match[1];
$var1=str_replace("\/", "/", $var1);
$man = get_data($var1);
//echo $man;
preg_match_all('/(https:\/.*\/95\/.*index.m3u8)/U',$man,$matches, PREG_PATTERN_ORDER);
$var2=$matches[1][0];
header("Content-type: application/vnd.apple.mpegurl");
header("Location: $var2");
}
else {
preg_match_all('@itag.":([^,]+),."url.":."(.*?).".*?qualityLabel.":."(.*?)p."@', $string, $match);
//preg_match_all('@itag.":([^,]+),."url.":."(.*?).".*?bitrate.":.([^,]+),@', $string, $match);
$filter_keys = array_filter($match[3], function($element) {
return $element <= 720;
});
//print_r($filter_keys);
$max_key = array_keys($filter_keys, max($filter_keys))[0];
//print_r($max_key);
$urls = $match[2];
foreach($urls as &$url) {
$url = str_replace('\/', '/', $url);
$url = str_replace('\\\u0026', '&', $url);
}
print_r($urls[$max_key]);
header('location: ' . $urls[$max_key]);
Как мне решить эту проблему?