Redaktioneller Inhalt des Pendel-Projekt. Beinhaltet die Content-Dateien (Ausgangs- und End-Dateien) sowie die Skripte zum Erstellen und Hochladen nach Uberspace. Mit dem Hochladen werden auf Uberspace nur die fertigen Content-Dateien im Uppload-Verzeichnis von Wordpress kopiert. Das Repository benötigt alles, was der Redakteur benötigt (bis auf die Secrets natürlich). # Setup ## Installation auf Uberspace Beschreibt das einmalige Setup des Projekts. Wordpress wird wie im uberlab beschrieben installiert, allerdings nicht direkt nach /home/kollegen/html, sondern in das Unterverzeichnis _pendel_. ```console $ cd /home/kollegen/html $ mkdir pendel $ cd pendel $ USER=kollegen $ wp core download $ wp config create --dbname=${USER}_wordpress --dbuser=${USER} --dbpass=to-secret-db-password $ wp db create $ wp core install --url=kollegen.uber.space --title="Pendel" --admin_user=kollegen --admin_email=kollegen@uber.space Admin password: top-secret-admin-password $ wp option update siteurl $(wp option get siteurl)/pendel ``` Wichtig sind die URLs in den Einstellungen / Allgemein bzw. in der Datenbanktabelle `wp_options`. Feld | Name | Wert -------- | -------- | -------- siteurl | Website-Adresse (URL) | http://kollegen.uber.space/pendel home | WordPress-Adresse (URL) | http://kollegen.uber.space/pendel Das Worpress-Plugin s. https://github.com/chs8691/pendel S. auch [deliciousbrains.com/move-wordpress-root-subdirectory](https://deliciousbrains.com/move-wordpress-root-subdirectory/) ## Lokales Setup Auf einem Linux-Rechner muss installiert sein: * exiftool * sshpass * rsync * git * Digikam * Browser _chromium_ ## Digikam Es ist das Wurzelverzeichnis `~/Pictures/digikam` anzulegen in Digikam als Album einzurichten. Darin ist folgende Albenstruktur anzulegen: ```text 🗁 Alben 🗁 Import # Import- und Arbeitsverzeichnis 🗁 Digikam 🗁 pendel # Ausgang für Pendel ``` Digikam muss eingerichtet werden, damit geänderte Metadaten als XMP-Metadaten geschrieben werden und somit vom exiftool ausgelesen werden können. Unter _Einstellungen > Digikam einrichten > Metadaten > Verhalten > Informationen als Metadaten schreiben_: * Beschriftung und Titel: ☑ * Geolokalisierungsinformationen (GPS): ☑ ## Pendel-Repository Ist auszuchecken nach `~/kollegen`. ```console $ cd ~/kollegen $ git clone https://kollegen.uber.space/gitea/website/pendel.git ``` In das Verzeichnis noch die Datei _credentials_ aus dem Keepass hinzufügen. Die Verzeichnisstruktur sieht dann wie folgt aus: ```text 🗁 ~/kollegen/pendel 🗁 in # Eingangsdaten 🗁 out # Ausgangsdaten credentials # Secrets # *.sh readme.md # Diese Datei ``` # Workflow Die Arbeitsschritte vom gespeicherten Foto bis zum Update der Website: ```mermaid flowchart TB subgraph digikam[Digikam] prepare[Bild bearbeiten\n und Tile erstellen] end subgraph scripts[Skripting] direction LR subgraph pendel["/pendel"] direction TB in[Eingangsdateien\n hinzufügen] out[Upload-Dateien\n generieren] end subgraph uberspace[Uberspace] direction TB upload[Hochladen] update[Website generieren] end end prepare --> in in --> out pendel --> uberspace upload --> update ``` # Redaktionelles Arbeiten Um einen weiteren Eintrag dem Projekt hinzuzufügen, werden folgende Dateien benötigt: * **Original** - Jpeg-Datei mit Meta-Daten * _gpsposition_: Längen- und Breitengrad * _title_ im Format `Pendel ` * _description_ Nicht zu lang, einzeilig * Endung: muss _jpg_ lauten (klein geschrieben) * **Tiles** - Jpeg-Datei mit einem rechteckigem Bild-Ausschnitt * Dateiname: _tile\_\_ * Keine GPS-Daten nötig * Größe: 500 x 500 px * Ausschnittbreite: ca. 3% vom Original | Breite | Ausschnitt |---|--- | 3.264 | 100 | 6.240 | 188 Da die GPS-Position bereits im JPEG ist, wird die TCX-Datei nicht mehr benötigt. Es wird nun exemplarisch beschrieben, wie ein neuer Pendel-Eintrag _100_ erzeugt wird. Soweit nicht anders angegeben, können die Skripte aus jedem beliebigen Verzeichnis heraus aufgerufen werden. ## Digikam Im Album _digikam/Pendel_ das Unteralbum _100_ hinzufügen. Das importierte Bild bearbeiten und mit Titel und Beschreibung versehen. Ggf. Geo-Daten hinzufügen. Tiles-Bild daraus erstellen. Das fertige Bild und die erstellte Tile-Datei dort ablegen. Das fertige Album sieht dann wie folgt aus: ```text 🗁 Alben 🗁 Digikam 🗁 pendel 🗁 100 🖻 20230901-182900-X-S10.jpg 🖻 tile_20230901-182900-X-S10.jpg ``` ## In-Verzeichnis Beinhaltet für jede Fahrt ein Unterverzeichnis mit den Eingangsdateien. > **HINWEIS** > Nur mit dieser Verzeichnisstruktur wird definiert, welches Bild in welcher Pendel-Fahrt ist. Per Skript _import.sh_ wird ein neues Verzeichnis _100_ mit den kopierten Bildern angelegt. ```console $ ~/kollegen/pendel/import.sh 100 Importing pendel 100... Create /home/chris/kollegen/pendel/in/100 Imported into /home/chris/kollegen/pendel/in/100: 20230901-182900-X-S10.jpg tile_20230901-182900-X-S10.jpg ``` ## Out erstellen Flaches Verzeichnis mit optimierten Bildern, Tiles sowie der Datei _gps.csv_ mit den Metadaten aller Fahrten. Per Skript _create-out.sh_ wird dieses um den neuen Eintrag ergänzt: ```console $ ~/kollegen/pendel/create-out.sh 100 Add 100 to /home/chris/kollegen/pendel/out Copy, convert and chmod 20230901-182900-X-S10.jpg... Copy and chmod tile_20230901-182900-X-S10.jpg... Create and chmod gps.csv... Done. ``` ## Wordpress aktualisieren Skript `deploy.sh` aufrufen. ~/kollegen/pendel/deploy.sh Es besteht aus zwei Schritten: * Durch Synchronisation des lokalen Ordner `out` mit dem Plugin-Ordner werden die lokalen Änderungen hochgeladen. * Mit dem Durchstarten des Plugins wird die Leinwand neu aufgebaut. Die Ausgaben zeigt, dass alles geklappt hat: ```console --- STEP 1: Uploading changes to wordpress plugin sending incremental file list ./ 20230901-182900-X-S10.jpg gps.csv tile_20230901-182900-X-S10.jpg sent 214.906 bytes received 166 bytes 86.028,80 bytes/sec total size is 30.949.478 speedup is 143,90 --- STEP 2: Reactivating plugin Plugin 'pendel' deactivated. Success: Deactivated 1 of 1 plugins. Plugin 'pendel' activated. Success: Activated 1 of 1 plugins. ``` Die so hochgeladenen Daten werden aber noch nicht verwendet. > ❗HINWEIS > Damit nicht gitea die SSH-Befehle interpretiert, müssen alle per SSH ausgeführten Commands in der Datei `.ssh/authorized_keys` eingetragen sein. ### Hintergrundinfos #### GPS in Datei extrahieren Wenn alle jpg in direkten Unterverzeichnissen liegen und mit einer Zahl anfangen, kann so eine Datei mit GPS-Location erstellt werden: ```console $ cd ~/kollegen/pendel $ find in/ -regex in/[0-9][0-9][0-9]/[0-9].*\.jpg | xargs exiftool -filename -gpsposition -n -s -t -S -q -f > out/gps.csv ``` #### Track-Dateien Die ersten Pendel-Fahrten wurden aus der Track-Datei mit den GPS-Daten getaggt. Mittlerweile sind die GPS-Daten bereits in der Bild-Datei vorhanden, so dass die Track-Datei nicht mehr nötig ist. ##### EXIF und Zeitdifferenz Relevant ist _createdatetime_ und _gpsdatetime. In den GPX-Tracks habe ich keine Zeitzone gefunden (gpx, tcx von Polar als auch der Tracker-App) ##### Korrektur der Exif-Zeit Bsp. GPX um eine Stunde vor. Ermitteln: exiftool -createdate img.jpg --> ...2017:08:23 07:43:21 head -c 200 001.gpx --> ... Korrektur der Exifzeit um eine Stunden nach vorne: exiftool -datetimeoriginal+=1 -createdate+=1 20170823-074258-DSCF5765.jpg ##### Zeitzone exiftool verwendet beim geotaggen die Timezone des Rechners für die Bild-Zeit, wenn keine Zeitzone im exif gesetzt ist. Um die Verwendung der Rechner-Zeitzone zu unterbinden, muss man _createdate_ explizit ohne Zeitzone für GPS-Tagging verwenden. Beispiel: ```console $ exiftool -geotag Christian_Schulzendorff_2017-08-23_06-54-06.gpx '-geotime<${createdate}+00:00' 20170823-074258-DSCF5765.jpg ``` Als Kopiervorlage ```console exiftool -geotag '-geotime<${createdate}+00:00' ```