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 |
||||
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 |
||||
|
||||
|
||||
|
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 |
||||
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…
Reference in new issue