Ich habe folgendes Problem: Ich möchte gerne eine .flv Datei von beispielsweise YouTube downloaden. Das Ganze will ich in cURL realisieren.
Das herausfinden der Adresse zur .flv Datei klappt auch einwandfrei.
So eine Adresse sieht dann z.B. so aus:
http://youtube.com/get_video.php?vid...wSy_tJd7PoeDNQ
wenn ich diese URL im Browser aufrufe, bekommt mein Browser (laut Live HTTP Headers) einen 303 (See Other) HTTP-Statuscode zugesand. Dann werde ich auf diese Adresse weitergeleitet:
http://chi-v187.chi.youtube.com/get_...id=-m7hxzwW0qw
Diese Adresse enthält die eigendliche .flv Datei.
Will ich das ganze jetzt mit cURL aufrufen und automatisch downloaden, so bekommen ich den Fehler:
HTTP/1.1 500 Server Error Content-Length:65 Connection: close Http/1.1 Internal Server Error
Ich will aber, dass cURL, genau wie mein normaler Browser zu der "echten" Downloadadresse weitergeleitet wird und dann den Download startet (auch wenn ich CURLOPT_FOLLOWLOCATION auf true stelle, funtioniert das Ganze nicht).
Hier mein cURL-PHP-Code:
THX schonmal
Das herausfinden der Adresse zur .flv Datei klappt auch einwandfrei.
So eine Adresse sieht dann z.B. so aus:
http://youtube.com/get_video.php?vid...wSy_tJd7PoeDNQ
wenn ich diese URL im Browser aufrufe, bekommt mein Browser (laut Live HTTP Headers) einen 303 (See Other) HTTP-Statuscode zugesand. Dann werde ich auf diese Adresse weitergeleitet:
http://chi-v187.chi.youtube.com/get_...id=-m7hxzwW0qw
Diese Adresse enthält die eigendliche .flv Datei.
Will ich das ganze jetzt mit cURL aufrufen und automatisch downloaden, so bekommen ich den Fehler:
HTTP/1.1 500 Server Error Content-Length:65 Connection: close Http/1.1 Internal Server Error
Ich will aber, dass cURL, genau wie mein normaler Browser zu der "echten" Downloadadresse weitergeleitet wird und dann den Download startet (auch wenn ich CURLOPT_FOLLOWLOCATION auf true stelle, funtioniert das Ganze nicht).
Hier mein cURL-PHP-Code:
PHP:
<?
$url = substr($_POST['vid'], strpos($_POST['vid'], "v=") + 2); //Video-Id extrahieren
$fp = curl_init("http://www.youtube.com/v/" .$url); //zurückgesendeten Header der fullscrenansicht
curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($fp, CURLOPT_TIMEOUT, 10);
curl_setopt($fp, CURLOPT_FAILONERROR, 1);
curl_setopt($fp, CURLOPT_HEADER, 1);
$ausgabe = curl_exec($fp);
$vid_id = substr($ausgabe, strpos($ausgabe, "t=") + 2); //Get vaiable t extrahieren
$vid_id = substr($vid_id, 0, strpos($vid_id, "Transfer-"));
/*
::HIER LIEGT DER FEHLER!!!::
*/
$ch = curl_init("http://youtube.com/get_video.php?video_id=" .$url ."&t=" .$vid_id); //url zur .flv datei zusammenbauen und aufrufen
$fp = fopen ('vid.flv', 'w+');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
THX schonmal