Youtube Downloader c++
-
Hallo zusammen,
ich bin zwar noch recht Newbie in C++, aber ich habe mich jetzt mal daran gewagt, einen Youtube-Downloader zu schreiben.Funktionieren tut:
Die Abfrage mit Get_video?. Ich extrahiere auch erfolgreich die URL.
Soweit gut. Das Video liegt (nach der Url) auf einem Server wie:
http://o-o.preferred.fra02s03.v6.lscache5.c.youtube.com
Wenn ich mich nun auf diesesn verbinde, klappt das auch. Wenn ich jetzt aber die GET-Anfrage schreibe, dann kommt nur eine 302 Found mit einer URL zurück, die wirklich nicht geht.Die URL lasse ich mir in eine Datei schreiben. Wenn ich diese nun mit Opera oder Mozilla Firefox (letzterer mit HttpFox) öffne, kann ich das Video herunterladen. Was mach ich falsch?
Das ist die GET:
sprintf(buf3,"GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0 ( .NET CLR 3.5.30729; .NET4.0E)\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\nCookie: %s; PREF=f1=50000000&fv=10.3.183\r\n\r\n",Video_ID,Host,cookie);
Antwort dann:
HTTP/1.1 302 Found Location: http://o-o.preferred.fra02s03.v6.lscache5.o-o.preferred.fra02s03.v6.lscache5.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&fexp=904516%2C901700&itag=43&ip=87.0.0.0&signature=9AA12B28AFF81A77F66D1684FC245E7D7E35E873.C1F52D230D9341B31E5297E7604A3C60E669ACB6&sver=3&ratebypass=yes&expire=1317330000&key=yt1&ipbits=8&cp=U0hQTFNOTl9FSkNOMF9LSFJBOk1FRnBjNmE5ME5j&id=11635bee3e09b834&cms_redirect=yes Date: Thu, 29 Sep 2011 14:56:45 GMT Content-Type: text/html; charset=UTF-8 Server: ClientMapServer Content-Length: 679 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://o-o.preferred.fra02s03.v6.lscache5.o-o.preferred.fra02s03.v6.lscache5.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&fexp=904516%2C901700&itag=43&ip=87.0.0.0&signature=9AA12B28AFF81A77F66D1684FC245E7D7E35E873.C1F52D230D9341B31E5297E7604A3C60E669ACB6&sver=3&ratebypass=yes&expire=1317330000&key=yt1&ipbits=8&cp=U0hQTFNOTl9FSkNOMF9LSFJBOk1FRnBjNmE5ME5j&id=11635bee3e09b834&cms_redirect=yes">here</A>. </BODY></HTML>
Die URL, die in Opera/Mozilla Firefox funktioniert:
[url]
http://o-o.preferred.fra02s03.v6.lscache5.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&fexp=910703%2C900505%2C902314&itag=43&ip=87.0.0.0&signature=CBABC2CAE884069A96144BEAA72712E1A6234AE9.6BA37F2D2C1365642D686D1ABECF1E11563DABE7&sver=3&ratebypass=yes&expire=1317333600&key=yt1&ipbits=8&cp=U0hQTFNOUV9FSkNOMF9LSFVHOmNBendDT0dJVElV&id=11635bee3e09b834
[/url]Hat irgendjemand, irgendeine Idee, was da so falsch ist. Ich arbeite da jetzt seit zwei Stunden nur an diesem blöden GET. Meine anderen funktionieren alle super. (mit Youtube und so)
Vielen Dank schon mal.
Ich hoffe, dass das hier das richtige Forum ist, aber es erschien mir am passendsten.
freddyv.95
-
Du musst doch nur dem Link in dem 302 Dokument folgen um dein Ziel zu erreichen. Das machen die Browser wahrscheinlich ebenso.
Edit: Tippfelher
-
Das hab ich auch schon versucht. Als htm gespeichert und mit Opera geöffnet. Dann kam der DNS error auf der Telekomseite.
-
kann es sein, dass die aufgerufene URL zwei mal
o-o.preferred.fra02s03.v6.lscache5
enthält?!
Wos hin soll:
http://o-o.preferred.fra02s03.v6.lscache5.c.youtube.com
Wos hinkommt (Laut 302 Error):
http://o-o.preferred.fra02s03.v6.lscache5.[b]o-o.preferred.fra02s03.v6.lscache5.[/b]c.youtube.com
Warum das so ist kann ich nicht sagen. Es könnte evtl. sein, dass in sprintf was zu viel drangehangen wird.
-
Danke erstmal. Werde ich morgen überprüfen. Aber wieso funktioniert dann die Ip-Auflösung??
Also in der Datei, wo die gesamte URL drinsteht, stimmts noch. Aber ich werde das überprüfen.
-
Habe ,mir jetzt alle Ausgaben in eine Datei schreiben lassen.
Host:
o-o.preferred.fra02s03.v6.lscache5.c.youtube.comGet-Request:
GET /videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&fexp=904532%2C905244%2C903115%2C911614&itag=43&ip=87.0.0.0&signature=245064EF81397F9E2D329888C469850E4A3BD5B0.153DE0EAE346F0D90AFA8577A87828BF8B2A8956&sver=3&ratebypass=yes&expire=1317402000&key=yt1&ipbits=8&cp=U0hQTFRLUF9FSkNOMF9MRVRBOjJlRlY1Rks1bk5N&id=11635bee3e09b834 HTTP/1.1
Host: o-o.preferred.fra02s03.v6.lscache5.c.youtube.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0 ( .NET CLR 3.5.30729; .NET4.0E)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: VISITOR_INFO1_LIVE=4hGY0FO5rRQ; PREF=f1=50000000&fv=10.3.183Die Antwort ist aber immer noch die Alte.