Entwickler-Ecke

Internet / Netzwerk - Wie funktioniert ein Youtube Downloader


Dude566 - Mo 07.09.09 18:14
Titel: Wie funktioniert ein Youtube Downloader
Ich würde gerne eine art Youtube Downloader programmieren doch habe keinerlei Ahnung wie ein solcher funktioniert und wie er an die Flashdatei kommt.

Daher hoffe ich das ihr mir weiterhelfen könnt.

Gruß Dude566


SAiBOT - Mo 07.09.09 18:23

Das gabs schon mal [http://www.delphi-forum.de/viewtopic.php?p=522223#522223]


Jakob_Ullmann - Mo 07.09.09 18:23

Ich würde mal vermuten, genauso wie ein Browser. Ich schätze, dazu musst du den entsprechenden object-Tag filtern und analysieren.

EDIT: Mist, da war einer schneller. :P


IceBube - Mo 07.09.09 18:31

user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
Das gabs schon mal [http://www.delphi-forum.de/viewtopic.php?p=522223#522223]


Funktioniert aber nicht mehr (=veraltet), Youtube hat das schon seit einiger Zeit geändert...wie nun fortzugehen ist um zum Downloadlink zu kommen erkläre ich hier...

(Im letzten Post von mir!)
http://www.delphipraxis.net/topic135809.html&postdays=0&postorder=asc&highlight=youtube&start=45

lg


Yogu - Mo 07.09.09 19:11

Ein bisschen Werbung für meinen Forenhoster kann nie schaden: ClipCatcher [http://www.entwickler-ecke.de/viewtopic.php?t=83555&highlight=clipcatcher] von user profile iconMDX. Vielleicht kannst du den ja fragen, wie er vorgegangen ist.


Tilo - Mo 07.09.09 19:55

Ich würd den Tempörären Ordner des jeweiligen Browsers überwachen.
YouTube Videos sind flv-Dateien. Einfach aus dem Ordner herauskopieren und die Dateiendung anhängen.


Dude566 - Mo 07.09.09 20:25

user profile iconTilo hat folgendes geschrieben Zum zitierten Posting springen:
Ich würd den Tempörären Ordner des jeweiligen Browsers überwachen.
YouTube Videos sind flv-Dateien. Einfach aus dem Ordner herauskopieren und die Dateiendung anhängen.


Die Methode würde ich bevorzugen, da ich so auch Videos von anderen Seiten wie MyVideo oder andere mit Flashvideos downloaden kann.

Nur wo ist der Temp Ordner für Firefox unter Vista, in XP weis ich wo er zufinden ist.

Edit:

user profile iconIceBube hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconSAiBOT hat folgendes geschrieben Zum zitierten Posting springen:
Das gabs schon mal [http://www.delphi-forum.de/viewtopic.php?p=522223#522223]


Funktioniert aber nicht mehr (=veraltet), Youtube hat das schon seit einiger Zeit geändert...wie nun fortzugehen ist um zum Downloadlink zu kommen erkläre ich hier...

(Im letzten Post von mir!)
http://www.delphipraxis.net/topic135809.html&postdays=0&postorder=asc&highlight=youtube&start=45

lg


Du hast dort garkeinen Post. :nixweiss:


IceBube - Mo 07.09.09 20:44

Doch ich hab da einen Post...komisch :hm:

Hier der Post als Zitat

Zitat:

Hallo!

Bei YouTube hat sich der Downloadlink geändert und da ein paar wissen wollten wie man zu dem Link nun kommt, dachte ich zeig es euch...

Der Download-Link sieht so aus:
Zitat:
http://www.youtube.com/get_video?video_id=ID&t=Signatur


ID:
Hier muss die ID des YouTube Clips stehen, diese findet ihr in der Adresse des YouTube Clips:

Hier ein Beispiel (Das Fett geschriebene ist hier die ID!)
Zitat:

http://www.youtube.com/watch?v=PzpyLaLWfHk&feature=related


So nun haben wir die ID, das schaut nun so aus:
Zitat:
http://www.youtube.com/get_video?video_id=PzpyLaLWfHk&t=Signatur


Signatur:
Jetzt brauchen wir nur noch die Signatur, diese findet man im Quelltext der Youtube-Clip-Seite!
(Tipp: Sucht im Quelltext nach "swfArgs" weiter unten seht ihr dann "t": - daneben steht die Sigantur!)

Die wäre dann in dem Fall:
OEgsToPDskJ7QNeqp2fDT7L-n_XHoeC9

Nun haben wir alles was wir benötigen, der Downloadlinke zur "Flv Datei" schaut nun so aus:
http://www.youtube.com/get_video?vide ... =OEgsToPDskJ7QNeqp2fDT7L-n_XHoeC9

So weit so gut, will man jedoch das Video als "Mp4 Datei" herunterladen hängt man nun am Ende des Downloadlinks dieses dazu "&fmt=18"

Der Downloadlink der "Mp4 Datei" schaut nun so aus:
http://www.youtube.com/get_video?vide ... J7QNeqp2fDT7L-n_XHoeC9&fmt=18

Ich hoffe jeder hats verstanden, und einigen hilft es Smile

Sollten Hä? Wie jetzt? auftauchen dann nur her damit! Mr. Green

lg


Dude566 - Mo 07.09.09 20:56

Du hast recht, habe aus versehen dich mit einem deiner Vorposter verwechselt.

Edit : Ich kann das t: nicht finden im Quelltext.


IceBube - Di 08.09.09 15:23

Du musst nach "t": suchen!

lg

Edit:
Hat sich anscheinend bei Youtube geändert...


Dude566 - Di 08.09.09 15:34

Mmmmh ok also kann ich die Variante vergessen...

Aber wo werden denn nun unter Vista die flv Dateien etc abgespeichert, den Temp Ordner von Firefox finde ich nicht.


Jakob_Ullmann - Di 08.09.09 16:04

Ich würde mal sagen, irgendwo. An einem beliebigen Ort...


Dude566 - Di 08.09.09 17:30

Jaaa das bringt mich natürlich um Längen weiter. :roll:

Ne mal im ernst wo kann ich die denn finden?


Yogu - Di 08.09.09 17:34

Suche bei Google FIREFOX CACHE :roll:


IceBube - Di 08.09.09 17:35

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Mmmmh ok also kann ich die Variante vergessen...

Wieso die Variante vergessen? Sie funktioniert doch, du hast nur nach dem Falschen gesucht!



lg

user profile iconIceBube hat folgendes geschrieben Zum zitierten Posting springen:

Edit:
Hat sich anscheinend bei Youtube geändert...


Mit dem meinte ich ja nur dass sich "t:" nach " "t": " geändert hat...


Jakob_Ullmann - Di 08.09.09 17:37

Dachte erst, du fragst, wo du die Dateien abspeichern kannst. Wenn du jetzt wissen willst, wo Firefox das abspeichert, wirst du wohl etwas differenzieren müssen, weil ja der Temp-Ordner soweit ich weiß verändert werden kann. Standardmäßig ist das aber:

C:\Users\NUTZERNAME\AppData\Local\Temp

zumindest für Bilder.

EDIT: Also %appdata%\Local\Temp


Dude566 - Di 08.09.09 17:44

Ach an Googlen habe ich ja garnicht gedacht. :roll: :gruebel: Ach ne habe ich ja doch! :think:

Habe auch schon diese Pfadangaben gesehen wie etwa:
C:\Users\HansDieter\AppData\Local\Mozilla\Firefox\Profiles\dma6ltjd.default

doch darin erscheint keine flv Datei wenn ich aber eigentlich gerade ein Video vollständig geladen im Browser offen habe. :nixweiss:

Edit: Der Post is an Yogu gerichtet.


IceBube - Di 08.09.09 17:46

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Ach an Googlen habe ich ja garnicht gedacht. :roll: :gruebel: Ach ne habe ich ja doch! :think:

Habe auch schon diese Pfadangaben gesehen wie etwa:
C:UsersHansDieterAppDataLocalMozillaFirefoxProfilesdma6ltjd.default

doch darin erscheint keine flv Datei wenn ich aber eigentlich gerade ein Video vollständig geladen im Browser offen habe. :nixweiss:


Unter Vista werden die Clips wie von user profile iconJakob_Ullmann erwähnt im "C:\Users\NUTZERNAME\AppData\Local\Temp" gespeichert!

Jedoch unter der Dateierweiterung ".tmp"

lg


Dude566 - Di 08.09.09 17:51

Ah ok und wie kann ich dann an die eigentlichen flv Dateien kommen, und wie kann ich diese voneinander unterscheiden da man dort ja mehrere hat.

Oder soll das jetzt heisen das mir dort das OS jetzt einen Strich durch die Rechnung macht?


Yogu - Di 08.09.09 17:56

FirefoxWiki [http://www.firefox-browser.de/wiki/Cache]:
Im Cache werden alle Dateien gespeichert, welche der Firefox von Seiten erhält. Es gibt einen Festplattencache, welcher sich bei älteren Versionen im Profilordner [http://www.firefox-browser.de/wiki/Profilordner] befindet. Seit Firefox 1.5 liegt der Cache-Ordner unter:


Quelltext
1:
%USERPROFILE%\Lokale Einstellungen\Anwendungsdaten\Mozilla\Firefox\Profiles\<Profilname>\Cache                    

Dort befinden sich bei mir (Windows XP) einige Dateien, jedoch ohne Endung. Im Editor sieht man aber, dass dort sowohl HTML-Dateien als auch Bilder rumliegen - also sicherlich auch Videos.

Ich kann mir aber vorstellen, dass der Browser das Video gar nicht komplett speichert. Youtube benutzt einen Flash-Player, der die FLV avspielt.

Suche bei Google ADOBE FLASH CACHE: Adobe Flash Videos aus dem Cache ziehen? - PC-WELT - FORUM: [http://www.pcwelt.de/forum/software-allgemein/294998-adobe-flash-videos-cache-ziehen.html]


Dude566 - Di 08.09.09 18:17

Zitat:
Im Cache-Ordner von Firefox sind die Dateibezeichnungen doch codiert. Da muss man sich eben die größten rauskopieren, solange Firefox noch aktiv ist. Und dann die Datei(en) mit der Endung versehen. Trifft man die richtige Datei, läuft das Video.
Gruß Eljot
Mit Zitat antworten


Und das soll funktionieren, das glaube ich nicht so recht.


Tilo - Di 08.09.09 19:39

user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Im Cache-Ordner von Firefox sind die Dateibezeichnungen doch codiert. Da muss man sich eben die größten rauskopieren, solange Firefox noch aktiv ist. Und dann die Datei(en) mit der Endung versehen. Trifft man die richtige Datei, läuft das Video.
Gruß Eljot
Mit Zitat antworten


Und das soll funktionieren, das glaube ich nicht so recht.


Probier es einfach mal aus!
Wichtig dabei ist, dass der Cahe nicht voll ist da sonst nicht gespeichert wird. (einfach vorher leeren)

a) CacheOrdner öffnen
b) das Video im Browser laden
c) Cache beobachten, welche Datei stetig größer wird
d) sobald diese Datei nicht mehr wächst, in ein beliebiges Verzeichniss kopieren (nicht verschieben! das klappt nicht)
e) der Datei einen besseren Namen, sowie passende Endung verpassen.

Natürlich muss der Rechner die Entsprechenden Codes kennen. Für Flv-Dateien einfach einen entsprechenden Player installieren.


Dude566 - Di 08.09.09 20:00

Ok ich habe den VLC Player drauf der ja auch flv Dateien abspielt also müsste es funktionieren, jetzt muss ich mir nur noch überlegen wie ich das ganze mit einem Programm realisieren kann das dieses auf die wachsende Größe schaut und dann auch herauskopiert inkl neuer Dateiendung.

Edit: Nur blöd das ich während das Video im Browser noch aktiv ist ich es nicht kopieren kann, und wenn ich den Tab schließe verschwindet natürlich auch wieder die temporäre Datei. :?


IceBube - Di 08.09.09 21:33

Hat die Datei von Youtube, im Temp, nicht den Namen von der id des Clips??

Leichter ist eindeutig meine Methode, bei dieser kann man auch die hq Clips im mp4 format herunterladen...

Lg


martin300 - Mi 09.09.09 09:49

@IceB. : Ist das Programm schon fertig, oder noch nicht umgesetzt? Wenns fertig ist würde es mich interessieren.


IceBube - Mi 09.09.09 15:18

user profile iconmartin300 hat folgendes geschrieben Zum zitierten Posting springen:
@IceB. : Ist das Programm schon fertig, oder noch nicht umgesetzt? Wenns fertig ist würde es mich interessieren.

Welches Programm? Ich hab nur versucht user profile iconDude566 zu erklären wie man Youtube Clips herunterladet!

lg


Dude566 - Mi 09.09.09 15:54

Also IceBube deine Variante ist die wahrscheinlich beste jedoch möchte ich nicht nur Videos von YouTube herunterladen sondern auch von anderen Plattformen.

Also habe ich nun das Problem das ich die Datei im Temp Ordner während sie verwendet wird ich sie nicht kopieren kann.


Tilo - Mi 09.09.09 20:53

alle YouTube ähnlich Plattformen arbeiten nach einem ähnlichen Prinzip.

Schwierig wird es, wenn keine temporäre Speicherug im Dateisystem erfolgt.
Fies wäre auch die Nutzung von ADS [http://de.wikipedia.org/wiki/Alternate_Data_Streams].

ich halb mal mit Hilfe von Firefox gesucht und hier einen Händischen Weg gefunden:
Die entsprechende FLV-Datei im Cache findest Du so:
a) URL des Videos auf Youtube merken.
b) Nach dieser URl in "about:cache?device=disk" (Im FireFox eingeben! -> Keine Ahnung wie das per externem Program geht)
c) Dadurch findet man dann einen link der wie folgt aufgebaut ist: about:cache-entry?client=HTTP&sb=1&key=[URL-YouTube-Video]
d) Diese Adresse führt zu einer Seite die solch einen Eintrag enthält:

Quelltext
1:
2:
file on disk:
C:\Dokumente und Einstellungen\[Pfad]\Anwendungsdaten\Mozilla\Firefox\Profiles\wi4ptq7f.default\Cache\7ECADA51d01


Diese Datei beobachten und dann wenn sie nicht mehr wächst rauskopieren.

Ich such mal das ganze für den IE raus (-> TWebBrowser dürfte dann die Wahl sein)


Yogu - Mi 09.09.09 21:15

user profile iconTilo hat folgendes geschrieben Zum zitierten Posting springen:
b) Nach dieser URl in "about:cache?device=disk" (Im FireFox eingeben! -> Keine Ahnung wie das per externem Program geht)

Den Schritt kannst du dir wohl sparen - der Link ist ja recht regelmäßig aufgebaut, wie du selbst schon geschrieben hast:

user profile iconTilo hat folgendes geschrieben Zum zitierten Posting springen:
about:cache-entry?client=HTTP&sb=1&key=[URL-YouTube-Video]


Dude566 - Mi 09.09.09 21:34

Das mag alles gut und schön sein aber ich kann die Datei während des Zugriffs leider nicht kopieren und dies ist ja mein Hauptproblem.


IceBube - Fr 11.09.09 16:44

Ich würd die Variante, mit dem Kopieren aus dem Temp nicht empfehlen weil
* Du musst warten bis es heruntergeladen worden ist - das erschwert das programmieren deines Programmes
* Das Video finden unter den ganzen anderen Dateien
* Umständlich

Die meiner Meinung beste Variante wäre, den Downloadlink der anderen Hoster(myvideo,...) herauszufinden, um den Clip direkt von dem Server herunterzuladen!

Von Youtube weißt du es ja schon, als nächstes schaust du dir z.b. myvideo an...

Geh auf http://2video.de/ gib einen BeispielClip von myvideo ein...

z.b: Irgend ein Clip von MyVideo
http://www.myvideo.at/watch/3849435

Downloadlink bei 2video.de für den oben geschriebenen Clip
http://is3.myvideo.de/at/movie8/3e/3849435.flv

So nun sieht man, dass man für den Downloadlink die ID des Videos benötigt und noch andere Sachen, diese findet man womöglich in dem Quelltext von der Clip-Seite auf myVideo heraus?!

lg

Edit:
Such im Quelltext nach:
http://is1.myvideo.de/at/

Das fettgeschriebene wird benötigt!
rel='image_src' href='http://is1.myvideo.de/at/movie14/8b/thumbs/6158250_1.jpg'

Nun brauchen wir nur noch die ID des Videos einfügen (Frag mich bitte nicht wo du die ID findest!) + .Flv anhängen
http://is1.myvideo.de/at/movie14/8b/6158250.flv

Fertig!