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.

Author: akjoshi, 2011-01-05

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.

 16
Author: Cruel,
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;
            }
        }   
    }
?>  
 6
Author: Arschbratze,
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

Http://v2.lscache3.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dYSVZMTl9FSkNNOF9ORlJF&fexp=903816&fexp=903813%2C908400&algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1294610400&key=yt1&signature=9C4D194A7F85F0171771486714D3F061ED2924F6.98D10BB190123CADCA3CDF993174D47F8932895F&factor=1.25&id=10af5a6280e42a28

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

 4
Author: Web-Design Montreal,
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>';
 1
Author: NotFound Life,
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