diff --git a/copy-to-bitnami-wp.sh b/copy-to-bitnami-wp.sh deleted file mode 100755 index 4823d31..0000000 --- a/copy-to-bitnami-wp.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -IN="/home/chris/pendel/out" -OUT="/home/chris/lampstack-7.1.12-0/apps/wordpress/htdocs/wp-content/uploads/pendel/ffm" -echo Replace $OUT with $IN -rm -r $OUT/* -cp -v $IN/* $OUT/ - diff --git a/create-out.sh b/create-out.sh index dd86147..2ea85ca 100755 --- a/create-out.sh +++ b/create-out.sh @@ -1,6 +1,6 @@ #!/bin/bash -IN="/home/chris/pendel/in" -OUT="/home/chris/pendel/out" +IN="/home/chris/kollegen/pendel/in" +OUT="/home/chris/kollegen/pendel/out" # case in-sensitive matching shopt -s nocaseglob diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..fd95d21 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,12 @@ +#!/bin/bash +USER=kollegen +HOST=despina.uberspace.de + +OUT="/home/chris/kollegen/pendel/out/" + +# the directory where your web site files should go +DIR=/home/kollegen/html/pendel/wp-content/uploads/pendel/ffm + +rsync -avz $OUT ${USER}@${HOST}:${DIR} + +exit 0 diff --git a/earls5sftp.sh b/earls5sftp.sh deleted file mode 100755 index c15399b..0000000 --- a/earls5sftp.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# Upload files to host -# There must be a file 'credentials' with two line: -# host-username yourusername -# host-password yourtopsecretpassword -IN="/home/chris/pendel/in/$1" -OUT="/home/chris/pendel/out" - -# case in-sensitive matching -shopt -s nocaseglob - -if [ -z "$1" ] - then echo Missing pendel nr. - exit 0 -else - echo Exporting pendel "$1" to earls5... -fi - -# We need the image files from the particular spot... -for file in $IN/*.jpg; do - files[i]=$OUT/$(basename "$file") - (( ++i )) -done - -# ...and the gps.csv -files[i]="$OUT/gps.csv" - - -export SSHPASS=$(grep -Po "(?<=^host-password ).*" credentials) -username=$(grep -Po "(?<=^host-username ).*" credentials) - -sshpass -v -e sftp -oBatchMode=no -b - $username@olbers.uberspace.de << ! - cd html/pendel/wp-content/uploads/pendel/ffm - put "${files[0]}" - put "${files[1]}" - put "${files[2]}" - bye -! - diff --git a/import.sh b/import.sh index b4f1bc0..af57b99 100755 --- a/import.sh +++ b/import.sh @@ -1,6 +1,6 @@ #!/bin/bash -SRC="/home/chris/photo/02_Progress/pendel" -DST="/home/chris/pendel/in" +SRC="/home/chris/Pictures/digikam/pendel" +DST="/home/chris/kollegen/pendel/in" # case in-sensitive matching @@ -16,9 +16,9 @@ if [ ! -e $DST/$1 ] mkdir $DST/$1 fi -# Copy images from final +# Copy images from Digikam album i=0 -for file in $SRC/$1/final/*.jpg; do +for file in $SRC/$1/*.jpg; do imgs[i]="$file" (( ++i )) done @@ -26,23 +26,14 @@ for file in "${imgs[@]}"; do cp "$file" "$DST/$1" done -# Copy tcx or gpx file from work directory -for file in $SRC/$1/work/*.*x; do - tcxs[i]="$file" - (( ++i )) -done -for file in "${tcxs[@]}"; do - cp "$file" "$DST/$1" -done - -# Copy tile file from work directory -for file in $SRC/$1/work/tile_*.jpg; do - tiles[i]="$file" - (( ++i )) -done -for file in "${tiles[@]}"; do - cp "$file" "$DST/$1" -done +# # Copy tcx or gpx file from work directory +# for file in $SRC/$1/work/*.*x; do +# tcxs[i]="$file" +# (( ++i )) +# done +# for file in "${tcxs[@]}"; do +# cp "$file" "$DST/$1" +# done # List dir echo Imported into "$DST/$1": diff --git a/in/100/20230901-182900-X-S10.jpg b/in/100/20230901-182900-X-S10.jpg new file mode 100644 index 0000000..0c49750 Binary files /dev/null and b/in/100/20230901-182900-X-S10.jpg differ diff --git a/in/100/tile_20230901-182900-X-S10.jpg b/in/100/tile_20230901-182900-X-S10.jpg new file mode 100644 index 0000000..b34bb73 Binary files /dev/null and b/in/100/tile_20230901-182900-X-S10.jpg differ diff --git a/leinwandRefresh.sh b/leinwandRefresh.sh index cc51d4b..82f9039 100755 --- a/leinwandRefresh.sh +++ b/leinwandRefresh.sh @@ -1,5 +1,5 @@ #!/bin/bash username=$(grep -Po "(?<=^host-username ).*" credentials) refreshcode=$(grep -Po "(?<=^refreshcode ).*" credentials) -chromium-browser http://earls5.uber.space/pendel/leinwand/?refreshcode=$refreshcode +chromium http://kollegen.uber.space/pendel/?refreshcode=$refreshcode diff --git a/out/20170313-180536-DSCF4779.jpg b/out/20170313-180536-DSCF4779.jpg index af268bd..7f36b7c 100644 Binary files a/out/20170313-180536-DSCF4779.jpg and b/out/20170313-180536-DSCF4779.jpg differ diff --git a/out/20230901-182900-X-S10.jpg b/out/20230901-182900-X-S10.jpg new file mode 100644 index 0000000..abf6e48 Binary files /dev/null and b/out/20230901-182900-X-S10.jpg differ diff --git a/out/gps.csv b/out/gps.csv index 6ed0cea..024a7a5 100644 --- a/out/gps.csv +++ b/out/gps.csv @@ -97,3 +97,4 @@ 20200131-054724-DSCF0578.jpg 50.2028199959083 9.18310924928611 Pendel XCVII Der einsame Knabe, Grimmelshausen Gymnasium Gelnhausen 20200207-080411-DSCF0595.jpg 50.1230069738278 8.89420810026945 Pendel XCVIII An der B43, Steinheim am Main 20200309-191959-DSCF0639.jpg 50.179867298175 8.92629624202222 Pendel XCIX Abendglocken, Bruchköbel +20230901-182900-X-S10.jpg 50.1122069444444 8.80916666666667 Pendel C Freilauf diff --git a/out/tile_20230901-182900-X-S10.jpg b/out/tile_20230901-182900-X-S10.jpg new file mode 100644 index 0000000..b34bb73 Binary files /dev/null and b/out/tile_20230901-182900-X-S10.jpg differ diff --git a/readme.md b/readme.md index 03bfa31..6874176 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,265 @@ -# pendel-scripts -Shell scripts for preparing and uploading images to the pendel blog +Redaktioneller Inhalt des Pendel-Projekt. Beinhaltet die Content-Dateien (Ausgangs- und End-Dateien) sowie die Skripte zum Erstellen und Hochladen nach Uberspace. -Bundle of small bash scripts to prepare and upload image files to the Pendel Blog on http://earls5.menkent.uberspace.de/pendel. -You can find the workflow description in the post https://christian-schulzendorff.blogspot.com/2018/05/pendel-foto-leinwand.html (German). +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. +``` + +## Upload nach Uberspace + +Skript `deploy.sh` aufrufen. + +```console +$ ~/kollegen/pendel/deploy.sh +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 +``` + +Die so hochgeladenen Daten werden aber noch nicht verwendet. + +## Leinwand neu erzeugen + +Per Skript `leinwandRefresh.sh` wird die Leinwand nun neu genierert. + +```console +$ ~/kollegen/pendel/leinwandRefresh.sh +``` + +Wenn es denn klappen würde. Bis das behoben ist, muss das Plugin de- und wieder aktiviert werden. + +### 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' +``` \ No newline at end of file