eBooks und ePaper aus der Bücherei

Die Düsseldorfer Stadtbücherei und sicher auch andere Büchereien bieten für ihre Mitglieder DRM-geschützte digitale Medien zum Ausleihen an – die Düsseldorfer nennen das onlineBibliothek und bieten über 10000 Medien an. Das funktioniert zum Teil auch sehr gut auf dem Mac unter OS X, zumindest für die Bücher und Zeitungen, respektive „eBooks“ und „ePaper“. Diese sind durch Adobes DRM geschützt. Zuvor muss man allerdings zwei Programme installieren: Adobe Reader 9 für die PDF-Dateien (z.B. für den „Spiegel“ und diverse Bücher) und Adobe Digital Editions 1.6 für Bücher, die im „ebx.etd“-Format (eine Steuerdatei) angeboten werden. Digital Editions wird übrigens hier installiert: ~/Library/Preferences/Macromedia/Flash Player/www.macromedia.com/bin/digitaleditions1x5/digitaleditions1x5.app. Das Programm bildet eine Art Bücherregal mit gekauften und geliehenen Büchern an.

Leider liegen die Audio und Video Angebote in Formaten des Microsoft Media Players vor, WMA und WMV, die mit DRM auf dem Mac meiner Recherche nach nicht abgespielt werden können. Möglicherweise wächst mit WINE eine Möglichkeit dazu heran, wie diese Meldung hoffen lässt. Sonst bleibt wahrscheinlich nur Windows in einer VM als Abspielmöglichkeit. Oder kennt jemand eine Möglichkeit ohne Windows-Lizenz?

Daten aus Webdiensten mit wget sichern (OS X, Firefox)

Für den Seelenfrieden gibt es doch nichts besseres als ein Backup. Für meine lokalen Daten erledigt das unter OS X 10.4 Leopard Time Machine von Apple ohne viel Aufhebens. Übrig bleiben aber die ganzen Daten, die ich im Web pflege, wie z.B. Delicious-Bookmarks und Bloglines-Subscriptions. Manuell kann man diese Daten auf die lokale Festplatte exportieren, und genau das wollte ich heute automatisieren. Das geht nach einigen kleinen Hürden mit wget problemlos.

1. Beispiel Bloglines

Die Seite, die alle Subscriptions als OPML liefert, lautet http://www.bloglines.com/export. Einzige Hürde: man muss eingeloggt sein. Im Browser klappt der Export nach dem Login dann dank Cookies. Und diese kann man auch wget übergeben, und zwar mit dem Parameter "--load-cookies cookies.txt". Cookies.txt ist eine Datei mit Cookies im Netscape-Format. Mein Lieblingsbrowser Firefox speichert die Cookies allerdings seit Version 3 in einer Sqlite-Datenbank. Zum Glück steht hier, wie man die Daten leicht daraus extrahieren kann – und zwar mit folgendem Script (von mir leicht vereinfacht):

#!/usr/bin/python
import sqlite3 as db
import sys
cookiedb = ‚/Users/<username>/Library/Application Support/Firefox/Profiles/<profilename>/cookies.sqlite‘
connection = db.connect(cookiedb)
cursor = connection.cursor()
contents = „host, path, isSecure, expiry, name, value“
cursor.execute(„SELECT “ +contents+ “ FROM moz_cookies“)
file = open(„./cookies.txt“, ‚w‘)
index = 0
for row in cursor.fetchall():
file.write(„%s\tTRUE\t%s\t%s\t%d\t%s\t%s\n“ % (row[0], row[1],
str(bool(row[2])).upper(), row[3], str(row[4]), str(row[5])))
index += 1
file.close()
connection.close()

Der Aufruf zum Sichern sieht dann so aus:

wget –load-cookies cookies.txt „http://www.bloglines.com/export“ -O bloglines.opml

2. Beispiel delicious

Hier lautet die URL zum Export https://secure.delicious.com/settings/profile/export. Wieder braucht man die cookies.txt. Aber es gibt noch ein weiteres Problem: Die export-URL verlangt einige Parameter als POST-Request. Zum Glück kann wget auch diesen Trick mittles „–post-data“. Die Parameter sehen so aus: „.crumb=<ID>&include_tags=yes&include_notes=yes&submit=submit“. Die „<ID>“ muss man aus dem Quelltext der Webseite „https://secure.delicious.com/settings/bookmarks/export“ auslesen (nach .crumb suchen), denn ich denke, die ist variabel (und ich hoffe aber, sie bleibt für mich stabil…). Ausserdem gibt es noch den wget-Parameter „–no-check-certificate“, der Probleme mit dem SSL-Zertifikat ignoriert. Insgesamt sieht der Aufruf dann so aus:

wget –no-check-certificate –load-cookies cookies.txt „https://secure.delicious.com/settings/profile/export“ –post-data „.crumb=<ID>&include_tags=yes&include_notes=yes&submit=submit“ -O delicious.html

Jetzt nur noch das Ganze in ein Script packen, um es via cron-job oder sowas regelmäßig und ohne weiteres Zutun anzustoßen.