Digitale Bilder, ein Wikibuch/Download: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(Neuanlage)
 
(Neufassung)
Zeile 1: Zeile 1:
 +
{{Digitale Fotos Navibox}}
 +
 
==<font color="maroon"> Einleitung </font>==
 
==<font color="maroon"> Einleitung </font>==
  
 
Das hier vorgestellte Bashscript automatisiert das Herunterladen und Speichern der Rohbilder. Die Vorgehensweise ist folgende:
 
Das hier vorgestellte Bashscript automatisiert das Herunterladen und Speichern der Rohbilder. Die Vorgehensweise ist folgende:
  
* Kamera mit einem USB-Kabel mit dem PC verbinden
+
* Kamera mit einem USB-Kabel mit dem PC verbinden und einschalten
* Script starten
+
* Das Script startet automatisch (wie, das erkläre ich im nächsten Kapitel des Wiki-Buches) oder man startet es mit Hilfe einer Desktop-Datei
 
* Kategorie auswählen, wohin die Bilder gespeichert werden sollen
 
* Kategorie auswählen, wohin die Bilder gespeichert werden sollen
* Kamera einschalten
 
 
* Auf OK drücken
 
* Auf OK drücken
  
Das Bashscript überprüft nun, wieviele Verzeichnisse für Bilderserien in der gewählten Kategorie bereits existieren und generiert ein neues Verzeichnis für die neuen Fotos. Dieses Verzeichnis erhält die nächstfreie fortlaufende Nummer als Namen (4stellig mit führenden Nullen). Anschließend werden die Bilder von der Kamera geholt und in dem neuen Verzeichnis gespeichert. In diesem Zuge werden die Bilddateien auch gleich umbenannt.
+
Das Bashscript überprüft nun, wieviele Verzeichnisse für Bilderserien in der gewählten Kategorie im aktuellen Jahr bereits existieren und generiert ein neues Verzeichnis für die neuen Fotos. Dieses Verzeichnis erhält die nächstfreie fortlaufende Nummer als Namen (4stellig mit führenden Nullen). Anschließend werden die Bilder von der Kamera geholt und in dem neuen Verzeichnis gespeichert. In dem Zug werden die Bilddateien auch gleich umbenannt.
 
Geht alles automatisch...
 
Geht alles automatisch...
  
Zeile 18: Zeile 19:
 
#!/bin/bash
 
#!/bin/bash
  
# ========================================== Definitionen ==========================================
+
# =========================================== Vorbereitungen =========================================
 
 
hauptverzeichnis=$HOME/Bilder
 
 
 
unterverzeichnis_bilder="$hauptverzeichnis"/bilder
 
unterverzeichnis_negative="$hauptverzeichnis"/negative
 
unterverzeichnis_baeren="$hauptverzeichnis"/baeren
 
  
# =================================== Verzeichnisstruktur erstellen ==================================
+
# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Definitionen °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
  
mkdir -p "$unterverzeichnis_bilder"/cr2
+
rohverzeichnis=$HOME/Bilder/RAW
mkdir -p "$unterverzeichnis_bilder"/jpg
 
mkdir -p "$unterverzeichnis_bilder"/tif
 
  
mkdir -p "$unterverzeichnis_negative"/cr2
+
kategorie_1=Archiv
mkdir -p "$unterverzeichnis_negative"/jpg
+
kategorie_2=Baeren
mkdir -p "$unterverzeichnis_negative"/tif
+
kategorie_3=Sonstiges
  
mkdir -p "$unterverzeichnis_baeren"/cr2
+
jahr=`date +%Y`
mkdir -p "$unterverzeichnis_baeren"/jpg
 
mkdir -p "$unterverzeichnis_baeren"/tif
 
  
 
# ============================================== Funktionen ===========================================
 
# ============================================== Funktionen ===========================================
Zeile 63: Zeile 54:
 
}
 
}
  
# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Zuweisungen °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
+
# °°°°°°°°°°°°°°°°°°°°°°°°° Neues Download-Verzeichnis ermitteln und erstellen  °°°°°°°°°°°°°°°°°°°°°°°°°°
  
zuweisung_bilder ()
+
neues_verzeichnis ()
{
 
verzeichnis_cr2="$unterverzeichnis_bilder"/cr2
 
verzeichnis_jpg="$unterverzeichnis_bilder"/jpg
 
verzeichnis_tif="$unterverzeichnis_bilder"/tif
 
zusatz="bilder"
 
}
 
 
 
zuweisung_negative ()
 
{
 
verzeichnis_cr2="$unterverzeichnis_negative"/cr2
 
verzeichnis_jpg="$unterverzeichnis_negative"/jpg
 
verzeichnis_tif="$unterverzeichnis_negative"/tif
 
zusatz="negative"
 
}
 
 
 
zuweisung_baeren ()
 
 
{
 
{
verzeichnis_cr2="$unterverzeichnis_baeren"/cr2
 
verzeichnis_jpg="$unterverzeichnis_baeren"/jpg
 
verzeichnis_tif="$unterverzeichnis_baeren"/tif
 
zusatz="baeren"
 
}
 
  
# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Download °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
+
jahrverzeichnis="$rohverzeichnis"/"$kategorie"/"$jahr"
 +
mkdir -p "$jahrverzeichnis"
  
neues_verzeichnis ()
+
verzeichnis_alt=`find "$jahrverzeichnis"/* -maxdepth 0 -type d | wc -w`
{
 
verzeichnis_alt=`find "$verzeichnis_cr2"/* -type d | wc -l`
 
 
verzeichnis_neu=$((verzeichnis_alt+1))
 
verzeichnis_neu=$((verzeichnis_alt+1))
  
 
verzeichnis_name=`printf "%.4i" $verzeichnis_neu`
 
verzeichnis_name=`printf "%.4i" $verzeichnis_neu`
  
mkdir "$verzeichnis_cr2"/"$verzeichnis_name"
+
mkdir "$jahrverzeichnis"/"$verzeichnis_name"
 
}
 
}
 +
 +
# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°  Bilder herunterladen °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
  
 
herunterladen ()
 
herunterladen ()
 
{
 
{
cd "$verzeichnis_cr2"/"$verzeichnis_name"
+
cd "$jahrverzeichnis"/"$verzeichnis_name"
gphoto2 --get-all-files --filename %04n_"$zusatz""$verzeichnis_name".%C
+
gphoto2 --get-all-files --filename "$kategorie"-"$jahr"-"$verzeichnis_name"_Photo-%04n.%C
 
if [ $? != 0 ]
 
if [ $? != 0 ]
 
then
 
then
rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
+
rmdir "$jahrverzeichnis"/"$verzeichnis_name"
 
funktionsabbruch "Fehler"
 
funktionsabbruch "Fehler"
 
fi
 
fi
 
}
 
}
 +
 +
# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Gibt es überhaupt etwas zum Herunterladen? °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
  
 
laden_erfolgreich ()
 
laden_erfolgreich ()
 
{
 
{
anzahl=`find "$verzeichnis_cr2"/"$verzeichnis_name"/* -type f | wc -l`
+
anzahl=`find "$jahrverzeichnis"/"$verzeichnis_name"/* -type f | wc -l`
if (( $anzahl = 0 ))
+
if (( $anzahl == 0 ))
 
then
 
then
rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
+
rmdir "$jahrverzeichnis"/"$verzeichnis_name"
 
funktionsabbruch "es gibt nichts zum Laden"
 
funktionsabbruch "es gibt nichts zum Laden"
 
fi
 
fi
 
}
 
}
 
  
 
# ================================================= Hauptprogramm =======================================
 
# ================================================= Hauptprogramm =======================================
  
#-----Menueauswahl-----
+
auswahl_hauptmenue=`kdialog --caption "Herunterladen der Bilder" --geometry 400x400+400+300 --radiolist "Wohin mit den Photos?" \
 
+
1 "$kategorie_1" on \
auswahl_hauptmenue=`kdialog --caption "Hauptmenue" --geometry 200x250+500+400 --radiolist "Download der Bilder?" \
+
2 "$kategorie_2" off \
1 "Bilder" on \
+
3 "$kategorie_3" off`
2 "Bären" off \
 
3 "Negative" off`
 
 
if [ $? != 0 ]
 
if [ $? != 0 ]
 
then
 
then
Zeile 137: Zeile 107:
  
 
case $auswahl_hauptmenue in
 
case $auswahl_hauptmenue in
1) zuweisung_bilder
+
1) kategorie="$kategorie_1"
 
neues_verzeichnis
 
neues_verzeichnis
 
herunterladen
 
herunterladen
 
laden_erfolgreich ;;
 
laden_erfolgreich ;;
  
2) zuweisung_baeren
+
2) kategorie="$kategorie_2"
 
neues_verzeichnis
 
neues_verzeichnis
 
herunterladen
 
herunterladen
 
laden_erfolgreich ;;
 
laden_erfolgreich ;;
  
3) zuweisung_negative
+
3) kategorie="$kategorie_3"
 
neues_verzeichnis
 
neues_verzeichnis
 
herunterladen
 
herunterladen
 
laden_erfolgreich ;;
 
laden_erfolgreich ;;
 +
 
esac
 
esac
  
Zeile 159: Zeile 130:
 
==<font color="maroon"> Wohin mit dem Script </font>==
 
==<font color="maroon"> Wohin mit dem Script </font>==
  
Dieses Script wird z.B. mit kate in einer einfachen Textdatei irgendwo im persönlichen User-Verzeichnis gespeichert. Ich habe, wie aus dem Start-Script ersichtlich ist, folgende Textdatei dazu genommen:
+
Dieses Script wird z.B. mit kate in einer einfachen Textdatei gespeichert. Bei mir ist das:
  
  $HOME/Wiki/Scripte/Foto/Herunterladen/aktuell/bilder_laden
+
  $HOME/Scripte/Foto/Herunterladen/aktuell/bilder_laden
  
Diese Textdatei muß ausführbar gemacht werden.
+
Die Textdatei muß ausführbar gemacht werden, wenn der automatische Scriptstart über die udev-Regel verwendet wird
  
 
==<font color="maroon"> Erklärung des Scriptes </font>==
 
==<font color="maroon"> Erklärung des Scriptes </font>==
Zeile 169: Zeile 140:
 
=== Definitionen ===
 
=== Definitionen ===
  
Hier werden die Variablen gesetzt, die die Verzeichnisstruktur festlegen
+
* Festlegung der Verzeichnisstruktur für die Rohbilder
 +
* Aktuelles Jahr ermitteln
  
=== Verzeichnisstruktur anlegen ===
 
 
Die notwendigen Verzeichnisse werden angelegt
 
  
 
=== Funktionen ===
 
=== Funktionen ===
Zeile 189: Zeile 158:
 
Hier wird ebenfalls das Script beendet und dabei die in der Funktion enthaltene Meldung angezeigt.
 
Hier wird ebenfalls das Script beendet und dabei die in der Funktion enthaltene Meldung angezeigt.
  
====<font color="gray"> zuweisung_bilder ... () </font>====
+
====<font color="gray"> neues_verzeichnis () </font>====
  
Variablenzuweisungen, abhängig von der Kategorie.
+
jahrverzeichnis="$rohverzeichnis"/"$kategorie"/"$jahr"
 +
mkdir -p "$jahrverzeichnis"
  
====<font color="gray"> neues_verzeichnis () </font>====
+
* Zusammensetzen des Namens für das Jahrverzeichnis.
 +
* Erzeugen des Verzeichnisses mit allen notwendigen Mutterverzeichnissen
  
  verzeichnis_alt=`find "$verzeichnis_cr2"/* -type d | wc -l`
+
  verzeichnis_alt=`find "$jahrverzeichnis"/* -maxdepth 0 -type d | wc -w`
  
Es wird nachgesehen, wieviele Verzeichnisse für Bilderserien (cr2) in der gewählten Kategorie schon existieren
+
Es wird nachgesehen, wieviele Verzeichnisse im aktuellen Jahr schon existieren
  
 
  verzeichnis_neu=$((verzeichnis_alt+1))
 
  verzeichnis_neu=$((verzeichnis_alt+1))
Zeile 207: Zeile 178:
 
Das neue Ergebnis wird 4stellig mit führenden Nullen formatiert
 
Das neue Ergebnis wird 4stellig mit führenden Nullen formatiert
  
  mkdir "$verzeichnis_cr2"/"$verzeichnis_name"
+
  mkdir "$jahrverzeichnis"/"$verzeichnis_name"
  
Das neue Verzeichnis für die Rohbilder wird angelegt
+
Das neue Bildverzeichnis wird angelegt
  
 
====<font color="gray"> herunterladen () </font>====
 
====<font color="gray"> herunterladen () </font>====
Zeile 215: Zeile 186:
 
  cd "$verzeichnis_cr2"/"$verzeichnis_name"
 
  cd "$verzeichnis_cr2"/"$verzeichnis_name"
  
Es wird in das das neue Bildverzeichnis gewechselt
+
Es wird in das das neue Bildverzeichnis gewechselt (Ist notwendig für gphoto2)
  
  gphoto2 --get-all-files --filename %04n_"$zusatz""$verzeichnis_name".%C
+
  gphoto2 --get-all-files --filename "$kategorie"-"$jahr"-"$verzeichnis_name"_Photo-%04n.%C
  
Die Fotos werden von der Kamera in das Verzeichnis geladen und dabei gleich umbenannt nach dem bereits erläuterten Schema
+
Die Fotos werden von der Kamera in das Bildverzeichnis geladen und dabei gleich umbenannt nach dem bereits erläuterten Schema
  
 
<pre>
 
<pre>
 
if [ $? != 0 ]
 
if [ $? != 0 ]
 
then
 
then
rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
+
rmdir "$jahrverzeichnis"/"$verzeichnis_name"
 
funktionsabbruch "Fehler"
 
funktionsabbruch "Fehler"
 
fi
 
fi
Zeile 233: Zeile 204:
 
====<font color="gray"> laden_erfolgreich () </font>====
 
====<font color="gray"> laden_erfolgreich () </font>====
  
  anzahl=`find "$verzeichnis_cr2"/"$verzeichnis_name"/* -type f | wc -l`
+
  anzahl=`find "$jahrverzeichnis"/"$verzeichnis_name"/* -type f | wc -l`
  
 
Es wird nachgesehen, ob tatsächlich Bilder heruntergeladen wurden.
 
Es wird nachgesehen, ob tatsächlich Bilder heruntergeladen wurden.
Zeile 240: Zeile 211:
 
if (( $anzahl = 0 ))
 
if (( $anzahl = 0 ))
 
then
 
then
rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
+
rmdir "$jahrverzeichnis"/"$verzeichnis_name"
 
funktionsabbruch "es gibt nichts zum Laden"
 
funktionsabbruch "es gibt nichts zum Laden"
 
fi
 
fi
 
</pre>
 
</pre>
  
Wenn keine Bilder heruntergeladen worden sind, war nichts auf der Speicherkarte drauf. Das Script wird mit einer entsprechendn Meldung beendet, nachdem das neue Verzeichnis gelöscht wurde.
+
Wenn das nicht der Fall war, also nichts auf der Speicherkarte drauf ist, dann  wird das Script mit einer entsprechendn Meldung beendet. Das neu generierte Verzeichnis wird gelöscht.
  
 
=== Hauptprogramm ===
 
=== Hauptprogramm ===
  
 
<pre>
 
<pre>
auswahl_hauptmenue=`kdialog --caption "Hauptmenue" --geometry 200x250+500+400 --radiolist "Download der Bilder?" \
+
auswahl_hauptmenue=`kdialog --caption "Herunterladen der Bilder" --geometry 400x400+400+300 --radiolist "Wohin mit den Photos?" \
1 "Bilder" on \
+
1 "$kategorie_1" on \
2 "Bären" off \
+
2 "$kategorie_2" off \
3 "Negative" off`
+
3 "$kategorie_3" off`
 
</pre>
 
</pre>
  
Zeile 265: Zeile 236:
 
</pre>
 
</pre>
  
Wird im Auswahldialog auf Abbrechen gedrückt, dann bricht das Script auch tatsächlich ab.
+
Wird im Auswahldialog auf Abbrechen gedrückt, dann beendet sich das Script.
  
 
<pre>
 
<pre>
  
 
case $auswahl_hauptmenue in
 
case $auswahl_hauptmenue in
1) zuweisung_bilder
+
1) kategorie="$kategorie_1"
 
neues_verzeichnis
 
neues_verzeichnis
 
herunterladen
 
herunterladen
Zeile 288: Zeile 259:
 
Fertig
 
Fertig
  
==<font color="maroon"> Zusammenfassung </font>==
+
==<font color="maroon"> Scriptstart </font>==
 +
 
 +
=== Manuell über eine Desktop-Datei ===
 +
 
 +
Um dieses Script zu starten, ist es sinnvoll, eine Start-Datei (Desktop-Datei) zu erzeugen. Wie so etwas realisiert werden kann, habe ich hier erläutert:
  
Nochmal eine Zusammenfassung dessen, was passiert:
+
http://www.linupedia.org/opensuse/K-Men%C3%BC_und_die_Desktop-Dateien
  
Wenn ich die Kamera an einen USB-Anschluss des PC´s anschließe und einschalte, wird durch das Hotplugging-System (udev) die Kamera erkannt. Sobald sie erkannt wurde, sorgt die udev-Regel dafür, daß ein Script gestarten wird. Dieses Script öffnet ein Terminal, in dem dann das von ihm nun  gestartete eigentliche Download-Script ausgeführt wird.
+
Dabei ist zu beachten, daß das Script in einem Terminal läuft (Läßt sich in der Desktop-Datei festlegen).
  
Das Downloadscript legt, wenn noch nicht vorhanden, die Verzeichnisstruktur für die Fotos fest. Es wird ein neues Verzeichnis definert und erzeugt, in das die Bilder von der Kamera heruntergeladen werden.
+
=== Automatisch beim Einschalten der Kamera ===
  
Und das Ganze läuft vollkommen automatisch nach einem festgelegten Schema ab.
+
Man kann das Script aber auch starten lassen. Und zwar immer dann, wenn man die Kamera an die USB-Buchse angeschlossen und eingeschaltet hat. Die Realisation dieses Gedankens werde ich im nächsten Kapitel des Wiki-Buches zeigen.
  
 
==<font color="maroon"> Anmerkungen </font>==
 
==<font color="maroon"> Anmerkungen </font>==
  
  
Ich möchte darauf hinweisen, daß ich das Script erstmalig unter OpenSuse 11.3 und KDE 4.4 gebaut und getestet habe. Weiter möchte ich sagen, daß dieses Script genau auf meine Bedürfnisse zugeschnitten ist. Falls ihr es ausprobieren wollt, gerne. Aber bedenkt dabei immer, daß ihr wissen solltet, was ihr macht. Ihr solltet die Funktionsweise des Scriptes genau verstehen, um zu wissen, was geschieht, wenn ihr es startet. Alles, was ihr tut, geschieht auf eure eigene Verantwortung.
+
Ich möchte darauf hinweisen, daß ich das ursprüngliche Script erstmalig unter OpenSuse 11.3 und KDE 4.4 gebaut und getestet habe. Weiter möchte ich sagen, daß dieses Script genau auf meine Bedürfnisse zugeschnitten ist und von mir entsprechend meiner Anforderungen verbessert wurde. Falls ihr es ausprobieren wollt, gerne. Aber bedenkt dabei immer, daß ihr wissen solltet, was ihr macht. Ihr solltet die Funktionsweise des Scriptes genau verstehen, um zu wissen, was geschieht, wenn ihr es startet. Alles, was ihr tut, geschieht auf eure eigene Verantwortung.
  
 
----
 
----

Version vom 10. Juli 2011, 19:40 Uhr

Digitale Bilder, ein Wikibuch: Verzeichnisstruktur - Bilder laden: das Script



Einleitung

Das hier vorgestellte Bashscript automatisiert das Herunterladen und Speichern der Rohbilder. Die Vorgehensweise ist folgende:

  • Kamera mit einem USB-Kabel mit dem PC verbinden und einschalten
  • Das Script startet automatisch (wie, das erkläre ich im nächsten Kapitel des Wiki-Buches) oder man startet es mit Hilfe einer Desktop-Datei
  • Kategorie auswählen, wohin die Bilder gespeichert werden sollen
  • Auf OK drücken

Das Bashscript überprüft nun, wieviele Verzeichnisse für Bilderserien in der gewählten Kategorie im aktuellen Jahr bereits existieren und generiert ein neues Verzeichnis für die neuen Fotos. Dieses Verzeichnis erhält die nächstfreie fortlaufende Nummer als Namen (4stellig mit führenden Nullen). Anschließend werden die Bilder von der Kamera geholt und in dem neuen Verzeichnis gespeichert. In dem Zug werden die Bilddateien auch gleich umbenannt. Geht alles automatisch...

Das Download-Script

#!/bin/bash

# =========================================== Vorbereitungen =========================================

# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Definitionen °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

rohverzeichnis=$HOME/Bilder/RAW

kategorie_1=Archiv
kategorie_2=Baeren
kategorie_3=Sonstiges

jahr=`date +%Y`

# ============================================== Funktionen ===========================================

# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Debug °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

pause ()
{
kdialog --msgbox "pause"
}

# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Abbruch °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

funktionsabbruch ()
{
kdialog --msgbox "$1"
exit
}

benutzerabbruch ()
{
kdialog --msgbox "Abbruch durch den Benutzer"
exit
}

# °°°°°°°°°°°°°°°°°°°°°°°°° Neues Download-Verzeichnis ermitteln und erstellen  °°°°°°°°°°°°°°°°°°°°°°°°°°

neues_verzeichnis ()
{

jahrverzeichnis="$rohverzeichnis"/"$kategorie"/"$jahr"
mkdir -p "$jahrverzeichnis"

verzeichnis_alt=`find "$jahrverzeichnis"/* -maxdepth 0 -type d | wc -w`
verzeichnis_neu=$((verzeichnis_alt+1))

verzeichnis_name=`printf "%.4i" $verzeichnis_neu`

mkdir "$jahrverzeichnis"/"$verzeichnis_name"
}

# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°  Bilder herunterladen °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

herunterladen ()
{
cd "$jahrverzeichnis"/"$verzeichnis_name"
gphoto2 --get-all-files --filename "$kategorie"-"$jahr"-"$verzeichnis_name"_Photo-%04n.%C
if [ $? != 0 ]
then
	rmdir "$jahrverzeichnis"/"$verzeichnis_name"
	funktionsabbruch "Fehler"
fi
}

# °°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Gibt es überhaupt etwas zum Herunterladen? °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

laden_erfolgreich ()
{
anzahl=`find "$jahrverzeichnis"/"$verzeichnis_name"/* -type f | wc -l`
if (( $anzahl == 0 ))
then
	rmdir "$jahrverzeichnis"/"$verzeichnis_name"
	funktionsabbruch "es gibt nichts zum Laden"
fi
}

# ================================================= Hauptprogramm =======================================

auswahl_hauptmenue=`kdialog --caption "Herunterladen der Bilder" --geometry 400x400+400+300 --radiolist "Wohin mit den Photos?" \
	1	"$kategorie_1" on \
	2	"$kategorie_2" off \
	3	"$kategorie_3" off`
if [ $? != 0 ]
then
	benutzerabbruch
fi

case $auswahl_hauptmenue in
	1)	kategorie="$kategorie_1"
		neues_verzeichnis
		herunterladen
		laden_erfolgreich ;;

	2)	kategorie="$kategorie_2"
		neues_verzeichnis
		herunterladen
		laden_erfolgreich ;;

	3)	kategorie="$kategorie_3"
		neues_verzeichnis
		herunterladen
		laden_erfolgreich ;;
		
esac

kdialog --msgbox "fertig"
exit

Wohin mit dem Script

Dieses Script wird z.B. mit kate in einer einfachen Textdatei gespeichert. Bei mir ist das:

$HOME/Scripte/Foto/Herunterladen/aktuell/bilder_laden

Die Textdatei muß ausführbar gemacht werden, wenn der automatische Scriptstart über die udev-Regel verwendet wird

Erklärung des Scriptes

Definitionen

  • Festlegung der Verzeichnisstruktur für die Rohbilder
  • Aktuelles Jahr ermitteln


Funktionen

pause ()

Ist nur für die Fehlersuche beim Programmieren notwendig

funktionsabbruch ()

Diese Funktion beendet das Script. Dabei wird eine an der Aussprungstelle definierte Benutzermeldung angezeigt.

benutzerabbruch ()

Hier wird ebenfalls das Script beendet und dabei die in der Funktion enthaltene Meldung angezeigt.

neues_verzeichnis ()

jahrverzeichnis="$rohverzeichnis"/"$kategorie"/"$jahr"
mkdir -p "$jahrverzeichnis"
  • Zusammensetzen des Namens für das Jahrverzeichnis.
  • Erzeugen des Verzeichnisses mit allen notwendigen Mutterverzeichnissen
verzeichnis_alt=`find "$jahrverzeichnis"/* -maxdepth 0 -type d | wc -w`

Es wird nachgesehen, wieviele Verzeichnisse im aktuellen Jahr schon existieren

verzeichnis_neu=$((verzeichnis_alt+1))

Zum Ergebnis wird 1 dazugezählt

verzeichnis_name=`printf "%.4i" $verzeichnis_neu`

Das neue Ergebnis wird 4stellig mit führenden Nullen formatiert

mkdir "$jahrverzeichnis"/"$verzeichnis_name"

Das neue Bildverzeichnis wird angelegt

herunterladen ()

cd "$verzeichnis_cr2"/"$verzeichnis_name"

Es wird in das das neue Bildverzeichnis gewechselt (Ist notwendig für gphoto2)

gphoto2 --get-all-files --filename "$kategorie"-"$jahr"-"$verzeichnis_name"_Photo-%04n.%C

Die Fotos werden von der Kamera in das Bildverzeichnis geladen und dabei gleich umbenannt nach dem bereits erläuterten Schema

if [ $? != 0 ]
then
	rmdir "$jahrverzeichnis"/"$verzeichnis_name"
	funktionsabbruch "Fehler"
fi

Tritt beim laden ein Fehler auf, zum Beispiel weil die Kamera nicht bereit ist, dann bricht das Script mit einer Fehlermeldung ab. Das vorhin erzeugte Verzeichnis für die neuen Bilder wird gelöscht.

laden_erfolgreich ()

anzahl=`find "$jahrverzeichnis"/"$verzeichnis_name"/* -type f | wc -l`

Es wird nachgesehen, ob tatsächlich Bilder heruntergeladen wurden.

if (( $anzahl = 0 ))
then
	rmdir "$jahrverzeichnis"/"$verzeichnis_name"
	funktionsabbruch "es gibt nichts zum Laden"
fi

Wenn das nicht der Fall war, also nichts auf der Speicherkarte drauf ist, dann wird das Script mit einer entsprechendn Meldung beendet. Das neu generierte Verzeichnis wird gelöscht.

Hauptprogramm

auswahl_hauptmenue=`kdialog --caption "Herunterladen der Bilder" --geometry 400x400+400+300 --radiolist "Wohin mit den Photos?" \
	1	"$kategorie_1" on \
	2	"$kategorie_2" off \
	3	"$kategorie_3" off`

Anzeige des Auswahldialoges für die Kategorien

if [ $? != 0 ]
then
	benutzerabbruch
fi

Wird im Auswahldialog auf Abbrechen gedrückt, dann beendet sich das Script.


case $auswahl_hauptmenue in
	1)	kategorie="$kategorie_1"
		neues_verzeichnis
		herunterladen
		laden_erfolgreich ;;

	2)	...

	3)	...
esac

Abhängig davon, welcher Menuepunkt ausgewählt wurde, werden die entsprechenden Funktionen aufgerufen und der Reihe nach abgearbeitet

kdialog --msgbox "fertig"
exit

Fertig

Scriptstart

Manuell über eine Desktop-Datei

Um dieses Script zu starten, ist es sinnvoll, eine Start-Datei (Desktop-Datei) zu erzeugen. Wie so etwas realisiert werden kann, habe ich hier erläutert:

http://www.linupedia.org/opensuse/K-Men%C3%BC_und_die_Desktop-Dateien

Dabei ist zu beachten, daß das Script in einem Terminal läuft (Läßt sich in der Desktop-Datei festlegen).

Automatisch beim Einschalten der Kamera

Man kann das Script aber auch starten lassen. Und zwar immer dann, wenn man die Kamera an die USB-Buchse angeschlossen und eingeschaltet hat. Die Realisation dieses Gedankens werde ich im nächsten Kapitel des Wiki-Buches zeigen.

Anmerkungen

Ich möchte darauf hinweisen, daß ich das ursprüngliche Script erstmalig unter OpenSuse 11.3 und KDE 4.4 gebaut und getestet habe. Weiter möchte ich sagen, daß dieses Script genau auf meine Bedürfnisse zugeschnitten ist und von mir entsprechend meiner Anforderungen verbessert wurde. Falls ihr es ausprobieren wollt, gerne. Aber bedenkt dabei immer, daß ihr wissen solltet, was ihr macht. Ihr solltet die Funktionsweise des Scriptes genau verstehen, um zu wissen, was geschieht, wenn ihr es startet. Alles, was ihr tut, geschieht auf eure eigene Verantwortung.


Zurück zur Grafik-Übersicht