Hi,
ich habe vor kurzem einen YouTube Download programmiert aber habe keine Lust den zu Releasen oder ihn weiter zu entwickeln. Damit die ganze "Arbeit" nicht umsonst war, habe ich mich entschieden den Sourececode mit ein paar beschreibungen hier zu veröffentlichen.
Dan wollen wir mal anfangen:
Da wir wahrscheinlich nicht einfach nur das Video downloaden möchten, sondern auch ein paar Infos zu den Videos haben möchten (Autor,Titel), fangen wir auch erstmal damit an. Alle Funktionen(Außer die zum Download vom Quelltext) basieren auf RegEx.
Als erstes brauchen wir den Quelltext von dem YouTube Video:
Jetzt haben wir schonmal die vorraussetzung für alle folgenden Schritte.
Titel auslesen:
Diese Funktion liefert uns schonmal den Titel des Videos. Hier mal eine kleine Erläuterung:
Der Titel eines Videos, liegt in diesem Vormat in dem Quelltext der Seite vor:
Da wir den Titel ja nicht wissen, und ihn auslesen wollen, können wir ja nicht im RegEx den Titel schon angeben(wäre auch ohne sinn).
Deswegen schreibt man "(?<Title>(.*))" wobei man "Title" in jedes x-beliebige Wort ändern kann.
Das "(.*)" sagt dem Programm, dass der Text der da stehen sollte (Also der Titel des Videos) x-beliebige zeichen bzw. Zahlen hat. Das brauchen wir,
da wir auch hier nicht wissen wie Lang der Titel ist oder ob er aus Buchstaben und Zahlen besteht.
Zum schluss haben wir noch das "?" am Anfang der Klammer. Das Fragezeichen sagt dem Programm, dass es den Text der da steht in die Speichern soll und zwar
in der Variable, die wir zwischen den "<>" stehen haben(in diesem Fall "Title")
In der Letzteb Zeile des Codes("title = TitleRegEx.Match(httpContent).Groups("Title").ToString") wird eigentlich erst der/das RegEx gestartet.
"httpContent" steht für den Text der nach den oben angegebenen Zeichen durchsucht werden soll. "Title" steht für die Variable in der der Text gespeichert wurde(wie oben genannt). Wenn wir beim RegEx deklarieren anstatt "Title", "test" geschreiben hätten, müssten wir also auch hier "Title" in "test" ändern.
Autor auslesen:
Die gleiche Erläuterung wie beim Titel. In diesem Fall liegt aber der Autor des Videos in diesem Format vor:
Dementsprechend muss man natürlich auch im RegEx den String ändern nachdem gesucht werden soll.
Aufrufe auslesen:
Hier liegt die Anzahl der Aufrufe in diesem Format vor:
Anzahl Bewertungen auslesen:
Hier liegt die Anzahl der Bewertungen so vor:
Video Download:
Alles bis hier hin war ja eigentlich noch ganz einfach wenn man weiß wonach man suchen muss
Der Download des Videos ist eigentlich auch ganz simpel wenn man weiß wie sich der Downloadlink zusammen setzt.
In diesem Beispiel wird das Videos als .mp4 gedownloadet.
Der Downloadlink zu einem Video setzt sich aus 3 verschiedenen Teilen zusammen:
Eine bestimmte URL von YouTube, die ID des Videos und die Variable "t".
Diese bestimmte URL von YouTube ist diese :
An diese URL muss man die ID des Video ran hängen und die Variable "t". An die ID kommt man ziemlich schnell:
Sie steht in jeder URL zu einem Video hinter "v=". Also ist es sehr einfach diese gerauszubekommen:
Schon hat man die ID des Videos. Man kann diese natürlich auch wie die anderen Informationen über RegEx auslesen aber mit Replace geht es einfacher und schneller.
Jetzt müssen wir noch die Variable "t" auslesen:
Ihr seht, dass fasst alles gleich ist wie bei den anderen. Nur jetzt kommt beim speichern des Textes noch ein "Mid$" dazu.
Das "Mid$" steht dort, damit man nur die Variable "t" angezeigt bekommt. Ohne das "Mid$" bekommt man nen haufen Quelltext zurückgeliefert,
den man eigentlich nicht braucht. Das "Mid$" schneidet auch einfach nur alle Buchstaben bzw. Zeichen ab, die nicht in dem Bereich von zeichen 1 bis 46
sind.
Jetzt haben wir alle sachen die wir brauchen um das Video zu downloaden. Also nur noch zusammen setzen:
Jetzt einfach nur noch nen Webclient machen und download
Bei diesem Link wird das Video als .mp4 gedownloadet. Allerdings kann man ganz einfach den Dateitypen ändern.
Der erste Teil des Links sieht wie folgt aus:
youtube.com/get_video?fmt=18&video_id="
Ihr seht, dass am in der mitte/ am ende ein "fmt=18" steht. Wenn man diese zahl ändern (also in diesem Fall "18"), bekommt man das Video in einem anderem Format. Folgende Formate gibt es bei YouTube(Danke technobase ;)):
"fmt=5" = .flv Format
"fmt=22" = .mp4 in HD (setzt vorraus, dass das Video auch in HD vorhanden ist)
"fmt=17" = .3gp
So, das wars jetzt
ich hoffe es hat euch ein bischen geholfen. Wenn ihr Fragen oder Anregungen habt dann könnt ihr sie hier posten!
Grüsse,
viperkill
ACHTUNG! Durch die Umstellung des Youtube Layouts, funktionieren manche abfragen nicht mehr. Ich werde mich so bald wie möglich hinsetzten und den Sourcecode updaten.
EDIT: Alle Abfragen gehen wieder! Nur die zusammen setzung des YouTube Downloadlinks will noch nich :P
P.S.: Wer Rechtschreibfehler findet, darf sie behalten
EDIT: Habe jetzt im Anhang ein Beispiel Projekt "rangehängt"
ich habe vor kurzem einen YouTube Download programmiert aber habe keine Lust den zu Releasen oder ihn weiter zu entwickeln. Damit die ganze "Arbeit" nicht umsonst war, habe ich mich entschieden den Sourececode mit ein paar beschreibungen hier zu veröffentlichen.
Dan wollen wir mal anfangen:
Da wir wahrscheinlich nicht einfach nur das Video downloaden möchten, sondern auch ein paar Infos zu den Videos haben möchten (Autor,Titel), fangen wir auch erstmal damit an. Alle Funktionen(Außer die zum Download vom Quelltext) basieren auf RegEx.
Als erstes brauchen wir den Quelltext von dem YouTube Video:
Jetzt haben wir schonmal die vorraussetzung für alle folgenden Schritte.
Titel auslesen:
Diese Funktion liefert uns schonmal den Titel des Videos. Hier mal eine kleine Erläuterung:
Der Titel eines Videos, liegt in diesem Vormat in dem Quelltext der Seite vor:
Da wir den Titel ja nicht wissen, und ihn auslesen wollen, können wir ja nicht im RegEx den Titel schon angeben(wäre auch ohne sinn).
Deswegen schreibt man "(?<Title>(.*))" wobei man "Title" in jedes x-beliebige Wort ändern kann.
Das "(.*)" sagt dem Programm, dass der Text der da stehen sollte (Also der Titel des Videos) x-beliebige zeichen bzw. Zahlen hat. Das brauchen wir,
da wir auch hier nicht wissen wie Lang der Titel ist oder ob er aus Buchstaben und Zahlen besteht.
Zum schluss haben wir noch das "?" am Anfang der Klammer. Das Fragezeichen sagt dem Programm, dass es den Text der da steht in die Speichern soll und zwar
in der Variable, die wir zwischen den "<>" stehen haben(in diesem Fall "Title")
In der Letzteb Zeile des Codes("title = TitleRegEx.Match(httpContent).Groups("Title").ToString") wird eigentlich erst der/das RegEx gestartet.
"httpContent" steht für den Text der nach den oben angegebenen Zeichen durchsucht werden soll. "Title" steht für die Variable in der der Text gespeichert wurde(wie oben genannt). Wenn wir beim RegEx deklarieren anstatt "Title", "test" geschreiben hätten, müssten wir also auch hier "Title" in "test" ändern.
Autor auslesen:
Die gleiche Erläuterung wie beim Titel. In diesem Fall liegt aber der Autor des Videos in diesem Format vor:
Dementsprechend muss man natürlich auch im RegEx den String ändern nachdem gesucht werden soll.
Aufrufe auslesen:
Hier liegt die Anzahl der Aufrufe in diesem Format vor:
Anzahl Bewertungen auslesen:
Hier liegt die Anzahl der Bewertungen so vor:
Video Download:
Alles bis hier hin war ja eigentlich noch ganz einfach wenn man weiß wonach man suchen muss
Der Download des Videos ist eigentlich auch ganz simpel wenn man weiß wie sich der Downloadlink zusammen setzt.
In diesem Beispiel wird das Videos als .mp4 gedownloadet.
Der Downloadlink zu einem Video setzt sich aus 3 verschiedenen Teilen zusammen:
Eine bestimmte URL von YouTube, die ID des Videos und die Variable "t".
Diese bestimmte URL von YouTube ist diese :
An diese URL muss man die ID des Video ran hängen und die Variable "t". An die ID kommt man ziemlich schnell:
Sie steht in jeder URL zu einem Video hinter "v=". Also ist es sehr einfach diese gerauszubekommen:
Schon hat man die ID des Videos. Man kann diese natürlich auch wie die anderen Informationen über RegEx auslesen aber mit Replace geht es einfacher und schneller.
Jetzt müssen wir noch die Variable "t" auslesen:
Ihr seht, dass fasst alles gleich ist wie bei den anderen. Nur jetzt kommt beim speichern des Textes noch ein "Mid$" dazu.
Das "Mid$" steht dort, damit man nur die Variable "t" angezeigt bekommt. Ohne das "Mid$" bekommt man nen haufen Quelltext zurückgeliefert,
den man eigentlich nicht braucht. Das "Mid$" schneidet auch einfach nur alle Buchstaben bzw. Zeichen ab, die nicht in dem Bereich von zeichen 1 bis 46
sind.
Jetzt haben wir alle sachen die wir brauchen um das Video zu downloaden. Also nur noch zusammen setzen:
Jetzt einfach nur noch nen Webclient machen und download
Bei diesem Link wird das Video als .mp4 gedownloadet. Allerdings kann man ganz einfach den Dateitypen ändern.
Der erste Teil des Links sieht wie folgt aus:
youtube.com/get_video?fmt=18&video_id="
Ihr seht, dass am in der mitte/ am ende ein "fmt=18" steht. Wenn man diese zahl ändern (also in diesem Fall "18"), bekommt man das Video in einem anderem Format. Folgende Formate gibt es bei YouTube(Danke technobase ;)):
"fmt=5" = .flv Format
"fmt=22" = .mp4 in HD (setzt vorraus, dass das Video auch in HD vorhanden ist)
"fmt=17" = .3gp
So, das wars jetzt
ich hoffe es hat euch ein bischen geholfen. Wenn ihr Fragen oder Anregungen habt dann könnt ihr sie hier posten!
Grüsse,
viperkill
ACHTUNG! Durch die Umstellung des Youtube Layouts, funktionieren manche abfragen nicht mehr. Ich werde mich so bald wie möglich hinsetzten und den Sourcecode updaten.
EDIT: Alle Abfragen gehen wieder! Nur die zusammen setzung des YouTube Downloadlinks will noch nich :P
P.S.: Wer Rechtschreibfehler findet, darf sie behalten
EDIT: Habe jetzt im Anhang ein Beispiel Projekt "rangehängt"
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „viperkill“ ()