|
|
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) |
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:
| + | wird überarbeitet .... |
− | | |
− | * Kamera mit einem USB-Kabel mit dem PC verbinden
| |
− | * Script starten
| |
− | * Kategorie auswählen, wohin die Bilder gespeichert werden sollen
| |
− | * Kamera einschalten
| |
− | * 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.
| |
− | Geht alles automatisch...
| |
− | | |
− | ==<font color="maroon"> Das Download-Script </font>==
| |
− | | |
− | | |
− | <pre>
| |
− | #!/bin/bash
| |
− | | |
− | # ========================================== Definitionen ==========================================
| |
− | | |
− | hauptverzeichnis=$HOME/Bilder
| |
− | | |
− | unterverzeichnis_bilder="$hauptverzeichnis"/bilder
| |
− | unterverzeichnis_negative="$hauptverzeichnis"/negative
| |
− | unterverzeichnis_baeren="$hauptverzeichnis"/baeren
| |
− | | |
− | # =================================== Verzeichnisstruktur erstellen ==================================
| |
− | | |
− | mkdir -p "$unterverzeichnis_bilder"/cr2
| |
− | mkdir -p "$unterverzeichnis_bilder"/jpg
| |
− | mkdir -p "$unterverzeichnis_bilder"/tif
| |
− | | |
− | mkdir -p "$unterverzeichnis_negative"/cr2
| |
− | mkdir -p "$unterverzeichnis_negative"/jpg
| |
− | mkdir -p "$unterverzeichnis_negative"/tif
| |
− | | |
− | mkdir -p "$unterverzeichnis_baeren"/cr2
| |
− | mkdir -p "$unterverzeichnis_baeren"/jpg
| |
− | mkdir -p "$unterverzeichnis_baeren"/tif
| |
− | | |
− | # ============================================== Funktionen ===========================================
| |
− | | |
− | # °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Debug °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
| |
− | | |
− | pause ()
| |
− | {
| |
− | kdialog --msgbox "pause"
| |
− | }
| |
− | | |
− | # °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Abbruch °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
| |
− | | |
− | funktionsabbruch ()
| |
− | {
| |
− | kdialog --msgbox "$1"
| |
− | exit
| |
− | }
| |
− | | |
− | benutzerabbruch ()
| |
− | {
| |
− | kdialog --msgbox "Abbruch durch den Benutzer"
| |
− | exit
| |
− | }
| |
− | | |
− | # °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Zuweisungen °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
| |
− | | |
− | zuweisung_bilder ()
| |
− | {
| |
− | 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 °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
| |
− | | |
− | neues_verzeichnis ()
| |
− | {
| |
− | verzeichnis_alt=`find "$verzeichnis_cr2"/* -type d | wc -l`
| |
− | verzeichnis_neu=$((verzeichnis_alt+1))
| |
− | | |
− | verzeichnis_name=`printf "%.4i" $verzeichnis_neu`
| |
− | | |
− | mkdir "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | }
| |
− | | |
− | herunterladen ()
| |
− | {
| |
− | cd "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | gphoto2 --get-all-files --filename %04n_"$zusatz""$verzeichnis_name".%C
| |
− | if [ $? != 0 ]
| |
− | then
| |
− | rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | funktionsabbruch "Fehler"
| |
− | fi
| |
− | }
| |
− | | |
− | laden_erfolgreich ()
| |
− | {
| |
− | anzahl=`find "$verzeichnis_cr2"/"$verzeichnis_name"/* -type f | wc -l`
| |
− | if (( $anzahl = 0 ))
| |
− | then
| |
− | rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | funktionsabbruch "es gibt nichts zum Laden"
| |
− | fi
| |
− | }
| |
− | | |
− | | |
− | # ================================================= Hauptprogramm =======================================
| |
− | | |
− | #-----Menueauswahl-----
| |
− | | |
− | auswahl_hauptmenue=`kdialog --caption "Hauptmenue" --geometry 200x250+500+400 --radiolist "Download der Bilder?" \
| |
− | 1 "Bilder" on \
| |
− | 2 "Bären" off \
| |
− | 3 "Negative" off`
| |
− | if [ $? != 0 ]
| |
− | then
| |
− | benutzerabbruch
| |
− | fi
| |
− | | |
− | case $auswahl_hauptmenue in
| |
− | 1) zuweisung_bilder
| |
− | neues_verzeichnis
| |
− | herunterladen
| |
− | laden_erfolgreich ;;
| |
− | | |
− | 2) zuweisung_baeren
| |
− | neues_verzeichnis
| |
− | herunterladen
| |
− | laden_erfolgreich ;;
| |
− | | |
− | 3) zuweisung_negative
| |
− | neues_verzeichnis
| |
− | herunterladen
| |
− | laden_erfolgreich ;;
| |
− | esac
| |
− | | |
− | kdialog --msgbox "fertig"
| |
− | exit
| |
− | </pre>
| |
− | | |
− | ==<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:
| |
− | | |
− | $HOME/Wiki/Scripte/Foto/Herunterladen/aktuell/bilder_laden
| |
− | | |
− | Diese Textdatei muß ausführbar gemacht werden.
| |
− | | |
− | ==<font color="maroon"> Erklärung des Scriptes </font>==
| |
− | | |
− | === Definitionen ===
| |
− | | |
− | Hier werden die Variablen gesetzt, die die Verzeichnisstruktur festlegen
| |
− | | |
− | === Verzeichnisstruktur anlegen ===
| |
− | | |
− | Die notwendigen Verzeichnisse werden angelegt
| |
− | | |
− | === Funktionen ===
| |
− | | |
− | ====<font color="gray"> pause () </font>====
| |
− | | |
− | Ist nur für die Fehlersuche beim Programmieren notwendig
| |
− | | |
− | ====<font color="gray"> funktionsabbruch () </font>====
| |
− | | |
− | Diese Funktion beendet das Script. Dabei wird eine an der Aussprungstelle definierte Benutzermeldung angezeigt.
| |
− | | |
− | ====<font color="gray"> benutzerabbruch () </font>====
| |
− | | |
− | Hier wird ebenfalls das Script beendet und dabei die in der Funktion enthaltene Meldung angezeigt.
| |
− | | |
− | ====<font color="gray"> zuweisung_bilder ... () </font>====
| |
− | | |
− | Variablenzuweisungen, abhängig von der Kategorie.
| |
− | | |
− | ====<font color="gray"> neues_verzeichnis () </font>====
| |
− | | |
− | verzeichnis_alt=`find "$verzeichnis_cr2"/* -type d | wc -l`
| |
− | | |
− | Es wird nachgesehen, wieviele Verzeichnisse für Bilderserien (cr2) in der gewählten Kategorie 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 "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | | |
− | Das neue Verzeichnis für die Rohbilder wird angelegt
| |
− | | |
− | ====<font color="gray"> herunterladen () </font>====
| |
− | | |
− | cd "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | | |
− | Es wird in das das neue Bildverzeichnis gewechselt
| |
− | | |
− | gphoto2 --get-all-files --filename %04n_"$zusatz""$verzeichnis_name".%C
| |
− | | |
− | Die Fotos werden von der Kamera in das Verzeichnis geladen und dabei gleich umbenannt nach dem bereits erläuterten Schema
| |
− | | |
− | <pre>
| |
− | if [ $? != 0 ]
| |
− | then
| |
− | rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | funktionsabbruch "Fehler"
| |
− | fi
| |
− | </pre>
| |
− | | |
− | 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.
| |
− | | |
− | ====<font color="gray"> laden_erfolgreich () </font>====
| |
− | | |
− | anzahl=`find "$verzeichnis_cr2"/"$verzeichnis_name"/* -type f | wc -l`
| |
− | | |
− | Es wird nachgesehen, ob tatsächlich Bilder heruntergeladen wurden.
| |
− | | |
− | <pre>
| |
− | if (( $anzahl = 0 ))
| |
− | then
| |
− | rmdir "$verzeichnis_cr2"/"$verzeichnis_name"
| |
− | funktionsabbruch "es gibt nichts zum Laden"
| |
− | fi
| |
− | </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.
| |
− | | |
− | === Hauptprogramm ===
| |
− | | |
− | <pre>
| |
− | auswahl_hauptmenue=`kdialog --caption "Hauptmenue" --geometry 200x250+500+400 --radiolist "Download der Bilder?" \
| |
− | 1 "Bilder" on \
| |
− | 2 "Bären" off \
| |
− | 3 "Negative" off`
| |
− | </pre>
| |
− | | |
− | Anzeige des Auswahldialoges für die Kategorien
| |
− | | |
− | <pre>
| |
− | if [ $? != 0 ]
| |
− | then
| |
− | benutzerabbruch
| |
− | fi
| |
− | </pre>
| |
− | | |
− | Wird im Auswahldialog auf Abbrechen gedrückt, dann bricht das Script auch tatsächlich ab.
| |
− | | |
− | <pre>
| |
− | | |
− | case $auswahl_hauptmenue in
| |
− | 1) zuweisung_bilder
| |
− | neues_verzeichnis
| |
− | herunterladen
| |
− | laden_erfolgreich ;;
| |
− | | |
− | 2) ...
| |
− | | |
− | 3) ...
| |
− | esac
| |
− | </pre>
| |
− | | |
− | Abhängig davon, welcher Menuepunkt ausgewählt wurde, werden die entsprechenden Funktionen aufgerufen und der Reihe nach abgearbeitet
| |
− | | |
− | kdialog --msgbox "fertig"
| |
− | exit
| |
− | | |
− | Fertig
| |
− | | |
− | ==<font color="maroon"> Zusammenfassung </font>==
| |
− | | |
− | Nochmal eine Zusammenfassung dessen, was passiert:
| |
− | | |
− | 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.
| |
− | | |
− | 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.
| |
− | | |
− | Und das Ganze läuft vollkommen automatisch nach einem festgelegten Schema ab.
| |
− | | |
− | ==<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.
| |
| | | |
| ---- | | ---- |