youtube Pobierz film nie działa
Użyłem http://www.youtube.com/get_video?video_id=ID&t=SIGNATURE&fmt=18 zastąpione
ID i podpis z odpowiednimi wartościami. Ale nie widzę żadnego okna Zapisz lub Pobierz,
Zamiast pustego okna.
Jestem na platformie Macintosh z przeglądarką Safari. Pomoc Mile Widziana.
4 answers
Najprostszym sposobem na pobranie informacji z filmu na youtube jest uzyskanie źródła z http://youtube.com/get_video_info?video_id=XXXXXXXX
Użyję PHP jako przykład obsługi tych danych. Używając PHP parse_str () możesz przypisać całą zmienną ciągu znaków do ładnej tablicy informacji wideo:
$content = file_get_contents("http://youtube.com/get_video_info?video_id=".$id);
parse_str($content, $ytarr);
Następnie wszystkie informacje są przechowywane w $ytarr. Zmienne interesujące to "fmt_list" i " fmt_map "(które wydają się zawierać to samo afaik). Zmienna ta zawiera listę dostępnych formatów wideo w zgodnie z tabelą tutaj: http://en.wikipedia.org/wiki/Youtube#Quality_and_codecs
Zakładając, że wiesz, który z formatów chcesz pobrać, możesz użyć zmiennej" fmt_url_map " (lub $ytarr['fmt_url_map'] w tym przykładzie), aby uzyskać dostęp do listy linków do żądanego formatu.
Możesz pobierać filmy w dowolnym formacie za pomocą tych linków, ale podlegają one ograniczonej przepustowości youtube (optymalna prędkość przesyłania strumieniowego youtube używa, aby zapisać na przepustowość), więc pobieranie nie będzie tak szybkie, jak można sobie wyobrazić. To prowadzi mnie do przekonania, że te linki są najlepiej używane do przesyłania strumieniowego zamiast pobierania, ale nie jestem świadomy żadnej alternatywy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-27 10:39:53
Internet jest pełen niedziałających przykładów, więc oto skrypt dla każdego, kto potrzebuje. Coś jest nie tak z plikami flv. Ich powiązania dostarczają .pliki txt ale jest dobry z webm i mp4. Ja też tego potrzebuję do stron pr0n hehehe [2]}
<?php
//$debug = true;
if(empty($debug))
$debug = false;
if(empty($_GET['id']))
die('no id');
if(!preg_match('/^[A-Z0-9-_]+$/i', $_GET['id']))
die('invalid character in id');
else
$id = $_GET['id'];
if(empty($_GET['type']))
$type = 'mp4';
else
if(!preg_match('/^[A-Z]+$/i', $_GET['type']))
die('invalid character in type');
else
$type = strtolower($_GET['type']);
$url = 'http://youtube.com/get_video_info?video_id=';
$key = 'url_encoded_fmt_stream_map';
$content = file_get_contents($url.$id);
parse_str($content, $result);
if($debug)
{
echo $url.$id.'<br/>';
echo $key.'<br/>';
echo $type.'<br/>';
echo '<pre>';
print_r($result);
echo '</pre>';
}
else
{
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="videofile.'.$type.'"');
}
$type = 'type=video/'.$type;
$files = explode(',url=', $result[$key]);
$files[0] = substr($files[0], 4);
for($i=0; $i<count($files); $i++)
{
$file = urldecode($files[$i]);
$found = strpos($file, $type) > -1;
if ($debug)
{
if ($found)
echo '[THIS]';
echo '<a href="'.$file.'">'.$file.'</a><br/><br/>';
}
else
{
if ($found)
{
$file = explode('; codecs=', $file);
@readfile($file[0]);
break;
}
}
}
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-18 21:49:18
Youtube zmienił żądanie użyte do pobrania pliku flv. Teraz wygląda jak
Możesz łatwo pobrać wszystkie parametry oprócz parametru oc i. e %2coc%3AU0dYSVZMTl9FSkNNOF9ORlJF z odpowiedzi, wciąż szuka sposobu, aby go zdobyć.
Youtube blokuje link do przeglądarki, więc nie można go używać na serwerze. jeśli spojrzysz w kod źródłowy strony youtube znajdziesz coś takiego jak powyższy adres, ale bez parametru OC, jeśli skopiujesz go z firebug net panel lub zasobów chrome, pobierze film flv jako "videoplayback".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-09 17:07:35
Próbujesz:
$id = "111_fGEdIvs"; //the youtube video ID
//$id = $_GET['id'];
//$format = $_GET['fmt']; //the MIME type of the video. e.g. video/mp4, video/webm, etc.
parse_str(file_get_contents("http://youtube.com/get_video_info?video_id=".$id),$info); //decode the data
$streams = $info['url_encoded_fmt_stream_map']; //the video's location info
$streams = explode(',',$streams);
parse_str(urldecode($streams[0]),$data); //In this example I am downloading only the first video
$url=$data['url'];
$sig=$data['signature'];
unset($data['type']);
unset($data['url']);
unset($data['sig']);
$urlPlay= str_replace('%2C', ',' ,$url.'&'.http_build_query($data).'&signature='.$sig);
echo '<iframe class="youtube-player" type="text/html" width="640" height="385" src="'.$urlPlay.'" allowfullscreen frameborder="0" ></iframe>';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-19 10:09:16