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

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
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":

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

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

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