Pendel Foto Leinwand
Workflow vom Foto bis zur Pendel-Leinwand. Mit der Kamera unterwegs zur Arbeit und dann das Bild per Skript zum Plugin in Wordpress hochladen.
2017 habe ich mit dem Pendel-Projekt eine Website angefangen, welcher sukzessive um neue Fotos erweitert wird. Die Fotos entstehen auf dem Weg zur Arbeit, werden um Geo-Koordinaten und Beschriftung erweitert und dann, pro Foto, als Datei-Tripel in den Blog hochgeladen. Da das Projekt noch eine Weile laufen soll, also immer wieder eine neues Foto hochzuladen ist, soll der Prozess so einfach wie möglich durchgeführt werden können. Ich habe also überlegt, wie das Dateisystem zu organisieren ist und welche Arbeitsschritte ohne großen Zeitaufwand zu automatisieren sind.
Herausgekommen ist der hier vorgestellte Workflow, der eher praktisch als perfekt ist. Er zeigt aber, wie man mit relativ wenig Aufwand so eine Aufgabe vereinfachen und strukturieren kann.
Zum Verständnis schauen wir kurz auf die Website.
Leinwand
Das Bild zeigt die Seite Leinwand aus der Wordpress-Website. Man erkennt die Kacheln, welche anhand ihrer GEO-Koordinate auf der Seite platziert sind. Klickt man auf einen Kachel, wird das Bild in einem Viewer dargestellt.
Einzelbild-Viewer
Ablauf und Tooling wird hier nun kurz vorgestellt; einerseits als Dokumentation für mich selbst und andererseits als Anregung für ähnliche Aufgabenstellung.
Den Workflow führe ich auf einem Linux-Rechner durch, so dass Bash-Skripte verwendet werden können.
Die hier verwendeten Skripte findet ihr auf github.com/chs8691/pendel-workflow. Das weiter unten erwähnte fow-Tool wird im Beitrag fow - Foto-Workflow-Tool beschrieben. Das Wordpress-Plugin liegt ebenfalls auf Github unter github.com/chs8691/pendel.
Übersicht⌗
Folgende Schritte werden durchlaufen, um die Fotos von der Kamera in den Blog zu posten:
-
Import
- Bilddateien von der Kamera auf den Rechner herunterladen
- Pro Fahrt die TCX-Datei von Polar Flow herunterladen
-
Bildbearbeitung
- Bilder nach Fahrten gruppieren und Fahrtennummer vergeben (z.B. 027)
- Je Fahrt Bilder aussortieren und ein Bild finalisieren
- Quadratischen Ausschnitt 500x500 für die Kachel erstellen
- Titel und Beschriftungen dem finalisierten Bild hinzufügen
- GPS-Koordinaten dem finalisierten Bild hinzufügen
-
Out erstellen
- Bild auf Blog-Größe verkleinern (1900x1200)
- Plugin-Datendatei um Eintrag ergänzen (GPS, Titel, Beschriftung)
-
Upload
- Nach Wordpress hochladen
- Wordpress-Datenbank aktualisieren
Neben den erwarteten Tätigkeiten für Bildbearbeitung- und -organisation kommt hier also noch die Aufbereitung in das vom Plugin erwartetem Format nebst Datendatei hinzu. Diese Datendatei (gps.csv) enthält die relevanten EXIF-Daten der Bilder, da das Plugin selbst keine EXIF-Daten auswertet (Der Grund hierfür ist profan: die eingesetzte PHP-Version kann die EXIF-Daten von meiner Fujifilm-Kamera nicht auslesen).
Workflow
Das Bild zeigt die vier Workflowschritte und darunter die wesentlichen Tools/Skripte. Im unteren Teil sieht man die Artefakte des jeweiligen Schritts und die Datensicherung auf dem lokalen Server.
Schauen wir uns nun die Schritte etwas genauer an.
Import und Bildbearbeitung⌗
Die Verzeichnisstruktur für Import und Bildbearbeitung werden durch die Verwendung von fow vorgegeben. Pro Fahrt wird ein fow-Task angelegt, der aus einer dreistelligen Nummer besteht. Diese Nummer dient dann den folgenden Skripten als Argument, so dass immer genau eine Fahrt prozessiert werden kann. Man muss natürlich nicht zwingend fow einsetzen, wesentlich ist, dass es eine Verzeichnis mit der Fahrtnummer gibt. Den Verzeichnispfad im import-Skritpt wird man sowieso seiner Rechnerstruktur anpassen müssen, bei mir liegt fow unter ~/egh/photo.
fow-Verzeichnis
Für das Wordpress-Plugin wird pro Fahrt das finale Bild und eine quadratischer 500X500 Bildausschnitt für die Kacheldatei (100x100) benötigt. Als Bildbearbeitung kommt Darktable zum Einsatz. Hier werden die Voreinstellung der jeweiligen Tools genutzt:
-
Zur Erstellung eines 500x500-Ausschnitts wird Zuschneiden und drehen verwendet.
Darktable: Ausschnitt für Kachel zuschneiden
-
Finale-Datei wird unter /final abgelegt
-
Kachel-Datei wird unter work abgelegt
Fehlt noch die Trackdatei, welche mit der Polar M440 aufgezeichnet wird. Die Uhr muss per Windows-PC nach Polar Flow synchronisiert werden. Anschließend kann die TCX-Datei heruntergeladen und im work-Order des fow-Task abgelegt werden. Das erledige ich per Hand. Am Ende besteht der fow-Task einer Fahrt dann aus folgenden Dateien:
fow-Ergebnis
Diese drei Artefakte sind das Ergebnis der Bildbearbeitung. Sie dienen als Eingang für den nächsten Schritt In/Out erstellen. Dazu gehört auch das ziehen eines Backups, da das fow-Verzeichnis nicht gesichert wird.
In/Out erstellen⌗
Wie der Schrittname erkennen lässt, besteht das Erstellen der Dateien für das Wordpress-Plugin aus zwei Teilen:
- IN ordnet die bisher erstellten Artefakte in eine feste Verzeichnisstruktur
- OUT beinhaltet die fertigen Dateien, die dann hochgeladen werden können
Für beide Schritte gibt es je ein Skript, was die Arbeit erledigt. Alle Dateien dieses Schrittes (Fahrt-Artefakte und Skripte) liegen in einem eigens dafür vorgesehen Verzeichnis ~/pendel
. Die Skripte werden aus diesem Verzeichnis heraus ausgeführt. Zusätzlich wird von dem gesamten Verzeichnis ein Backup auf den lokalen Server gemacht.
Verzeichnis für In/Out
IN⌗
Ziel
Kopieren der drei Dateien einer Fahrt aus dem fow-Task in ein gleichnamiges Unterverzeichnis. Dazu dient das Skript import.sh. Um z. B. die Fahrt 035 zu erstellen ruft man
./import.sh 035
auf, womit pendel/in/035 angelegt wird.
import 035
In dem Skript sind absolute Pfade hinterlegt, die sind ggf. anzupassen.
OUT⌗
Ziel
Erzeugung/Ergänzung der drei Zieldateien für das Wordpress-Plugin.
Das Plugin erwartet pro Fahrt ein Bild in einer Standardgröße von 1900x1200, die Kacheldatei (Teilauschnitt) als 100x100 und eine neue Zeile in der gps.csv-Datei, mit folgendem Format (alle Werte sind TAB-getrennt:
- Dateiname
- BreitengradLängengrad in Dezimalformat
- Titel
- Untertitel
Z.B.:
20180502-065848-DSCF6733.jpg
50.1852190088547 9.12886915360833
Pendel XXXV
Kleine Brücke, Meerholz
Zur Durchführung ruft man das Skript create-out.sh mit der Fahrtnummer auf:
create-out 035
Das Skript macht nun genau dies:
- Kopieren der Bilddatei und konvertieren in die gewünschte Größe
- Kopieren der Kacheldatei
- Ergänzen der Datei gps.csv um eine neue Zeile
Da hier keine absoluten Pfade benötigt werden, sollte das Skript ohne Anpassung laufen.
Backup⌗
Hat man out ergänzt, ist eine gute Gelegenheit, die Dateien zu sichern, da nun sowohl die Ausgangsdateien als als die Zielartefakte erstellt sind. Das Skript rsync-to-diskstation macht das per rsync auf den lokalen Server.
Dieses Skript ist natürlich bzgl. des Zielpfades wieder anzupassen.
Im letzten Schritt wird nun die Fahrt dem Wordpress-Plugin hochgeladen.
Upload⌗
Ziel
Hochladen der relevanten Dateien einer Fahrt in das Wordpress-Uploads-Verzeichnis.
Das Plugin erwartet die Dateien in einem Unterordner von uploads/pendel, hier uploads/pendel/ffm (wird in der Plugin-Konfiguration eingestellt). Das Skript earls5sftp ist dafür eingerichtet. Es lädt die die drei unter OUT geänderten Dateien auf den Server hoch:
./earls5sftp.sh 035
Upload für Fahrt 035
Das Skript ist für den jeweiligen Blog anzupassen.
Danach muss nur noch das Plugin refresht werden und das Ziel ist erreicht: Die neue Kachel ist auf der Leinwand platziert.
Fazit⌗
Schnell und mit wenig Aufwand lästige Handarbeit automatisieren - dafür eignet sich Bash-Skripting gut. Der Workflow hilft mir, das Doing zu standardisieren, nur so ist ein effizientes Arbeiten möglich.