Ergebnis 1 bis 10 von 10
  1. #1
    Bismarckapfel
    Themenstarter
    Avatar von Fenster
    Registriert
    11.2007
    Ort
    Am Rande der Region Stuttgart
    Alter
    25
    Beiträge
    143

    Shell-Befehl durch Droplet ausführen

    Hallo Leute,

    ich habe öfters mal Bilddateien bei denen ich die Exif-Daten ändern muss. Das ganze mache ich bisher übers Terminal mit diesen Befehlen:
    Code:
    cd Der_Pfad_zum_Ordner_mit_den_Bildern
    exiftool -FocalLength='58' -FNumber='1.2' -ApertureValue='1.2' -MaxApertureValue='1.2' -Lens='Minolta MC Rokkor-PG 58mm f/1.2' -LensInfo='58mm f/1.2' -LensID='0' *.CR2 *.jpg
    Damit werden die Exif-Einträge für alle CR2- und JPG-Dateien in dem Ordner nach meinen Wünschen geändert.

    Nun dachte ich mir, dass man das mit einem Droplet vielleicht vereinfachen könnte und ich somit nicht immer das Terminal starten und den Befehl für exiftool raussuchen müsste. Leider hab ich keine Ahnung von AppleScript oder sonstigen Script-Sprachen und brauche dazu eure Hilfe.

    Ich möchte also, dass beim Ablegen einer/mehrerer Dateien oder eines ganzen Ordners auf das Droplet das Script in den enstprechenden Ordner springt, den oben genannten exiftool-Befehl ausführt und die Rückmeldung von exiftool anzeigt. Die Rückmeldung sieht im Terminal ganz einfach aus, falls das eine Rolle spielt (in dem Ordner war eine JPG-Datei und keine CR2-Datei, deshalb der Error):
    Code:
    Error: File not found - *.CR2
        1 image files updated
        1 files weren't updated due to errors
    Mit dem AppleScript-Editor bin ich zumindest soweit gekommen, dass beim Doppelklicken des "Programms" der Befehl im Desktop-Ordner ausgeführt wird. Aber das ist blöd, da ich dafür erst mal alle Dateien auf den Desktop ziehen muss, außerdem ists kein Droplet.

    Ich hoffe ihr könnt mir helfen.

    Gruß
    Fenster
    iMac 7,1 MB322LL/A 24” ⁄ 2,8 GHz ⁄ 4 GB RAM ⁄ 500 GB HDD + 6 TB

  2. #2
    Wohlschmecker aus Vierlanden
    Registriert
    11.2009
    Beiträge
    236
    Grundsätzlich sollte sich das Vorhaben über ein Droplet realisieren lassen. Werden Datei auf das Droplet gezogen, so können die vollständigen Dateinamen (m.E.) direkt an exiftool übergeben werden. Im Fall von Ordnern wird das Programm umfangreicher, da die Ordner wiederum Unterordner enthalten können, die dann rekursive zu prozessieren wären. Der Programmumfang für die Dateivariante wäre m.E. sehr "übersichtlich" und ließe sich gut von Standardbeispielen ableiten.
    Kommunikation -> Kooperation -> Innovation

  3. #3
    Gala
    Registriert
    09.2010
    Ort
    Herzogenrath
    Alter
    44
    Beiträge
    50
    Hallo Fenster,

    schau mal ob's funktioniert ...
    • Die vom Exiftool erstellten Sicherungsdateien werden nicht gelöscht
    • Es findet keine Vorab-Überprüfung der Datei statt (Jpg, ...)
    • Ordner und Dateien werden abgearbeitet

    Im ScriptEditor öffnen und als Programm sichern ...

    Gruß

    Hans

    Code:
    on open these_items
    	repeat with i from 1 to the count of these_items
    		set this_item to (item i of these_items)
    		set the item_info to info for this_item
    		if folder of the item_info is true then
    			process_folder(this_item)
    		else
    			process_item(this_item)
    		end if
    	end repeat
    	
    end open
    
    on process_folder(this_folder)
    	set these_items to list folder this_folder without invisibles
    	repeat with i from 1 to the count of these_items
    		set this_item to alias ((this_folder as text) & (item i of these_items))
    		set the item_info to info for this_item
    		if folder of the item_info is true then
    			process_folder(this_item)
    		else
    			process_item(this_item)
    		end if
    	end repeat
    end process_folder
    
    on process_item(this_item)
    	do shell script "exiftool -FocalLength='58' -FNumber='1.2' -ApertureValue='1.2' -MaxApertureValue='1.2' -Lens='Minolta MC Rokkor-PG 58mm f/1.2' -LensInfo='58mm f/1.2' -LensID='0' " & " " & quoted form of POSIX path of this_item
    end process_item

  4. #4
    Bismarckapfel
    Themenstarter
    Avatar von Fenster
    Registriert
    11.2007
    Ort
    Am Rande der Region Stuttgart
    Alter
    25
    Beiträge
    143
    Hallo Hans,

    das funktioniert einwandfrei! Habs alle möglichen Szenarien getestet, auch mit Unterordner im Unterordner vom Hauptordner
    Vielen, vielen Dank!

    Gruß
    Fenster
    iMac 7,1 MB322LL/A 24” ⁄ 2,8 GHz ⁄ 4 GB RAM ⁄ 500 GB HDD + 6 TB

  5. #5
    Gala
    Registriert
    09.2010
    Ort
    Herzogenrath
    Alter
    44
    Beiträge
    50
    Hallo Fenster,

    schön

    Bitte ersetzte noch den letzten Handler im Script:
    Code:
    on process_item(this_item)
    	try
    		do shell script "exiftool -FocalLength='58' -FNumber='1.2' -ApertureValue='1.2' -MaxApertureValue='1.2' -Lens='Minolta MC Rokkor-PG 58mm f/1.2' -LensInfo='58mm f/1.2' -LensID='0' " & " " & quoted form of POSIX path of this_item
    	on error
    		set LogDatei to quoted form of POSIX path of (path to desktop as text) & "ExifError.log"
    		do shell script "echo " & quoted form of (this_item as text) & " >> " & LogDatei
    		
    		
    	end try
    end process_item
    ... damit die Bearbeitung bei Fehlern nicht stoppt, sondern die betreffende Datei in einem "ExifError.log" (Desktop) protokolliert wird.

    Gruß

    Hans

  6. #6
    Bismarckapfel
    Themenstarter
    Avatar von Fenster
    Registriert
    11.2007
    Ort
    Am Rande der Region Stuttgart
    Alter
    25
    Beiträge
    143
    Super. Ist es auch möglich vor der Verarbeitung der Daten mit einem kleinen Pop Up nach dem Blendenwert gefragt zu werden (in welchem ich dann z.B. "5.6" eingebe), der dann bei -FNumber='1.2' und -ApertureValue='1.2' anstelle der 1.2 verwendet wird?
    iMac 7,1 MB322LL/A 24” ⁄ 2,8 GHz ⁄ 4 GB RAM ⁄ 500 GB HDD + 6 TB

  7. #7
    Gala
    Registriert
    09.2010
    Ort
    Herzogenrath
    Alter
    44
    Beiträge
    50
    Hi,

    zwei Fragen:
    1.) Sollen die Angaben gespeichert und nur bei Bedarf per Dialog geändert werden?
    2.) Sollen eventuell auch direkt Angaben zum Fotografen, oder für Bildserien z.B. Bildbeschreibung, Stichwörter ... abgefragt / eingefügt werden ?

    Schönen Abend

    Hans

  8. #8
    Bismarckapfel
    Themenstarter
    Avatar von Fenster
    Registriert
    11.2007
    Ort
    Am Rande der Region Stuttgart
    Alter
    25
    Beiträge
    143
    Weder noch, eine einfache Abfrage des Blendenwerts bei jedem Start geüngt
    iMac 7,1 MB322LL/A 24” ⁄ 2,8 GHz ⁄ 4 GB RAM ⁄ 500 GB HDD + 6 TB

  9. #9
    Gala
    Registriert
    09.2010
    Ort
    Herzogenrath
    Alter
    44
    Beiträge
    50
    Hi Fenster,

    dann ist der Code eine Zeile länger
    Code:
    on open these_items
    	repeat with i from 1 to the count of these_items
    		set this_item to (item i of these_items)
    		set the item_info to info for this_item
    		if folder of the item_info is true then
    			process_folder(this_item)
    		else
    			process_item(this_item)
    		end if
    	end repeat
    	
    end open
    
    on process_folder(this_folder)
    	set these_items to list folder this_folder without invisibles
    	repeat with i from 1 to the count of these_items
    		set this_item to alias ((this_folder as text) & (item i of these_items))
    		set the item_info to info for this_item
    		if folder of the item_info is true then
    			process_folder(this_item)
    		else
    			process_item(this_item)
    		end if
    	end repeat
    end process_folder
    
    on process_item(this_item)
    	set Blendenwert to text returned of (display dialog "Bitte  Blendenwert eingeben: 
    	(Separation mit Punkt)" default answer "1.2")
    	
    	try
    		do shell script "exiftool -FocalLength='58' -FNumber=" & quoted form of Blendenwert & " -ApertureValue=" & quoted form of Blendenwert & " -MaxApertureValue='1.2' -Lens='Minolta MC Rokkor-PG 58mm f/1.2' -LensInfo='58mm f/1.2' -LensID='0' " & " " & quoted form of POSIX path of this_item
    	on error
    		set LogDatei to quoted form of POSIX path of (path to desktop as text) & "ExifError.log"
    		do shell script "echo " & quoted form of (this_item as text) & " >> " & LogDatei
    		
    		
    	end try
    end process_item
    cu


    Hans

  10. #10
    Bismarckapfel
    Themenstarter
    Avatar von Fenster
    Registriert
    11.2007
    Ort
    Am Rande der Region Stuttgart
    Alter
    25
    Beiträge
    143
    Danke für deine Mühe Hans!
    iMac 7,1 MB322LL/A 24” ⁄ 2,8 GHz ⁄ 4 GB RAM ⁄ 500 GB HDD + 6 TB

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •