SkyDrive mit Python

Ich bin gerade dabei für ein Projekt ein Skript zu entwickeln, das periodisch Daten auf einen ausgelagerten Speicher kopiert. Zunächst hatte ich dabei an Amazon S3 gedacht, allerdings handelt es sich weder um kritische Daten noch ist eine besonders hohe Verfügbarkeit notwendig, so dass Microsoft SkyDrive ebenfalls ausreicht.

Für Amazon S3 gibt es, wie ich herausgefunden habe, eine gut dokumentierte Python API Library, boto. Für Microsoft SkyDrive gibt es ebenfalls eine Library, python-skydrive, allerdings ist das mit der Dokumentation hier nicht so ganz optimal. Es gibt eine, aus den Code-Kommentaren automatisch generierte, API Dokumentation, in der jedoch ein paar Fallstricke lauern und vor allem keine Code-Beispiele vorhanden sind, die das Verständnis meist doch sehr vereinfachen würden. Inzwischen habe ich die Verbindung allerdings hinbekommen und will hier einmal kurz aufzeigen, was ich dazu machen musste, da mir ein solches Minimalbeispiel gefehlt hatte.

Zunächst einmal benötigt man zwei Libraries, die nicht automatisch vorhanden sind: requests und PyYAML. Diese kann man entweder über pip, easy_install oder den Paketmanager seiner Distribution installieren.

Die Installation von python-skydrive entspricht der gelieferten Dokumentation, man kann dies einfach mit pip install python-skydrive durchführen.

Anschließend hat man alle notwendigen Vorraussetzungen erfüllt (Ich setze hier vorraus, dass man bereits einen Live-Account besitzt und auf SkyDrive zugreifen kann) und kann die Verbindung vorbereiten. SkyDrive verwendet eine OAuth Authentifizierung. Diese verwendet, vereinfacht dargestellt, eine Client-ID und ein Secret, welche man bei Microsoft anlegen muss. Man sollte die beiden Werte dann lokal in einer Textdatei zwischenspeichern. Bei Microsoft habe ich die Anwendung python-skydrive genannt. Der Name ist allerdings nicht entscheidend. Das Feld „Umleitungsdomäne“ bleibt leer. In der Beschreibung der Command-Line Version von python-skydrive steht „Be sure to check the „mobile client app“ box under „API settings“„, daher habe ich dies hier ebenfalls gemacht.

Python-skydrive bietet nun verschiedene Möglichkeiten, die API zu nutzen. Einerseits kann man interaktiv die Werte übergeben, andererseits kann man mit einer Konfigurationsdatei arbeiten, die die zusätzlichen Parameter, wie den Auth Code, der durch python-skydrive vom SkyDrive Server bezogen wird, sichert. Letzteres empfiehlt sich für automatische Systeme, in die kein Benutzereingriff erfolgen soll.

Die Vorgehensweise ist allerdings in beiden Fällen relativ ähnlich, das folgende sollte zunächst in einer Python-Eingabeaufforderung eingegeben werden. Damit wird zunächst das benötigte Modul der python-skydrive API importiert und anschließend ein Objekt erzeugt, das über die bereits beschaffte Client ID und -Secret verfügen.

from skydrive.api_v5 import SkyDriveAPI
my_skydrive = SkyDriveAPI(client_id = '[meine client id]', client_secret = '[mein client secret]', )
my_skydrive.my_sd.auth_user_get_url()

Die unterste Methode liefert einen Unicode-String zurück, welcher eine URL enthält. Diese sollte man dann in einen Webbrowser kopieren und aufrufen. Nachdem man sich mit seinem Windows Live Kennwort authentifiziert hat, landet man auf einer leeren Seite. Die URL dieser Seite kopiert man nun und fügt sie im folgenden Schritt wieder ein:

my_url = ''
my_skydrive.auth_user_process_url(my_url)
my_skydrive.auth_get_token()

Im Idealfall sollte nun der Zugriff auf SkyDrive möglich sein. Testen lässt sich dies bspw. so:

my_skydrive.listdir()

Man sollte ein Objekt zurückgeliefert bekommen. Dies entspricht dem Default-Verzeichnis.

Um PersistentSkyDriveAPI zu nutzen, muss zunächst eine Konfigurationsdatei angelegt werden. Standard ist hier ~/.lcrc, ich habe das angepasst auf ~/.skydrive.auth, da das etwas ersichtlicher erscheint. Diese Datei muss folgenden Inhalt haben:

client:
id: [meine client id]
secret: [mein client secret]

Nun legt man folgendermaßen ein SkyDriveAPI Objekt an:

from skydrive.api_v5 import PersistentSkyDriveAPI
my_skydrive = PersistentSkyDriveAPI.from_conf('~/.skydrive.auth')

Die restlichen Schritte sind identisch zu den oben genannten für den ersten Aufruf. PersistentSkyDriveAPI legt allerdings den ermittelten authorization_code und einige weitere Daten ebenfalls in der Config-Datei ab und aktualisiert diese auch wenn nötig. Bei den folgenden Aufrufen sollte man direkt nach dem erstellen des Objekts mit der API arbeiten können.

Things that matter

Ich möchte heute die Gelegenheit nutzen, auf eine seit kurzem erscheinende, filmlastige Onlinepublikation hinzuweisen. Und zwar nennt sich diese „Things that matter“ und hat seit heute einen Gastbeitrag von mir, nämlich den vorherigen Artikel ;) Es handelt sich dabei um ein Weblog, welches u.a. von @sofakissen geschrieben wird und sich vornehmlich um das reviewen und ranten von und über Dinge wie Filme, Musik, Comics und Videogames dreht. Also ganz dem Titel nach: Things that matter. Zudem wird dort der zugehörige Podcast publiziert, den ich zu meiner Schande noch nicht gehört habe, was ich allerdings Freitag, auf dem Weg nach Osnabrück nachholen werde.

Nerdcore 4 Life

Hab heute nach langem Warten endlich meine Nerdcore 4 Life DVD erhalten. War schon lange gespannt auf den Film, weil da auch MC Plus+ und Monzy drin vorkommen, zu deren Werken ich schon vor einiger Zeit mal was gepostet hatte.

Bestellt hatte ich die schon im Februar im Rahmen des Pre-Order Angebots für 15$ inkl. Shipping, aber leider wurde wegen Problemen mit dem Presswerk o.ä. das Release mehrfach verschoben (Ich glaub ursächlich sollte die mal letztes Jahr im Dezember rauskommen, dann Januar, dann Mitte April und dann schließlich Juli).

Heute kam die DVD dann endlich, allerdings hat der Regisseur des Films, Dan Lamoureux, bereits vor ein paar Tagen per E-Mail angekündigt, dass die Druckqualität des Covers ziemlich mies ist, er aber mit der Druckerei ausgehandelt hat, dass die die nochmal machen. Jetzt bietet er an, die DVDs kostenlos zu tauschen, wobei ich nicht so ganz verstanden hab ob er die jetzige wieder haben will oder ob die nur das Cover schicken oder wie das läuft. Will diese jetzt eigentlich nich schon wieder hergeben, ohne die geguckt zu haben… Hab deshalb mal nachgefragt und warte noch auf die Antwort :)

Yay, ich wurde zitiert.

Der Steeefan hat mich heute morgen darauf aufmerksam gemacht, dass ich zitiert wurde.

Und zwar zitiert die Welt meinen Twitter-Post vom Tag der Bundespräsidentenwahl:

Durch seinen Auftritt kann er bei den Kritikern im Internet jedenfalls punkten. Die Twitter-User sind begeistert. So schreibt einminutentexte: „Ich finde Norbert Lammert ja so cool, es sollte jede Woche eine Bundesversammlung unter seiner Leitung geben.“ Und flow6667 fordert: „Der sollte eine eigene Fernsehsendung haben.“ Ganz sicher wird auch noch irgendeiner posten: „Bundestagspräsident for President!“

In der Berliner Morgenpost steht der Artikel auch nochmal. Ist zwar nur Springer-Presse, aber hey, besser als garnix ;-)

Wobei – was mich ja wundert, dass man noch immer auf den Artikel zugreifen kann. Wollten die jetzt nich alles hinter ne Pay-Wall stellen? Oder war das nur Bild?

Rama Lama Klingon

Woah! Ich fall tot um! Da hat doch tatsächlich jemand einen Großteil der Galaktischen Grüße aus der Sat.1 30 Jahre Star Trek Nacht von 1996 bei YouTube hochgeladen. Und es sind alle die Beiträge dabei an die ich mich nach 14 Jahren noch lebhaft errinnern kann. Das ist so unfassbar großartig! Die beiden Videos aus den Einträgen, die ich vor einiger Zeit schonmal dazu gemacht habe, sind auch enthalten – besonders freue ich mich dabei über den Earmatic 4000, den es endlich in etwas besserer Qualität gibt, als 320×240 QuickTime-Mov. Habe mir die Videos erstmal alle lokal gesichert, nicht das die wie das mit dem Sodiumleck im Warpantrieb, was ich schonmal gepostet hatte, wieder verschwinden…

Ich habe zwar die Befürchtung, dass das meiste für jemanden, der das 2010 zum ersten Mal sieht, ziemlich trashig wirken muss – aber man muss dabei bedenken, dass das 1996 oder früher entstanden ist und Videobearbeitung am PC noch nicht wirklich verbreitet war bzw. man nur einfache Hilfsmittel hatte.

Hier der YouTube Channel von RussianRasta1981, der die Videos dankenswerterweise hochgeladen hat.

Ein paar meiner Lieblingszitate:

STAR TRACK: The Next Degeneration

Scotty: „Bedaure Sir, wir haben ein Sodiumleck im Warpantrieb.“

Uhura: „Muss unser Strahl denn positiv oder negativ sein“

Spock: „Positiv“

Kirk: „Oder negativ.“

McCoy: „Jim, 10 Sekunden.“

Uhura: „Minus oder Plus?“

McCoy: „Jim, 4.“

Kirk: „Minus und Minus ergibt Plus.“

McCoy: „3“

Kirk: „Und plus und minus ergibt mal… erm..“

McCoy: „2“

Kirk: „Also minus.“

McCoy: „1“

Spock: „Plus.“

McCoy: „Null.“

*KABOOM“

Kirk: „Vorzeichen dreht sich… aus minus wird plus… tjaja…“

Earmatic 4000

„So einfach zu bedienen wie ein Tricorder, so effektiv wie ein Photonentorpedo.“

„Earmatic 4000 – Faszinierend Logisch.“

Die intergalaktische Ampel

„Captain, ich habe eine intergalaktische Ampel auf dem Bildschirm. Sie ist Rot.“

„Verdammt. Ich bin der Kapitän hier und in Zukunft möchte ich über technische Neuerungen informiert werden. Ich geh jetzt in meine Kabine und spiele beleidigte Leberwurst.“

Von Wolken, Frauen und Klingonen

„Captain, wir haben eine Wolke geortet, die auf uns zukommt.“ – „Auf den Schirm!“ – „Nein, auf uns!“

Außerdem noch:

STAR DRECK VII: Die Rückkehr der Hermsdorfer

Kirk’s Party

„Wenn ich auf der Brücke erscheine, dann seh ich nur Männer, die von mir wissen wollen, wie’s weitergeht. Pille, was ist, wenn ich mich mal irre?“

Borg War II: The Romulan Factor

STAR TREYL XIX: A Beam Movie

Und last but not least, das im Titel referenzierte:

U.S.S. Enterprise NCC 1701-W – Rama Lama Klingon