Posts

Es werden Posts vom April, 2015 angezeigt.

[Java] MediaDownloader v0.2 - Changelog

Mit diesem Blog-Eintrag, wurde eine überarbeitete Version des MediaDownloaders  freigegeben. Changelog: InstagramDownloader: Es ist nun möglich Bilder/Videos eines Instagram-Profils herunterzuladen (alle oder vereinzelt). FacebookDownloader: Unterstützung zum Downloaden aller Facebook Alben/Videos eines Profils (oder einzelne Alben). Einstellungs-Fenster: Es ist nicht mehr länger nötig den Speicherpfad jedes mal neuzuwählen. Es kann ein Standard Pfad gesetzt werden. Außerdem gibt es ein paar mehr Einstellungen, welche den Umgang erleichtern. Download: Den Download für die Version des MediaDownloader finden Sie hier: http://download.r3d-soft.de oder: http://ytdl.r3d-soft.de

[Tutorial] - Instagram Bilder eines Profils abrufen ("Crawler")

Bild
Um den MediaDownloader mächtiger zu machen, darf natürlich ein Instagram-Crawler nicht fehlen. Hierzu, verwende ich erneut die API da per JavaScript auf der Webseite der Content dynamisch nachgeladen wird. Die API arbeitet ebenfalls wieder mit JSON - damit sollten wir mittlerweile vertraut sein. Der Aufbau der API ist relativ simpel uns selbst erklärend aber(!), im Gegensatz zur Facebook API braucht Instagram (wie die YouTube API auch) einen "access token". Einen sogenannten API-Key der es den Entwicklern erlaubt überhaupt auf die API zuzugreifen. Im folgenden werde ich meinen API-Key durch {client-id} ersetzen. Zunächst, brauchen wir die User-ID von einem Benutzer, damit wir fortfahren können. Hierzu benutzen wir schon die API - das einzige Problem ist, wir bekommen alle Nutzer zurück welche, wenn auch nur teilweise, mit unserem gesuchten Nutzername übereinander stimmen. Die Request-URL: https://api.instagram.com/v1/users/search?q= {USERNAME} &client_id= {c...

Java: Facebook "Crawler" Part 2/2 - Videos [& Bilder Update!]

Bild
Einführung Heute beschäftige wir uns mit den Videos auf Facebook. Im ersten Teil dieses "Tutorials" habe ich über den HTML-Source der Facebook Seite mir die Bilder extrahiert. Das ist über etwas längere Zeit sehr mühselig, deshalb habe ich mir einen anderen Weg gesucht - Die API. API - Erklärung Die API erzeugt mir sogenannte JSON-Objekte wie bereits bei den YouTube-Videos erwähnt. Da dies aber das "Crawlen" um soviele Dinge erleichtern benutze ich es und werde im folgenden dies genauer erklären. Als Facebook "User" nutze ich hier "WhatsApp" - http://facebook.com/whatspp Bilder mit der Facebook API beziehen: Da mein Ziel es war, einen kompletten Alben-Crawler zu schreiben musste ich nach kurzer Zeit feststellen es werden nur 25 von allen Bilder von der Webseite bezogen, da ein JavaScript dafür sorgt den Rest nach zu laden. Da dies viel zu umständlich wurde, suchte ich nach einer simpleren Methode die auch schöner und dynamischer ...

Java: MediaDownloader - Release [inkl. Download]

Bild
Nachdem ich nun einen brauchbaren Software Code zusammen gebastelt habe, kann ich euch heute meinen ersten Release des "MediaDownloaders" vorstellen. Aktuell ist es noch ein YouTube-Downloader was sich aber im Laufe der Wochen ändern wird. Der MediaDownloader benutzt als Konvertierungstool "ffmpeg", ein sehr mächtiges Kommandozeilenprogramm zum konvertieren diverser Medienformate usw. Standardmäßig wird die MP3 auf 320kbs konvertiert (Einstellungsmöglichkeiten folgen später). Screenshot: Bedienung: Es gibt folgende Möglichkeiten Links der Download Liste hinzuzufügen:   > Alle Videos eines Kanals: Mit user:USERNAME oder users:USERNAME alternativ: http://www.youtube.com/user/USERNAME > Einen simplen YouTube-Link hinzufügen: Den Link aus dem Webbrowser hinein kopieren. z.B: http://youtube.com/watch?v=VIDEO_ID  Im Moment ist es noch nicht möglich sogn. Playlists herunterzuladen. Diese Möglichkeit wird später hinzugefügt. Danach sollte ...

Java: [YouTube] Alle Videos eines Kanals herunterladen

Bild
Um meinen "Downloader" zu verbessern, habe ich mir überlegt was für Funktionen (mir persönlich) noch fehlen. Da ich ziemlich faul bin was Copy&Paste etc. angeht, wollte ich mir das Ganze etwas leichter machen, d.h. ich wollte wenn ich so etwas wie user:{YouTubeUsername}  eingebe, mein "Downloader" mir alle Videos automatisch zur Download-Liste (von dem gewünschten Kanal) hinzufügt. So weit zur Theorie kommen wir nun zur Praxis. Im Endeffekt arbeite ich hier mit JSON Objekten, welche ich von der YouTube API beziehe um damit dann automatisch rekursiv alle Video-IDs des Kanals zu beziehen. Zunächst ist es wichtig zu wissen was wir brauchen: Einen YouTube Kanal - im folgenden benutze ich: sempervideo Die YouTube Kanal ID - werden wir mit Hilfe der API beziehen [benötigt YT-Namen] Unsere Java Entwicklungsumgebung Eine Java Klasse Bevor wir mit der eigentlich Umsetzung beginnen können, benötigen wir einen API-Key. Diesen kann man von hier beziehe...

YouTube und deren Signatur!

Als ich meinen Downloader getestet habe, musste ich feststellen nicht alle Videos konnten heruntergeladen werden. Also wieder hingehockt und überlegt was nun das Problem sei. Sehr schnell wurde mir klar, irgendetwas muss ich übersehen haben. Daraufhin, habe ich mir 2 Videos genommen ein Video von einer Person hochgeladen die nicht mal 100 Abo's hatte und ein Video von einem VEVO Account. Ich vergleichte die URLs mir fiel jedoch nichts signifikantes auf. Später stellte ich fest, dass die URL bei dem VEVO-Video mir ein 403-Forbidden Error-Code zurückliefert - also muss ich wohl doch was übersehen haben? Und ja, ich hatte etwas übersehen. Die Signatur! Getarnt als s Parameter in der URL. Diese Signatur wird vom Player dekodiert und erst dann wird mit der Signatur das Video aufgerufen. Für 1-2 Videos gelang es mir sogar mit Hilfe der html5-player.js die Signatur zu entschlüssen, später jedoch stieß ich auf http://ytapi.gitnol.com/ dort wird die Signatur entschlüsselt. Diese S...

Java: Facebook "Crawler" Part 1/2 - Bilder

Bild
Wie bereits in meinem Blog-Eintrag zum YouTube Downloader erwähnt habe ich mich noch mit dem Aufbau von Facebook auseinander gesetzt.  Wichtig dabei ist es die HTML Kommentare nicht zu vernachlässigen, denn dort sind die ganzen Informationen die wir benötigen abgelegt. Wir suchen nun nach einer bzw. mehreren Zeilen die folgendes enthalten: <a class='uiMediaThumbMedium'> Wichtig ist, dass vor bzw. nachdem uiMediaThumbMedium immer noch etwas stehen kann. Sofern wir das benötigte Tag gefunden haben, interessiert uns nun das 'href'-Attribut. Dort sollten wir einen Verweis wie folgt finden: <a class='uiMediaThumbMedium' href='/ProfileID/LONGLINEWITHNUMBERS'> Zu dem Attribut Inhalt fügen wir vorne noch ein http://facebook.com/ an und navigieren zu unserer neuen Seite. Nun sollten wir in einem Album befinden, aus welchem wir nun die Bilder extrahieren können. Dort suchen wir nun wieder nach einem bestimmten Tag: <img class='fbPho...

Java: YouTube Downloader

Bild
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...