Web-Archiv Teil 7: Wallabag und eReader

Vielleser schätzen einen e-Book-Reader ob seiner Leichtigkeit – man kann quasi unbegrenzt Bücher mitnehmen. Und da liegt es doch auch nahe, sich Artikel aus Wallabag auf den e-Book-Reader zu beamen.

Da ich einen Amazon Kindle habe, bin ich hier aktiv geworden und habe mich um eine Einbindung gekümmert. Der Weg via ePub für andere Reader dürfte ähnlich sein.

Das Web-Interface des Kindle Consumers

Jan hat dankbarerweise einen Kindle-Consumer geschrieben und in einen einfachen Docker-Container verfrachtet.
Diese Software checkt Wallabag in regelmäßigen Abständen und fragt ab, ob ein Artikel mit dem Tag kindle (konfigurierbar) vorliegt. Ist dies der Fall, wird der Artikel in ein mobi-Format konvertiert, per einstellbarem E-Mail-Account an die Kindle-E-Mail-Adresse versendet und steht dann auf dem eigenen Kindle bereit. Der Tag wird anschließend wieder gelöscht1. Wünschenswert wäre noch die Einstellung, ob versendete Artikel als gelesen markiert werden sollen.
Der Download der Artikel auf dem Kindle funktioniert allerdings leider nicht über das 3G-Netz, allenfalls, wenn man für den Service zahlen würde, was ich nicht will.

Am besten richtet man einen eigenen E-Mail-Account für dieses Versenden ein – so läuft man nicht Gefahr, dass Daten zum eigenen E-Mail-Konto permanent irgendwo gespeichert werden – selbst wenn es das eigene NAS ist. Nicht vergessen, diesen Account auch als berechtigten Absender im Kindle-Portal einzugeben.

Das Image findet sich unter dem Namen wallabag-kindle-consumer im Docker-Hub und kann mit einem Klick geladen werden, unbedingt auf den korrekten Author janlo achten!

Nachdem das Image heruntergeladen wurde, müssen beim erstmaligen Erstellen leider viele Umgebungsvariablen mit der Hand erstellt werden. Die entsprechenden Defaults sind in der Dokumentation zu finden, den eigenen Mail-Server, -Passwort etc muss man natürlich selbst ergänzen.
Beim ersten Start des Containers muss noch erstmalig die Datenbank initialisiert werden.
Hierzu in den Container verbinden:
docker exec -i -t wallabag-kindle-consumer /bin/sh

und dann diesen Befehl ausführen:
./service.py --create_db --env
Zur Sicherheit nun auch nochmals den Log checken, um eventuelle Fehler zu finden.
Nachdem der Container gestartet wurde, läuft der Service automatisch. Er muss nicht nochmals via ./service.py --refresher --consumer --interface gestartet werden.
Der Container bietet ebenfalls eine Konfigurationsoberfläche für den Wallabag-User und -Passwort bereit. Das Interface dient ebenfalls zum manuellen Aktualisieren des Tokens, falls die automatische Aktualisierung mal nicht funktionieren sollte — was das Erliegen der Sendefunktion zur Folge hat.

Warum sich in diesem Interface nicht all die Sachen, die per Umgebungsvariable eingegeben werden müssen, konfigurieren lassen, erschließt sich mir allerdings nicht.

Im Log zeigt sich nun im Detail, was passiert. In meinem Fall leider auch ab und zu eine Fehlermeldung meines E-Mail-Providers, der zu viele parallele Logins aus Sicherheitsgründen nicht erlaubt. Hier muss Jan vielleicht noch nachbessern, denn in diesem Fall gehen die Artikel aktuell „verloren“ – der Tag wird entfernt, die E-Mail kann aber nicht versendet werden. Das verhindert zwar Endlosschleifen, aber der Artikel ist weg. Dies kann man natürlich dadurch umgehen, pro Versendezyklus nur einen Artikel zu taggen, aber wirklich praktikabel ist das natürlich nicht. Da dies aber auf das spezielle Setup meines Mailservers zurückzuführen ist, sehe ich dies nicht als generelles Problem an.

Der korrekte Log-Output sieht beispielsweise so aus:

[2019-02-10 03:40:03.889539] INFO: wallabag_kindle_consumer.config: read config from file config.ini
[2019-02-10 03:40:03.890119] WARNING: wallabag_kindle_consumer.config: Config file config.ini does not exist
[2019-02-10 03:40:03.890407] INFO: wallabag_kindle_consumer.config: Read config from environment
[2019-02-10 03:40:03.891637] INFO: kindle-consumer: Create Refresher
[2019-02-10 03:40:03.915713] INFO: kindle-consumer: Create Consumer
[2019-02-10 03:40:03.918007] INFO: kindle-consumer: Create Interface
[2019-02-10 03:40:34.937841] INFO: wallabag_kindle_consumer.consumer: Schedule job to send entry 11774
[2019-02-10 03:40:36.198120] INFO: wallabag_kindle_consumer.wallabag: Removed tag kindle from article 11774 of user martin
[2019-02-10 03:40:38.100508] INFO: wallabag_kindle_consumer.consumer: Process export for job 11774 (mobi)
[2019-02-10 03:40:41.594179] INFO: wallabag_kindle_consumer.sender: Mail with article 11774 in format mobi sent to xxx@kindle.com

Die Artikel stehen auf dem Kindle unmittelbar zum Download bereit. Leider werden keine Bilder konvertiert und die Formatierung ist teilweise auch fehlerhaft, insbesondere, wenn im Originalartikel komplexes HTML verwendet wird – ob dies am generellen eBook-Export oder an Jan’s Software, weiss ich nicht. Für den grundlegenden Anwendungszweck taugt die Software aber: Normale Texte werden anständig konvertiert und können am Kindle einwandfrei gelesen werden.
Was ich allerdings auch hier vermisse, ist eine Markierung als gelesen. Dies klappte bei Instapaper immer toll: Unter den Artikeln war ein Link, dessen Aufruf den Artikel dann wegsortiert hat.

Die folgenden Themen werden in der Wallabag-Artikelserie behandelt:
Einleitung —  Auf Vorrat gespeichert: Das eigene Web-Archiv auf dem NAS
Teil 1: Was kann Wallabag?
Teil 2: Wallabag via Docker auf Synology NAS
Teil 3: Wallabag-Tuning
Teil 4: Wallabag und Paywalls
Teil 5: Wallabag-Backup und Versionsupdates
Teil 6: RSS-Import zu Wallabag
Teil 7: Wallabag und eReader
Teil 8: Archivebox und Wallabag

  1. Was gleichzeitig auch heißt, dass es nie einen permanenten kindle Tag in der Datenbank geben sollte. Taggt ihr etwas so und es steht nach ein paar Minuten (je nach eurer Einstellung) noch nicht auf dem Kindle bereit, läuft die Consumer-Software nicht korrekt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.