Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi downloade Funktioniert nicht (https://www.delphipraxis.net/137052-downloade-funktioniert-nicht.html)

IIIMADDINIII 13. Jul 2009 12:13


downloade Funktioniert nicht
 
hallo

ich versuche mit hilfe von der indy komponente idhttp ein youtube video zu downloaden.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  stream: TFileStream;
  text: string;
begin
  if savedialog1.Execute = true then
  begin
  stream := TFilestream.create(savedialog1.FileName ,fmCreate or fmShareDenyWrite);
  text := idhttp1.Get(Edit1.Text);
  text := 'http://www.youtube.com/get_video?video_id=' + copy(text, pos('"video_id": "', text) + 13, 11) + '&t==' + copy(text, pos('"t": "', text) + 6, 44);
  idhttp1.Get(text, stream);
  stream.Free;
  end;
end;
das hir war mein code.
die url funkitioniert in firefox und im TWebbrowser von delphi.
im workbegin von idhttp habe ich das progressbar.max gesetzt
und im work setze ich die position der progressbar.

erstaunlich find ich das das progressbar mehrmals (als 2) hin und her sprinkt.
er lauft den weg nicht richtig ab.

dann erstellt das programm die datei aber sie ist 0 byte groß. und das programm bleibt hänngen.
ich verzweifle wo liegt der fehler.

ich bitte um antworten

himitsu 13. Jul 2009 12:16

Re: downloade Funktioniert nicht
 
Der Fehler liegt darin, daß wer eine Datei versucht runterzuladen, wobei Youtube gleichzeitig versucht dieses zu verhindern. :roll:

Schau doch einfach mal bei den paar anderen Youtube-Downloadern hier im Forum nach, wie die es machen.

Andreas L. 13. Jul 2009 12:19

Re: downloade Funktioniert nicht
 
Zitat:

Zitat von himitsu
Der Fehler liegt darin, daß wer eine Datei versucht runterzuladen, wobei Youtube gleichzeitig versucht dieses zu verhindern. :roll:

Vermutung: Setze einen UserAgent wie z. B. Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)

IIIMADDINIII 13. Jul 2009 12:22

Re: downloade Funktioniert nicht
 
frage
warum funktioniert es wenn ich statt dem downloade den webbrowser die url übergebe

himitsu 13. Jul 2009 12:45

Re: downloade Funktioniert nicht
 
Zitat:

Zitat von IIIMADDINIII
frage
warum funktioniert es wenn ich statt dem downloade den webbrowser die url übergebe

Erwähnte ich doch schon ... Youtube hat es nicht gern, wenn man deren Werbung umgeht und etwas direkt runterläd, drum haben die einige Prüfungen/Hindernisse eingebaut.

IIIMADDINIII 13. Jul 2009 13:06

Re: downloade Funktioniert nicht
 
der useragent war schon auf den firefox gesetzt also hat sich nichts am problem geändert.

WorstNightmare 13. Jul 2009 13:09

Re: downloade Funktioniert nicht
 
Ist HandleRedirects auf True gesetzt?

himitsu 13. Jul 2009 13:10

Re: downloade Funktioniert nicht
 
Dann schau doch mal in die anderen Youtubedownloader rein,
denn viele hier und auch ich wissen nicht, was man da alles machen muß, damit man an die Dateien rankommt,
aber die, welche es geschafft haben, wissen es vermutlich und bei einigen sind die Quellcodes auch mit dabei.

IIIMADDINIII 13. Jul 2009 15:39

Re: downloade Funktioniert nicht
 
ja das HandleRedirects steht auf true
und ich weiß auch was ich alles in die url übergeben muss(wie oben schon geschrieben (mit TWebbrowser funkt es) dennerts?)
deshalb frag ich mich ja auch was daran faltsch ist
kann es villeicht an der kooperation zwischen dem stream und idhttp????????????????

Stormy 13. Jul 2009 15:44

Re: downloade Funktioniert nicht
 
Hi,

alternativ könntest du über einen Online-Service wie http://vixy.net/ gehen.


Gruß
Stormy

IIIMADDINIII 13. Jul 2009 15:54

Re: downloade Funktioniert nicht
 
ne sowas wollte ich eigentlich nicht
gibt es nicht noch andere möglichkeiten dateien zu downloaden

Stormy 13. Jul 2009 16:07

Re: downloade Funktioniert nicht
 
Gibt viele möglichkeiten zum Beispiel über Kommandozeile mit WGet. Das könntest du dann über Parameter aus deinem Programm aufrufen. Aber was hast du gegen die Online-Service? Es gibt auch einen Vorteil wenn du darüber fährst. Wenn Youtube mal etwas am Code verändert dann läuft dein Programm immernoch da er über den externen Dienst läd welcher ja recht schnell angepasst werden sollte. Du kannst auch mehrere Dienste der Reihe nach abfragen und somit Verfügbarkeit garantieren. Ausserdem bieten die Dienste auch das Umwandeln in andere Formate an was du somit auch in deinem Programm zur Verfügung hättest.


Gruß
Stormy

Stormy 13. Jul 2009 16:18

Re: downloade Funktioniert nicht
 
So sieht übrigens ein Link aus den so ein Online-Dienst extrahiert:
http://tc.v1.cache.googlevideo.com/v...ounter=1&tt=EC

IIIMADDINIII 13. Jul 2009 16:45

Re: downloade Funktioniert nicht
 
ich kenne die nur so:
http://www.youtube.com/get_video?vid...t0zhQK0KOYTrs=

Stormy 13. Jul 2009 16:47

Re: downloade Funktioniert nicht
 
Versuche es doch mal ob es mit dem Link von mir klappt über die Indys zu downloaden.


Gruß
Stormy

IIIMADDINIII 13. Jul 2009 16:51

Re: downloade Funktioniert nicht
 
wie erstellst du den denn aus einer youtube viedeoviewside diese url???

ich weiß auch das das mit meinem link geht nur irgend was reibt sich im programm.

Stormy 14. Jul 2009 12:42

Re: downloade Funktioniert nicht
 
Der Link wird von den YouTube downloadern so erstellt. Geht es denn mit dem Link bzw hast du es mal versucht?


Gruß
Stormy

Larsi 14. Jul 2009 13:18

Re: downloade Funktioniert nicht
 
Die Redirects kann man doch auch einstellen, oder? Nimm mal einen Wert wie 15.

IIIMADDINIII 14. Jul 2009 13:31

Re: downloade Funktioniert nicht
 
ja der link wirt von den joutube downoadern GENERIERT aber wie ist die frage??
wenn ich nicht weiß wei ich den generiere kann ich es auch nicht ausprobieren.

Stormy 14. Jul 2009 13:46

Re: downloade Funktioniert nicht
 
Du sollst ja erstmal mit dem Link von mir versuchen ob es überhaupt damit geht.
Also einfach mal den Link mit den Indys laden und testen. Wenns nicht geht dann ist ja auch egal wie
der generiert wird.


Gruß
Stormy

Larsi 14. Jul 2009 13:49

Re: downloade Funktioniert nicht
 
Die Id ist aber nicht konstant. Das heißt, dass wenn die Id bei dir funktioniert muss sie nicht bei jedem funktionieren, oder?

Stormy 14. Jul 2009 14:07

Re: downloade Funktioniert nicht
 
Welche ID? Wenn du die ID im Link meinst die hat nix zu sagen sprich der Link geht bei jedem.

IIIMADDINIII 15. Jul 2009 00:04

Re: downloade Funktioniert nicht
 
der link funkitioniert bei jedem der im benutzt solange er noch aktuall ist. wenn der eine die url einfach in die adressbar einfügen kann kann das jeder so.
dieser link funkitionirt auch mit idhttp zu downloaden.
was ich persönlich interresant finde ist dass meine url auf einen ähnlichen link wie der von Stormy aus (habe nur den den anfang gesehen als ich auf den downloade fenster vom ie gegugt habe). das heißt mein link verweißt irgend wie auf deinen. deshalp hat der link varscheinlich von meiner url nicht funkitioniert. aber wie???

Stormy 15. Jul 2009 08:32

Re: downloade Funktioniert nicht
 
Moin,

die downloader extrahieren das denke ich mal auch alle nur aus dem Quelltext der Seite (in Firefox STRG+U).
Wenn du z.B. den Link von diesem Video hier haben willst
dann öffne die Seite und lass dir davon den Quelltext anzeigen. Dann such im Quelltext die Zeile "var fullscreenUrl =" (ohne die ""). Hinter dem = siehst du dann einen langen String bzw Link. Suche nun darin den Parameter "video_id=" und kopiere dir den Text von einschließlich "video_id=" bis einschließlich "&title".

Der String sähe dann so aus:
video_id=d7QH62aFBno&l=199&sk=HPk043x9jmgxZekufsEf TqUTAK8iJdujC&ad_logging_flag=1&t=vjVQa1PpcFPFEdm3 LnDOSawgcx4y2X4pj7iGmSl3pq0%3D&vq=None&title

Jetzt fügst du nur noch www.youtube.com/get_video? davor und dein Downloadlink ist fertig.

Der fertige Link sähe dann also so aus:
http://www.youtube.com/get_video?vid...&vq=None&title

Du musst also mit deinem Programm einfach nur den diese Zeile im Quelltext der Youtube-Seite auf dem sich das Video befindet parsen und dann nur noch zusammensetzen - Fertig.


Gruß
Stormy

IIIMADDINIII 15. Jul 2009 18:20

Re: downloade Funktioniert nicht
 
wenn ich den link einfüge bleibt er wieder hängen
wenn ivh den link mit dem title=**** krige ich einen 400 fehler
ich glaube die 400 bedeutet das ein leerzeichen in der url ist.
kann mir bitte jemad zu einen der beiden problemen eine lösung liefern

DANKE

Andreas L. 15. Jul 2009 18:40

Re: downloade Funktioniert nicht
 
Zitat:

Zitat von IIIMADDINIII
wenn ivh den link mit dem title=**** krige ich einen 400 fehler
ich glaube die 400 bedeutet das ein leerzeichen in der url ist.

Zitat:

400 Bad Request

Die Anforderung war syntaktisch falsch oder kann aufgrund anderer Angaben in der Anforderung nicht ausgeführt werden.

Stormy 16. Jul 2009 09:07

Re: downloade Funktioniert nicht
 
Hi,

also bei mir klappt das!
Habe es zwar nicht mit den Indys sondern mit URLDownloadToFile getestet aber damit gehts.

Delphi-Quellcode:
uses UrlMon;

var
  DownloadURL, Destination: String;
begin
  DownloadURL := '...'; //Die extrahierte Youtube URL vom Video
  Destination := 'C:\test.flv'; //Speicherort
  URLDownloadToFile(nil,PChar(DownloadURL),PChar(Destination),0,nil);
end;
Btw. welche Version von den Indys hast du? Wenn du es unbedingt mit den Indys machen willst
dann probier mal eine andere Version ansonsten sollte aber mein Vorschlag reichen.


Gruß
Stormy


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz