Browse Source

readme.md updated

master
Chris 2 years ago
parent
commit
1584883b92
  1. 7
      copy-to-bitnami-wp.sh
  2. 4
      create-out.sh
  3. 12
      deploy.sh
  4. 39
      earls5sftp.sh
  5. 33
      import.sh
  6. BIN
      in/100/20230901-182900-X-S10.jpg
  7. BIN
      in/100/tile_20230901-182900-X-S10.jpg
  8. 2
      leinwandRefresh.sh
  9. BIN
      out/20170313-180536-DSCF4779.jpg
  10. BIN
      out/20230901-182900-X-S10.jpg
  11. 1
      out/gps.csv
  12. BIN
      out/tile_20230901-182900-X-S10.jpg
  13. 267
      readme.md

7
copy-to-bitnami-wp.sh

@ -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/

4
create-out.sh

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
IN="/home/chris/pendel/in" IN="/home/chris/kollegen/pendel/in"
OUT="/home/chris/pendel/out" OUT="/home/chris/kollegen/pendel/out"
# case in-sensitive matching # case in-sensitive matching
shopt -s nocaseglob shopt -s nocaseglob

12
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

39
earls5sftp.sh

@ -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
!

33
import.sh

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
SRC="/home/chris/photo/02_Progress/pendel" SRC="/home/chris/Pictures/digikam/pendel"
DST="/home/chris/pendel/in" DST="/home/chris/kollegen/pendel/in"
# case in-sensitive matching # case in-sensitive matching
@ -16,9 +16,9 @@ if [ ! -e $DST/$1 ]
mkdir $DST/$1 mkdir $DST/$1
fi fi
# Copy images from final # Copy images from Digikam album
i=0 i=0
for file in $SRC/$1/final/*.jpg; do for file in $SRC/$1/*.jpg; do
imgs[i]="$file" imgs[i]="$file"
(( ++i )) (( ++i ))
done done
@ -26,23 +26,14 @@ for file in "${imgs[@]}"; do
cp "$file" "$DST/$1" cp "$file" "$DST/$1"
done done
# Copy tcx or gpx file from work directory # # Copy tcx or gpx file from work directory
for file in $SRC/$1/work/*.*x; do # for file in $SRC/$1/work/*.*x; do
tcxs[i]="$file" # tcxs[i]="$file"
(( ++i )) # (( ++i ))
done # done
for file in "${tcxs[@]}"; do # for file in "${tcxs[@]}"; do
cp "$file" "$DST/$1" # cp "$file" "$DST/$1"
done # 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
# List dir # List dir
echo Imported into "$DST/$1": echo Imported into "$DST/$1":

BIN
in/100/20230901-182900-X-S10.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

BIN
in/100/tile_20230901-182900-X-S10.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

2
leinwandRefresh.sh

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
username=$(grep -Po "(?<=^host-username ).*" credentials) username=$(grep -Po "(?<=^host-username ).*" credentials)
refreshcode=$(grep -Po "(?<=^refreshcode ).*" credentials) refreshcode=$(grep -Po "(?<=^refreshcode ).*" credentials)
chromium-browser http://earls5.uber.space/pendel/leinwand/?refreshcode=$refreshcode chromium http://kollegen.uber.space/pendel/?refreshcode=$refreshcode

BIN
out/20170313-180536-DSCF4779.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 579 KiB

After

Width:  |  Height:  |  Size: 580 KiB

BIN
out/20230901-182900-X-S10.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

1
out/gps.csv

@ -97,3 +97,4 @@
20200131-054724-DSCF0578.jpg 50.2028199959083 9.18310924928611 Pendel XCVII Der einsame Knabe, Grimmelshausen Gymnasium Gelnhausen 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 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 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

1 20170313-180536-DSCF4779.jpg 50.1555543999528 8.95522409999722 Pendel I Baerlauchwald
97 20200131-054724-DSCF0578.jpg 50.2028199959083 9.18310924928611 Pendel XCVII Der einsame Knabe, Grimmelshausen Gymnasium Gelnhausen
98 20200207-080411-DSCF0595.jpg 50.1230069738278 8.89420810026945 Pendel XCVIII An der B43, Steinheim am Main
99 20200309-191959-DSCF0639.jpg 50.179867298175 8.92629624202222 Pendel XCIX Abendglocken, Bruchköbel
100 20230901-182900-X-S10.jpg 50.1122069444444 8.80916666666667 Pendel C Freilauf

BIN
out/tile_20230901-182900-X-S10.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

267
readme.md

@ -1,6 +1,265 @@
# pendel-scripts Redaktioneller Inhalt des Pendel-Projekt. Beinhaltet die Content-Dateien (Ausgangs- und End-Dateien) sowie die Skripte zum Erstellen und Hochladen nach Uberspace.
Shell scripts for preparing and uploading images to the pendel blog
Bundle of small bash scripts to prepare and upload image files to the Pendel Blog on http://earls5.menkent.uberspace.de/pendel. Mit dem Hochladen werden auf Uberspace nur die fertigen Content-Dateien im Uppload-Verzeichnis von Wordpress kopiert.
You can find the workflow description in the post https://christian-schulzendorff.blogspot.com/2018/05/pendel-foto-leinwand.html (German).
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
<bash-skripte> # *.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 <Römische Zahl>`
* _description_ Nicht zu lang, einzeilig
* Endung: muss _jpg_ lauten (klein geschrieben)
* **Tiles** - Jpeg-Datei mit einem rechteckigem Bild-Ausschnitt
* Dateiname: _tile\_\<Original-Dateiname\>_
* 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 --> ...<time>2017-08-23T08:42:58.000Z</time>
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'
```
Loading…
Cancel
Save