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 ``` 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
* Für Title und Beschreibung:
ENTWEDER * _title_ im Format `Pendel ` * _description_ Kurz und einzeilig
ODER * _title_ im Format `Pendel - ` * _description_ -- Wird ignoriert -- * Endung: muss _jpg_ lauten (klein geschrieben) * Landscape - Kein Hochkant! * **Tiles** - Jpeg-Datei mit einem rechteckigem Bild-Ausschnitt * Dateiname: _tile\_\_ * Keine GPS-Daten nötig * Größe: 100 x 100 px * Ausschnittbreite: ca. 3% vom Original | Breite | Ausschnitt |---|--- | 3.264 | 100 | 6.240 | 188 | 7.728 | 232 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. > Die Dateinamen müssen, auch in der Groß-/Kleinschreibung hinter `tile_` identisch sein 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 ``` ## Import durchführen Verzeichnis `out` ist ein flaches Verzeichnis mit verkleinerten Bildern, Tiles sowie der Datei _gps.csv_ mit den Metadaten aller Fahrten. Per Skript `import.sh` wird dieses um den neuen Eintrag ergänzt: ```console $ ~/kollegen/pendel/import.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 Voraussetzung: Auf dem Rechner ist der SSH-Key chris@egh installiert. 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. ### Troubleshooting **F Neues Bild/Tile wird nach dem deploy nicht angezeigt** **A** Kann mehrere Ursachen haben: * Dateiname von Bild `` und Tile `tile_` stimmen nicht exakt übereinstimmen * Dateiname in `gps.csv` stimmt nicht exakt überein Passiert schnell, wenn mehrere Bildversionen hochgeladen werden. Dann per SSH aller Bilder mit Zeitstempel löschen und per import den Eintrag erneut erzeugen und hochladen. ### Hintergrundinfos #### Datei gps.csv Die Spalten sind mit Tabs getrennt. Aufbau: 1. Dateiname 1. Longitude 1. Latitude 1. Titel 1. Beschreibung ### Alter Kram #### 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' ```