Wer meine vorigen Artikel zum Thema Calibre gelesen hat, weiß, dass ich das Programm schätzen gelernt habe. Wer seinen E-Reader zum Lesen von kostenlosen Zeitungsartikeln nutzen will, wird wohl kaum um Calibre herumkommen. Zudem sind die Konvertierungs-Möglichkeiten umfangreich.
Nach einiger Zeit der Anwendung hatte ich nun aber den Wunsch, die Funktionalität von Calibre ohne dessen GUI zu nutzen.
Genauer gesagt, würde ich ohne GUI gerne regelmäßig News aus dem Internet beziehen und diese per Mail an mein Kindle übertragen lassen. Dazu braucht es keine GUI. Dazu braucht es auch keine Eingaben von mir. Die Verarbeitung sollte einfach im Hintergrund regelmäßig laufen.
Doch wie kann man das bewerkstelligen?
Um es gleich vorweg zu nehmen: ich werde mit diesem Beitrag hier nicht wirklich “die eine” Antwort auf diese Frage geben können. Vielmehr möchte ich Möglichkeiten – und deren Schwachpunkte – aufzeigen.
Was zunächst einmal wunderbar aussieht und sicherlich auch ein toller Ansatz ist: Calibre ist modular aufgebaut. Die einzelnen Teile können jeweils per Kommandozeile bedient werden. So gibt es u.a. ein Kommandozeilen-Tool zum Abruf der News bzw. Konvertierung von E-Book-Formaten, eines für den Zugriff auf die Datenbank bzw. den Katalog und eines für den E-Mail-Versand.
Aus diesen Einzelteilen kann man sich dann ein Shellskript für den Nachrichten-Abruf und die Übertragung an das Gerät basteln.
Zum Abrufen von Daten per Recipes und zum Konvertieren von Dokumenten wird ein und das selbe Tool verwendet: ebook-convert. Für das Abrufen der Nachrichten wird dazu lediglich als Quell-Format das Recipes-Format angegeben.
So sieht beispielsweise der Aufruf aus, der die aktuellen Artikel aus der Süddeutschen Zeitung abruft und im MOBI-Format in der Datei /tmp/sz.mobi speichert:
ebook-convert /usr/share/calibre/recipes/sueddeutsche.recipe /tmp/sz.mobi
Die in Calibre mitgelieferten Default-Recipes findet ihr, wie ihr es an dem Beispiel sehen könnt, im Verzeichnis /usr/share/calibre/recipes.
Habt ihr ein Recipe (im deutschen übrigens Schema genannt) angepasst oder gar ein eigenes erstellt, müsst ihr dessen Source-Code in eine Datei kopieren und dann diese Datei als Konvertierungs-Quelle angeben. Geht dazu folgendermaßen vor:
Das ist zugegebenermaßen nicht schön – aber es gibt wohl keine andere Möglichkeit.
Wollt ihr ein Dokument bzw. ein Buch eurem Katalog (eurer Büchersammlung) hinzufügen, dann könnt ihr dazu das Tool calibredb benutzen. Hier ein beispielhafter Aufruf, der die zuvor heruntergeladene Datei /tmp/sz.mobi in den Katalog einfügt:
calibredb add /tmp/sz.mobi
Wenn ihr dann Calibre startet, werdet ihr einen neuen Eintrag finden.
Falls ihr euch jetzt fragt, was euch das bringt…
Dokumente per Mail an den Kindle senden
Mit dem Tool calibre-smtp könnt ihr euch Bücher per Mail an den Kindle schicken. Wollten wir die zuvor heruntergeladene /tmp/sz.mobi übertragen, würde der entsprechende Aufruf folgendermaßen aussehen:
calibre-smtp -a /tmp/sz.mobi -s "SZ" -r smtphost -u smtpuser -p smtppass absender@domain.com kindleusername@free.kindle.com "SZ"
Was die Argumente im Einzelnen bedeuten:
-s wird der Mail-Betreff angegeben. Der ist allerdings nicht sonderlich bedeutungsvoll.-r wird der SMTP-Relay-Host angegeben. Also der SMTP-Server, an dem ihr euch anmelden und Mails versendet könnt. Solltet ihr ein GoogleMail-Konto haben, gebt hier smtp.googlemail.com an.-u und -p gebt ihr eure Zugangsdaten für den SMTP-Server an, also den Benutzernamen (smtpuser) und euer Kennwort (smtppass).absender@domain.com müsst ihr eure Absender-Mailadresse angeben. Die ist besonders wichtig, denn ihr müsst diese in eurem Amazon-Konto als erlaubte Mailadresse (für den Kindle-Empfang) hinterlegt haben. An dieser Stelle: “sorry” an alle, die einen anderen E-Reader haben. Ich habe nun einmal einen Kindle und kann daher nur von dem berichten…kindleusername@free.kindle.com gebt ihr die Mailadresse eures Kindles an. Wie die lautet, könnt ihr in eurem Amazon-Konto nachsehen. Wichtig ist hier das free in der Maildomain. Es gibt auch noch eine @kindle.com-Adresse – ohne free. Darüber bietet Amazon etwas mehr – die ist aber auch kostenpflichtig."SZ", das den Text der Mail angibt. Auch der ist nicht wirklich von Bedeutung (zumindest beim Kindle nicht).Im Online-Manual von Calibre findet ihr eine genaue Beschreibung dieser und weiterer Calibre-Tools.
Naja, der modulare Aufbau ist ja wirklich schön und gut. Aber zwei Dinge gibt es da, die mich daran stören:
Was das Thema mit dem Passwort für das Mail-Konto angeht, habe ich mich mal umgesehen, ob man nicht einfach die in Calibre hinterlegten Konfigurations-Daten für den SMTP-Zugang nutzen könnte. Da Calibre größtenteils in Python geschrieben ist, kann man sich da auch relativ schnell reinhacken.
So sendet folgendes Python-Skript eine Mail – so wie das auch das Kommandozeilen-Tool calibre-smtp tut. Allerdings muss man dabei die SMTP-Parameter nicht angeben. Das Skript zieht sich die in Calibre hinterlegten Konfigurationsdaten heran.
#!/usr/bin/python
import sys, os
path = os.environ.get('CALIBRE_PYTHON_PATH', '/usr/lib/calibre')
sys.path.insert(0, path)
sys.resources_location = os.environ.get('CALIBRE_RESOURCES_PATH', '/usr/share/calibre')
sys.extensions_location = os.environ.get('CALIBRE_EXTENSIONS_PATH', '/usr/lib/calibre/calibre/plugins')
sys.executables_location = os.environ.get('CALIBRE_EXECUTABLES_PATH', '/usr/bin')
from calibre.utils.smtp import compose_mail, sendmail, config as email_config
from binascii import unhexlify
opts = email_config().parse()
efrom = "absender@domain.com"
eto = "kindleusername@free.kindle.com"
msg = compose_mail(efrom, eto, "SZ", "SZ", "/tmp/sz.mobi")
sendmail(msg, efrom, eto, None, 1, None, opts.relay_host,
opts.relay_username, unhexlify(opts.relay_password),
opts.encryption, opts.relay_port, None)
Auch hierzu eine kurze Erklärung der im Skript enthaltenen Angaben:
calibre-smtp ist absender@domain.com der Absender, der im Amazon-Konto als erlaubter Absender für Kindle-Dokumente hinterlegt ist und kindleusername@free.kindle.com die Kindle-Adresse.compose_mail ist das erste SZ der Mailtext und das zweite SZ der Betreff der Mail. Beide Angaben sind natürlich wieder wenig von Bedeutung.compose_mail der Pfad zu der Datei mitgegeben, die der Mail angehängt werden soll – also das E-Book bzw. Dokument.Und wo ist jetzt die Warnung? Ganz einfach: seht euch mal das Skript hinsichtlich des SMTP-Kennworts an (der Teil unhexlify(opts.relay_password). Wie ihr seht, könnt ihr (und somit jeder, der auf euren Rechner Zugriff hat oder bekommt) mit einem kleinen Python-Skript das Passwort eures Mail-Kontos ermitteln. Also: auch das Hinterlegen des Kennworts in Calibre ist alles andere als sicher. Andererseits: wie soll es auch wirklich sicher sein…
Wie einleitend schon gesagt, bin ich in diesem Thema sicher noch nicht am Ende angekommen. Seitens Calibre wäre es wünschenswert, dass tatsächlich ein Tool angeboten wird, das einfach alle anstehenden Aufgaben abarbeitet. Das Kennwort-Problem löst das allerdings nicht.
Hier bleibt nur der Rat, dass man sich am besten ein eigenes Mail-Konto anlegt, das man dann ausschließlich für diesen Zweck verwendet. Wenn das Kennwort einmal in fremde Hände fällt, kann der “Dieb” zumindest nicht viel damit anstellen…
Ich werde wohl in der nächsten Zeit probieren, auf meinem Rechner Postfix zu installieren – so, dass es Mails über meinen GMail-Account versenden kann. So kann man dann einerseits unbeschwert scripten und andererseit hat man eine sichere Konfiguration.
Was meint ihr? Habt ihr weitere Ideen? Gibt es da etwas, woran ich noch nicht gedacht habe?
1 Kommentare zu Calibre: ohne GUI E-Papers beziehen – Teil 1
Pingback: Calibre: ohne GUI E-Papers beziehen – Teil 2 | ME and my U