HDR Dateien suchen, die innerhalb weniger Sekunden aufgenommen wurden

OP #2434431
Lesenswert?

Ich habe im Urlaub mal wieder viele Bilder gemacht und bin gerade dabei 
mir Bilder rauszusuchen, die zu einer Belichtungsreihe gehören (für HDR 
Photos)
Im Prinzip suche ich ne Möglichkeit Bilder, die innerhalb von 2 Sekunden 
aufgenommen wurden in jeweils ein Unterverzeichnis zu schieben.
Hat jemand ne Idee, wie ich das mit einer Batchdatei, shell-skript oder 
ähnlich lösen kann?
Gast #2434462
Lesenswert?

Man könnte eine Directory-Ausgabe in eine Textdatei umleiten und diese 
dann in eine Tabellenkalkulation-Software freier Wahl importieren und 
dort über eine Abfrage (bei Excel nennt sich das Ding "Wenn"...) die 
einzelnen Datume (heisst das so?) vergleichen lassen und die kleinste 
Differenz anzeigen lassen.
3-10 Minuten dürfte sowas dauern...
Gast #2434707
Lesenswert?

Pink Shell schrieb:
> Mach's von Hand. 10000 Bilder hast du in einer Stunde durchgescrollt. In
> der Zeit hast Du kein Skript geschrieben, getestet, debugged und
> ausgeführt.

Und beim nächsten Urlaub dann wieder. Wie man mit fast 3 Bildern pro 
Sekunde das EXIF-Datum liest, Ordner anlegt und bei Bedarf verschiebt, 
möchte ich sehen.

Habe beim Abendessen etwas gebastelt (die Stunde kam inklusive Einlesen 
in nötige Module ungefähr hin). Das Ergebnis braucht python und PIL, hat 
keine Sicherheitsmaßnahmen gegen bösartige Dateinamen, muss unter 
Windows wahrscheinlich etwas angepasst werden und ist nur minimal 
getestet. Zur Vorsicht wird nichts verschoben, sondern es werden Befehle 
ausgegeben, die man in ein hinterher auszuführendes Shellscript umleiten 
kann. Aufruf mit
1
python 1.py /home/werner/ordnermitmeinenurlaubsfotos
Stil und Qualität dürfen gerne kritisiert werden

Grüße
Angehängte Dateien:
OP #2434880
Lesenswert?

Hallo Tom,
vielen Dank für das Skript. Da ich bisher nicht mit Python gearbeitet 
habe musste ich mich erst was einlesen.
Wie du schon vermutet hast, benötigt das für Windows7 noch Anpassungen.

Ich habe mir portable Python von hier installiert (enthält dann auch 
PIL)
http://www.portablepython.com/wiki/PortablePython2.7.2.1
Dann habe ich den PyScripter gestartet, dein Skript reinkopiert, die 
Kommandozeilenparameter auf C:\Test gesetzt und gestartet.

Folgende Ausgabe:
1
Command Line : c:\Test
2
# ignoring c:\Test\IMG_4490.JPG
3
# ignoring c:\Test\IMG_4491.JPG
4
# ignoring c:\Test\IMG_4492.JPG
5
mkdir "c:\Test/foo_00001"
6
mv "c:\Test\IMG_4493.JPG" "c:\Test/foo_00001/"
7
mv "c:\Test\IMG_4494.JPG" "c:\Test/foo_00001/"
8
mv "c:\Test\IMG_4495.JPG" "c:\Test/foo_00001/"
9
# ignoring c:\Test\IMG_4497.JPG
10
# ignoring c:\Test\IMG_4498.JPG

Suchen und Auswählen der passenden Dateien funktioniert also schon. 
Leider gibt es anscheinend Probleme mit dem BackSlash bzw. Schrägstrich.
Also habe ich den Schrägstrich ausgetauscht
1
           foldername = '%s/foo_%05d' % (wd, num)
gegen das getauscht.
1
           foldername = '%s\foo_%05d' % (wd, num)

Dann wird aber der Backslash ignoriert
1
*** Remote Interpreter Reinitialized  ***
2
>>> 
3
Command Line : c:\Test
4
# ignoring c:\Test\IMG_4490.JPG
5
# ignoring c:\Test\IMG_4491.JPG
6
# ignoring c:\Test\IMG_4492.JPG
7
mkdir "c:\Testoo_00001"
8
mv "c:\Test\IMG_4493.JPG" "c:\Testoo_00001/"
9
mv "c:\Test\IMG_4494.JPG" "c:\Testoo_00001/"
10
mv "c:\Test\IMG_4495.JPG" "c:\Testoo_00001/"
Geht also auch nicht...
Zusätzlich werden die Befehle auch nicht vom Betriebssystem ausgeführt.
(Mir ist klar, dass ich mv noch gegen move austauschen muss, aber der 
mkdir geht ja auch nicht)
Gast #2434945
Lesenswert?

Werner A. schrieb:
> Zusätzlich werden die Befehle auch nicht vom Betriebssystem ausgeführt.
> (Mir ist klar, dass ich mv noch gegen move austauschen muss, aber der
> mkdir geht ja auch nicht)

Liegt daran:

Tom schrieb:
> Zur Vorsicht wird nichts verschoben, sondern es werden Befehle
> ausgegeben, die man in ein hinterher auszuführendes Shellscript umleiten
> kann.

Also: Ausgabe des Programms in eine (.BAT)-DAtei schreiben lassen, und 
die dann prüfen und ausführen.
Gast #2435124
Lesenswert?

Hallo,

der \ escaped traditionell das nächste Zeichen, damit er im String 
erhalten bleibt, muss er selbst escaped werden, also z.B.
1
foldername = '%s\\foo_%05d' % (wd, num)

Statt der .BAT kann man evtl. auch Befehle mit os.system() ausführen, 
statt sie mit print auszugeben.

Das DELTA in der korrigierten Version muss auch angepasst werden, falls 
Du das nicht schon selbst gesehen hast, ich hatte keinen Bilderordner 
mit Fotos im Sekundenabstand zum testen.
OP #2435392
Lesenswert?

Hallo Tom,
nochmals vielen Dank für deine tolle Arbeit.
Ich habe gerade alle Bilder wegsortiert (wegsortieren lassen)
Wieder 'nen bischen was gelernt und für den nächsten Urlaub vorbereitet 
;-)


Wenn es noch jemand gebrauchen kann, hier die notwendigen Schritte
 - http://www.portablepython.com/wiki/PortablePython2.7.2.1 
herunterladen
 - nach c:\Portable installieren
 - HDRsearch.py nach c:\Portable\Portable Python 2.7.2.1\MyApps kopieren
 - HDR_prepare.bat in das Verzeichnis mit den Bildern kopieren und 
aufrufen
Es werden hier keine Dateien verschoben, sondern nur die Datei 
HDR_move.bat erzeugt.
 - Die Datei HDR_move.bat mit nem Editor öffnen und überprüfen, z.B. 
immer 3 Bilder verschoben werden sollen
 - Wenn die Datei HDR_move.bat dann aufgerufen wird werden 
Unterverzeichnisse angelegt und die entsprechenden Bilder verschoben.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren