13 changed files with 291 additions and 74 deletions
@ -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/ |
|
||||||
|
|
||||||
@ -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 |
||||||
@ -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 |
|
||||||
! |
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 12 MiB |
|
After Width: | Height: | Size: 47 KiB |
@ -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 |
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 579 KiB After Width: | Height: | Size: 580 KiB |
|
After Width: | Height: | Size: 173 KiB |
|
|
After Width: | Height: | Size: 47 KiB |
@ -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…
Reference in new issue