Java: YouTube Downloader
Es ist einige Zeit her das ich hier einen Blog-Eintrag verfasst habe. Das lag wohl daran, dass ich einige Zeit keinerlei Idee mehr hatte und die Motivation dafür auch nicht finden konnte.
Aber nachdem ich jetzt dieses Tief überstanden habe, kam mir neulich eine Idee. Es gibt zwar schon einige Möglichkeiten YouTube Videos herunter zu laden, jedoch nur über Webseiten oder z.B. unter Windows mit dem YouTube2MP3 Converter.
Da ich jeden dieser Alternativen nicht blind vertrauen wollte, habe ich mich auf die Reise in die Tiefen des YouTube HTML-Source begeben um herauszufinden, wo die Videos abgerufen werden.
Wenn man brav aufgepasst hat in der Schule, als man das Thema HTML/CSS hatte, weiß man, dass jede Ressource irgendwo abgelegt sein muss. Die Frage ist nur WO? Und WIE komme ich an diese?
Einfaches Beispiel: Ich möchte, dass hier ein Bild angezeigt wird. Dies könnte ich mit einem "img"-Tag realisieren:
<img src="SOURCE.jpg">Text</img>
Hier sieht man, dass die Quell-Datei also das Bild auf diesem Server sich im selben Verzeichnis befindet wie die angezeigte Webseite.
Wenn wir uns jetzt auf dieser Seite befinden würden:
Somit würde das Bild auf folgender URL anzu treffen sein:
http://r3d-soft.de/images/SOURCE.jpg
Da das ganze auf YouTube etwas komplexer aussieht, sehen wir uns einmal den Code an. Danach werde ich auf die wichtigen Dinge eingehen und erläutern.
Wichtig dabei ist, dass man nach einem "div"-Container sucht der wie folgt lautet:
<div id="player-api" class="player-width player-height off-screen-target player-api"></div>
Danach solltet ihr ein Script Tag sehen welches wie folgt beginnt:
<script>var ytplayer = ytplayer ||
usw. in diesem Script Tag befindet sich JavaScript Code, welcher die Werbung und das Video in verschiedenen Resolutions (=Auflösungen) beinhaltet. Hier nochmals ein Screenshot wo wir uns gerade befinden:
Der Inhalt des Script Tags ist nun wichtig, ihr könnt ihn euch nun in den Editor kopieren oder weiterhin im Browser Quellcode bleiben.
Nun sucht ihr nach dem String:
"url_encoded_fmt_stream_map"
In folgendem Screenshot, seht ihr nun in gelb die Markierte URL. Wichtig hierbei ist, dass es ...
1. sich um einen encodierten URL handelt und wir diesen danach decodieren müssen.
2. nach dem url= bis zum ersten Komma auf das ihr stoßen werdet gehört alles zur benötigten URL.
Nun können wir die URL heraus kopieren unter folgendem Link, könnt ihr wie ich die URL decodieren:
Hier gehts zum Decoder!
Nachdem decodieren sieht es wie folgt aus:
Nun, lässt sich die URL besser erkennen nicht wahr?
Wenn wir die URL nun in den Browser rein kopieren dort hin navigieren wird ein Video abgespielt :)
Da dieses Tutorial in die Kategorie Java fällt, habe ich hierfür natürlich auch noch ein Downloader geschrieben, welcher aus der Video Datei ein mp3 erstellt.
Dieser wird hier demnächst zum download angeboten.
Ebenso werde ich ein Video-Tutorial zur Erstellung dieses Downloaders hochladen.
Außerdem wird noch ein Facebook Photo und Video Crawler kommen. Welches es ermöglicht.
Bei Fragen oder Anregungen lasst doch ein Kommentar da :)
Grüße,
R3DST0RM aka Dominik :)
Aber nachdem ich jetzt dieses Tief überstanden habe, kam mir neulich eine Idee. Es gibt zwar schon einige Möglichkeiten YouTube Videos herunter zu laden, jedoch nur über Webseiten oder z.B. unter Windows mit dem YouTube2MP3 Converter.
Da ich jeden dieser Alternativen nicht blind vertrauen wollte, habe ich mich auf die Reise in die Tiefen des YouTube HTML-Source begeben um herauszufinden, wo die Videos abgerufen werden.
Wenn man brav aufgepasst hat in der Schule, als man das Thema HTML/CSS hatte, weiß man, dass jede Ressource irgendwo abgelegt sein muss. Die Frage ist nur WO? Und WIE komme ich an diese?
Einfaches Beispiel: Ich möchte, dass hier ein Bild angezeigt wird. Dies könnte ich mit einem "img"-Tag realisieren:
<img src="SOURCE.jpg">Text</img>
Hier sieht man, dass die Quell-Datei also das Bild auf diesem Server sich im selben Verzeichnis befindet wie die angezeigte Webseite.
Wenn wir uns jetzt auf dieser Seite befinden würden:
Somit würde das Bild auf folgender URL anzu treffen sein:
http://r3d-soft.de/images/SOURCE.jpg
Da das ganze auf YouTube etwas komplexer aussieht, sehen wir uns einmal den Code an. Danach werde ich auf die wichtigen Dinge eingehen und erläutern.
Wichtig dabei ist, dass man nach einem "div"-Container sucht der wie folgt lautet:
<div id="player-api" class="player-width player-height off-screen-target player-api"></div>
Danach solltet ihr ein Script Tag sehen welches wie folgt beginnt:
<script>var ytplayer = ytplayer ||
usw. in diesem Script Tag befindet sich JavaScript Code, welcher die Werbung und das Video in verschiedenen Resolutions (=Auflösungen) beinhaltet. Hier nochmals ein Screenshot wo wir uns gerade befinden:
Der Inhalt des Script Tags ist nun wichtig, ihr könnt ihn euch nun in den Editor kopieren oder weiterhin im Browser Quellcode bleiben.
Nun sucht ihr nach dem String:
"url_encoded_fmt_stream_map"
In folgendem Screenshot, seht ihr nun in gelb die Markierte URL. Wichtig hierbei ist, dass es ...
1. sich um einen encodierten URL handelt und wir diesen danach decodieren müssen.
2. nach dem url= bis zum ersten Komma auf das ihr stoßen werdet gehört alles zur benötigten URL.
Nun können wir die URL heraus kopieren unter folgendem Link, könnt ihr wie ich die URL decodieren:
Hier gehts zum Decoder!
Nachdem decodieren sieht es wie folgt aus:
Wenn wir die URL nun in den Browser rein kopieren dort hin navigieren wird ein Video abgespielt :)
Da dieses Tutorial in die Kategorie Java fällt, habe ich hierfür natürlich auch noch ein Downloader geschrieben, welcher aus der Video Datei ein mp3 erstellt.
Dieser wird hier demnächst zum download angeboten.
Ebenso werde ich ein Video-Tutorial zur Erstellung dieses Downloaders hochladen.
Außerdem wird noch ein Facebook Photo und Video Crawler kommen. Welches es ermöglicht.
Bei Fragen oder Anregungen lasst doch ein Kommentar da :)
Grüße,
R3DST0RM aka Dominik :)
Kommentare
Kommentar veröffentlichen