AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Indy Head Probleme

Ein Thema von blink182 · begonnen am 23. Feb 2009 · letzter Beitrag vom 26. Feb 2009
Antwort Antwort
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#1

Indy Head Probleme

  Alt 23. Feb 2009, 15:21
Hiho zusammen,
hab mir den Code aus der Code-Lib für den Download mit Indy und der Fortschrittsanzeige geholt http://www.delphipraxis.net/internal...ct.php?t=56872 und möchte nun damit ein Youtube-Video runterladen.
Den Link hol ich hiermit: http://www.delphi-forum.de/viewtopic...0a3220ee5c7fad. Lass nur den Link als Result ausgeben ohne nie runterzuladen.

An dem Code aus der Code-Lib
Delphi-Quellcode:
  Status.Caption := 'Prüfe Header';
  // Durch die zwei nächsten Befehle wird die Größe ermittelt und ihn der Variable BytesInsgesamt abgespeichert
  IdHTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
  IdHttp.HandleRedirects:=true;
  IdHTTP.Head(Edit1.text);
hab ich noch was kleines geändert. Aber jedesmal kommt ein "Read Timeout", da die URL nicht die direkte URL zu dem Video ist sondern eine Weiterleitung.
Bsp: http://www.youtube.com/watch?v=-xEzGIuY7kw -> http://de.youtube.com/get_video?vide...blwwa2-_4Cw7c= -> http://v12.cache.googlevideo.com/get...y=yt1&ipbits=0

Der 2. Link wird im IdHttp.Head abgefragt, da kommt es dann aber zu dem besagten Error. Wenn ich den 3. Link eingebe funktioniert das Runterladen. Hat jmd eine Idee wenn ich an die URL komme, bzw das HandleRedirects auch Head beeinflusst?
MfG blink182
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Indy Head Probleme

  Alt 23. Feb 2009, 15:26
Hi!

Bist du sicher, dass es nicht ein Problem mit YouTube ist? (Also ein Schutzmechanismus z.B.)

In dem Thread hier, solltest du vllt. Infos finden - da waren auch so Sachen mit Signatur u.ä., was Youtube mittlerweile so eingeführt hat:
http://www.delphipraxis.net/internal...t.php?t=135809


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#3

Re: Indy Head Probleme

  Alt 23. Feb 2009, 15:30
ne das klappt ja eigentlich mit dem Runterladen. Wenn ich es ohne die Downloadanzeige mache, wird das Video auch geladen. Aber ich werd mal schauen, danke.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: Indy Head Probleme

  Alt 23. Feb 2009, 15:33
Hi!

Also du hast einen funktionierenden Download, aber ohne Indy oder wie?
Und du willst nur die Fortschrittsanzeige einbinden?


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#5

Re: Indy Head Probleme

  Alt 23. Feb 2009, 15:36
mit Indy funktioniert der download an sich.

Zitat von http://www.delphi-forum.de/viewtopic.php?p=550387&sid=3da0da5060469fb20b0a322 0ee5c7fad:
Delphi-Quellcode:
procedure GetYoutubeDownloadURL(URL: string);
var
  HTTP: TIdHTTP;
  Quelltext: string;
  VideoID: string;
  T: string;
  Pos1: integer;
begin
  HTTP := TIdHTTP.Create(nil);
  HTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
  Http.HandleRedirects:=true;
  Quelltext := HTTP.Get(URL);
  //Titel herausfiltern
// Download.Titel := Copy(Quelltext,Pos('<title>',Quelltext)+7,Pos('</title>', Quelltext)-Pos('<title>', Quelltext)-7);
  //VideoID herausfiltern
  VideoID := Copy(Quelltext,Pos('video_id', Quelltext)+12,Pos('video_id', Quelltext)+0-Pos('video_id', Quelltext)+11);
  //T herausfiltern
  Pos1 := Pos('"t": "', Quelltext)+6;
  T := Copy(Quelltext, Pos1,PosEx('"',Quelltext,Pos1+1)-Pos1);

  try
    HTTP.Get('http://de.youtube.com/get_video?video_id='+VideoID+'&t='+T);
  except

  end;

// Download.URL := HTTP.Response.Location;

  HTTP.Free;
end;
so klappt es z.b.
ja und ich möchte eigentlich nur die Fortschrittsanzeige einbinden.
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#6

Re: Indy Head Probleme

  Alt 26. Feb 2009, 16:22
*push*
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: Indy Head Probleme

  Alt 26. Feb 2009, 16:43
Hallo,

für den Fortschritt kannst Du doch OnStatus, OnWorkBegin, OnWork und OnWorkEnd benutzen. Habe mal eben was zusammengedaddelt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Screen.Cursor := crHourGlass;
  Memo1.Lines.Clear;
  IdHTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
  IdHttp.HandleRedirects := True;
  IdHTTP.Head(Edit1.text);
  IdHTTP.Get(Edit1.text);
  IdHTTP.Disconnect;
  Screen.Cursor := crDefault;
end;

procedure TForm1.IdHTTPStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String);
begin
  Statusbar1.SimpleText := AStatusText;
  Memo1.Lines.Add(AStatusText);
end;

procedure TForm1.IdHTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
  ProgressBar1.Max := AWorkCountMax;
  Memo1.Lines.Add('WorkBegin: WorkCountMax: ' + IntToStr(AWorkCountMax));
end;

procedure TForm1.IdHTTPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
  ProgressBar1.Position := AWorkCount;
  Memo1.Lines.Add('WorkCount: ' + IntToStr(AWorkCount));
end;

procedure TForm1.IdHTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  Memo1.Lines.Add('WorkEnd:');
  Statusbar1.SimpleText := 'Habe fertig';
end;
In der Progressbar sieht man schön den Balken laufen.
[edit]hat Schreibfehler gefunden[/edit]
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#8

Re: Indy Head Probleme

  Alt 26. Feb 2009, 17:12
mhm okay danke. Mich wundert nur, warum er 2 mal versucht eine Verbindung aufzubauen, auch wenn ich die Head-Abfrage rausgenommen hab. Aber es scheint so zu klappen. Mein eigentliches Problem ist jedoch noch nicht gelöst.

Es geht mir darum, dass ich bei den IdHttp.Head(Edit1.text); einen Fehler bekomme, da es zu einem Timeout-Error kommt.
Diesen Error bekomm ich da ich eine URL eingebe, die wohl weitergeleitet wird. Da es um Youtube-Videos geht, erhalte ich also nur die Weiterleitungsurl aus dem Video http://de.youtube.com/get_video?vide...blwwa2-_4Cw7c= . Da ich aber für die Abfrage diese http://v12.cache.googlevideo.com/get...y=yt1&ipbits=0 URL benötige, diese mir aber nicht bekannt ist. Diese wird wohl temporär erzeugt. Um somit an die Header-Informationen zu kommen bräuchte ich ein IdHttp.HandleRedirected:=true für IdHttp.Head(Edit1.text); . Das runterladen über die noch nicht weitergeleitete URL funktioniert durch das HandleRedirected.
Was ich mir als Alternative vorstellen könnte wie man das lösen kann, was aber glaub ich unschön ist, ggf. über TWebbrowser oder über ein OLE IE und dann die URL aufrufen und wieder abfangen, aber dann lad ich das video ja fast auch schon wieder doppelt und das ist ja auch nicht unbedingt der Sinn. Vllt geht es ja auch einfacher.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Indy Head Probleme

  Alt 26. Feb 2009, 17:44
Ich meine mich zu erinnern, dass die Indys in der Version 9 dieses Problem bei jeder Head-Abfrage haben, sofern der Server HTTP/1.1 spricht. Es liegt also wahrscheinlich nicht an deiner speziellen URL mit dem Redirect.

Also entweder auf die 10-er Indys wechseln oder wirklich einfach ein Get machen und dann die Daten wegwerfen, wenn du sie nicht benötigst, oder schon mal zwischenpuffern.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#10

Re: Indy Head Probleme

  Alt 26. Feb 2009, 17:49
okay danke, dann werd ich wohl auf Indy10 umsteigen und hoffen dass es klappt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 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