WordPress-Beiträge als Markdown exportieren

Auf der Suche nach einer Möglichkeit um Beträge in WordPress als Markdown-Dateien zu exportieren, bin ich auf wp2md gestoßen. Dabei handelt sich um eine kleine Applikationen zur Umwandlung der WordPress-XML-Exportdatei zu Markdown. Zur Installation muss der Python-Paketmanager pip bemüht werden:

pip install git+https://github.com/dreikanter/wp2md

Anschließend kann wp2md für dem Export genutzt werden:

wp2md -d output/ export.xml

In der Minimalkonfiguration muss der Ausgabepfad und die Exportdatei angegeben werden. Die Export-Datei wird vorher unter WordPress über Werkzeuge -> Daten exportieren erzeugt. Anschließend erscheinen die Logmeldungen über den Exportfortschritt:

Dumping post to 'output/posts/20180616-pdfs-aus-bildern-mittels-imagemagick-erstellen.md'
Dumping post to 'output/posts/20180617-homebrew-deinstallieren-2.md'
Dumping post to 'output/posts/20180618-fernausloesung-der-kamera-am-iphone.md'
Dumping post to 'output/posts/20180619-transparente-verschluesselung-fuer-cloud-dienste.md'
Dumping post to 'output/posts/20180620-online-vektorisierer-fuer-rastergrafiken.md'
Dumping post to 'output/posts/20180711-zettlr-ein-flexibler-markdown-editor.md'
Dumping post to 'output/posts/20180712-bsnes-neu-aufgelegt.md'
Dumping post to 'output/posts/20180713-enpass-als-1password-alternative.md'
Dumping post to 'output/posts/20180720-ideentool-mit-neuen-generatoren-erschienen.md'
Dumping post to 'output/posts/20180723-cryptomator-laufwerk-verschwindet-unter-macos.md'
Dumping post to 'output/posts/20180725-puffer-fuer-streaming-im-vlc-mediaplayer-erhoehen.md'
Dumping index to 'output/index.md'

Total: posts: 3239; pages: 78; comments: 2878
Elapsed time: 30.55538 s

Neben den eigentlichen Artikeln, werden die dazugehörigen Kommentare exportiert. Daneben werde andere Inhalte wie Seiten und Entwürfe ebenfalls exportiert. Über die Kommandozeilenparameter kann der Export granulärer gesteuert werden. Der Quelltext des Projektes ist auf GitHub zu finden. Lizenziert ist das Projekt unter der GPL in der Version 3 und damit freie Software.

Shell-Befehle Stück für Stück erklärt

Befehle in der Linux-Shell sind für viele Leute meist ein Buch mit sieben Siegeln. Während ein:

cat example.txt | grep "error"

für die meisten Nutzer noch verständlich ist, wird es bei komplexeren Befehlszeilen doch recht unübersichtlich. Für diese Fälle gibt es den Webdienst explainshell.com.

Die Befehlszeile wird Stück für Stück erklärt

Dieser Dienst splittet die einzelnen Befehle und erklärt sie mit Hilfe der Informationen der sogenannten man-Pages. Diese wurden geparst und sind als Datenbasis hinterlegt. Mit Hilfe einer Heuristik werden die einzelnen Befehle erklärt. Der Quelltext für den Dienst, welcher in Python geschrieben wurde, ist auf GitHub zu finden. Lizenziert ist das Projekt unter der GPL3 und damit freie Software.

Z-Wave im Home Assistant aktivieren

Die freie Heimautomationslösung Home Assistant verfügt unter anderem über eine Unterstützung des Z-Wave-Protokolls. Möchte man die Unterstützung für Z-Wave hinzufügen, so muss theoretisch nur die passende Konfiguration hinterlegt werden. In der Praxis gibt es allerdings ein paar Kleinigkeiten mehr zu beachten. Hier wird davon ausgegangen, dass Hass.io als Betriebssystem für Home Assistant genutzt wird. Bevor man mit der Konfiguration beginnt, benötigt man Gerät um sich mit dem Z-Wave-Netzwerk zu verbinden. Empfehlenswert ist hier z.B. der Aeotec Z-Stick Series 5. Daneben existieren eine Reihe weiterere Controller, welche vom Home Assistant unterstützt werden.

Die Anzeige der installierten Add-Ons für Hass.io

Im ersten Schritt sollten im Hass.io-Menü die Add-Ons für SSH und Samba aktiviert werden. Dazu wird die Weboberfläche über die URL:

http://hassio.local:8123

aufgerufen. Nach der Installation der Add-Ons ist es wichtig, diese über den Button Start direkt zu aktivieren. Nachdem das Samba-Add-On aktiviert wurde, kann über die Freigabe der Hass.io-Instanz im Ordner config die Konfiguration eingesehen werden. Wichtig ist hierbei die Datei configuration.yaml. An das Ende dieser Datei fügt man folgende Konfiguration ein:

# Z-Wave
zwave:
  usb_path: /dev/ttyACM0

Damit ist die Konfiguration für Z-Wave abgeschlossen. Um das korrekte Gerät für den Z-Wave-Stick zu ermitteln, loggen wir uns per SSH auf der Hass.io-Instanz ein:

ssh root@hassio.local

und geben dort den Befehl:

hassio host hardware

Dieser Befehl zeigt uns, welche Hardware an dem Raspberry Pi angeschlossen ist. Eine Ausgabe könnte dann z.B. so aussehen:

{
  "serial": [
    "/dev/ttyAMA0"
  ],
  "input": [],
  "disk": [],
  "gpio": [
    "gpiochip0",
    "gpiochip100"
  ],
  "audio": {
    "0": {
      "name": "bcm2835 - bcm2835 ALSA",
      "type": "ALSA",
      "devices": {
        "0": "digital audio playback",
        "1": "digital audio playback"
      }
    }
  }
}

Nachdem der Befehl eingegeben wurde, wird der Z-Wave-Stick an den Raspberry Pi angeschlossen:

{
  "serial": [
    "/dev/ttyACM0",
    "/dev/ttyAMA0"
  ],
  "input": [],
  "disk": [],
  "gpio": [
    "gpiochip0",
    "gpiochip100"
  ],
  "audio": {
    "0": {
      "name": "bcm2835 - bcm2835 ALSA",
      "type": "ALSA",
      "devices": {
        "0": "digital audio playback",
        "1": "digital audio playback"
      }
    }
  }
}

Bei dem neuen Gerät im Abschnitt serial handelt es sich um den Z-Wave-Stick. Seine Gerätebezeichnung übernehmen wir in die Konfiguration. Wird der Stick ab- und später wieder angesteckt, so kann sich die Gerätebezeichnung ändern, so dass dieser Prozess anschließend wiederholt werden muss. Im Falle einer falsch konfigurierten Gerätebezeichnung erhält man auf dem Dashboard eine Fehlermeldung das Z-Wave nicht angesprochen werden konnte. Nachdem der Stick angesteckt ist und die Konfiguration entsprechend erweitert wurde, muss Home Assistant neugestartet werden. Dazu wählt man im Menü Einstellungen den Punkt General und wählt dort im Bereich Server Managment den Button Restart. Nach knapp einer Minute sollte die Weboberfläche wieder verfügbar und Z-Wave aktiv sein.

Heimautomation mittels Home Assistant

Auf dem Markt der Heimautomation gibt es eine Reihe von Standards und viele unterschiedliche Softwarelösungen. Viele dieser Lösungen sind proprietär; einige sind freie Software wie z.B. openHAB oder Calaos. Aus der Kategorie der freien Software sticht Home Assistant hervor. Die in Python 3 geschriebene Software versteht sich als eine umfassende Lösung zur Heimautomation. So wird eine Vielzahl von Standards wie Z-Wave oder das IKEA-Beleuchtungssystemen Tradfri unterstützt.

home-assistant.io

Mittlerweile existieren knapp eintausend Komponenten, welche auf der Webseite des Projektes eingesehen werden können. Diese Komponenten decken eine Vielzahl von Sensoren und Anwendungsmöglichkeiten ab. Dies fängt bei Alarmsensoren an, geht weiter über die Integration von Kalendern, die Steuerungen von Aktoren (wie Thermostaten), die Einbeziehung von Wetter, Luftqualität und anderen Daten und Dingen wie der Steuerung von Media-Playern (z.B. PLEX). Mit jeder neuen Version von Home Assistant finden neue Komponenten ihren Weg in das Projekt.

Die Home Assistant Demo-Seite

Installiert werden kann Home Assistant auf einer Vielzahl von Systemen, von verschiedenen Linux-Distributionen über Windows und macOS. Empfohlen wird allerdings die Installation eines vom Projekt erstellten Raspberry Pi-Images. Dieses hört auf den, für deutsche Ohren gewöhnungsbedürftigen, Titel Hass.io und ist für den Betrieb auf einem Raspberry Pi 3 (Modell B) vorgesehen. In diesem Image sind die Funktionalitäten für den Betrieb von Home Assistant kombiniert. Über eine Weboberfläche kann dieses System konfiguriert werden. So können z.B. SSH- oder Samba-Server aktiviert werden um auf die Konfigurationen von Home Assistant zuzugreifen. Technisch basiert Hass.io auf resinOS und nutzt Docker-Container für die Isolierung der einzelnen Serverkomponenten. Der Quelltext des Home Assistant-Projektes ist auf GitHub zu finden. Lizenziert ist das Projekt unter der Apache-Lizenz in der Version 2.

maybe

Das Terminal ist geöffnet und ein Befehl wie:

rm -rf img*

soll abgesetzt werden. Nun stellt sich die Frage ob man diesen Befehl wirklich so ausführen möchte. Natürlich könnte es sein, das der Befehl zu weit greift, was dazu führt das man mehr löscht als einem lieb ist. Einen Ausweg aus dieser Misere bietet das in Python geschriebene Tool maybe. Installiert werden kann dieses auf der Konsole mittels:

pip install maybe

Führt man nun ein Skript mittels maybe aus:

maybe test.sh

so ermittelt maybe, welche Operationen das Skript vornehmen möchte und zeigt diese an. Nach einer Bestätigung kann der Befehl anschließend ausgeführt werden. Technisch funktioniert das ganze dabei indem der Prozess unter der Kontrolle von ptrace ausgeführt wird. Hierbei werden allerdings nur einige Systemaufrufe blockiert, so das man maybe nur mit Skripten nutzen sollte, welchen man vertraut. Der Quelltext von maybe ist auf GitHub zu finden. Lizenziert ist das Tool unter der GPL in Version 3 und damit freie Software.