[GastForen Programmierung/Entwicklung AppleScript variable in do shell maskieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

variable in do shell maskieren

-hans-
Beiträge gesamt: 748

3. Dez 2009, 18:25
Beitrag # 1 von 8
Bewertung:
(6747 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
... krieg ich gerade nicht hin:
Code
property fotograf : "Name Name" 
property bildbeschreibung : ""

on run
showConfig()
end run

on showConfig()
if bildbeschreibung is "" then
modConfig()
else

set dR to button returned of (display dialog ¬
"Die aktuelle Bildbeschreibung:
" & bildbeschreibung buttons {"Ändern", "OK"} default button 2 with icon 1)
if dR = "Ändern" then
modConfig()
end if

end if
end showConfig

on modConfig()
with timeout of 300 seconds
set bildbeschreibung to text returned of (display dialog "Bildbeschreibung:" default answer "")
end timeout
end modConfig

on open these_items

repeat with i from 1 to the count of these_items
set datei to ((item i of these_items) as alias)
set datum to (current date)
set ganzerString to (quoted form of (fotograf & " - " & datum & " - " & bildbeschreibung))
try
do shell script "exiftool -IFD0:ImageDescription='ganzerString' -IFD0:Artist='fotograf' -IPTC:Caption-Abstract='ganzerString' -IPTC:By-line='fotograf' -XMP-dc:Description='ganzerString' -XMP-dc:Creator='fotograf' " & quoted form of POSIX path of datei
end try
end repeat
end open


(Dieser Beitrag wurde von -hans- am 4. Dez 2009, 10:06 geändert)
X

variable in do shell maskieren

T. Kaltschmidt
Beiträge gesamt: 94

3. Dez 2009, 20:47
Beitrag # 2 von 8
Beitrag ID: #426305
Bewertung:
(6728 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo -hans-,

bin zwar kein Applescript-Guru, aber ohne mehr Input von Deiner Seite, welcher am Ende mit einer Frage abschließen sollte und ohne ein Mindestmaß an Umgangsformen (wie beispielsweise ein "Hallo zusammen"), wird es vermutlich schwierig, Dir zu helfen.

Viele Grüße
Thomas


als Antwort auf: [#426284]

variable in do shell maskieren

-hans-
Beiträge gesamt: 748

3. Dez 2009, 20:57
Beitrag # 3 von 8
Beitrag ID: #426306
Bewertung:
(6721 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
sorry!

ein fröhliches hallo in die runde ;-)

folgendes problem: ich habe zwei variablen definiert und möchte sie in den do shell befehl einfügen. dort erscheinen sie aber stattdessen als direkte texteingabe ...
hat jemand vllt. eine lösung parat?

Code
repeat with i from 1 to the count of these_items  
set datei to ((item i of these_items) as alias)
set datum to (current date)
set ganzerString to (quoted form of (fotograf & " - " & datum & " - " & bildbeschreibung))
try
do shell script "exiftool -IFD0:ImageDescription='ganzerString' -IFD0:Artist='fotograf' -IPTC:Caption-Abstract='ganzerString' -IPTC:By-line='fotograf' -XMP-dc:Description='ganzerString' -XMP-dc:Creator='fotograf' " & quoted form of POSIX path of datei
end try
end repeat


nachtrag: variablen in der do shell scriptzeile gehen wohl nur über den befehl echo und eine "pipe" ...
Beispiel:
Code
set input to "input" 
do shell script "echo " & input & " | tr a-z A-Z"

leider: ich bekomme den befehl trotzdem nicht in die passende syntax ...


als Antwort auf: [#426305]
(Dieser Beitrag wurde von -hans- am 3. Dez 2009, 21:36 geändert)

variable in do shell maskieren

-hans-
Beiträge gesamt: 748

4. Dez 2009, 10:07
Beitrag # 4 von 8
Beitrag ID: #426367
Bewertung:
(6661 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hat sich erledigt:
so geht's:
Code
do shell script "exiftool -IFD0:ImageDescription=" & ganzerString & " -IFD0:Artist=" & fotograf & " -IPTC:Caption-Abstract=" & ganzerString & " -IPTC:By-line=" & fotograf & " -XMP-dc:Description=" & ganzerString & " -XMP-dc:Creator=" & fotograf & " " & quoted form of POSIX path of datei 



als Antwort auf: [#426306]

variable in do shell maskieren

Hans Haesler
  
Beiträge gesamt: 5826

4. Dez 2009, 10:22
Beitrag # 5 von 8
Beitrag ID: #426373
Bewertung:
(6658 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

schön, dass Du die Lösung selbst gefunden hast.

Beim Lesen des Codes stelle ich mir die Frage, ob current date gewollt ist.
Damit wird das Datum der Script-Ausführung in die Datei geschrieben, und nicht jenes, als der Fotograf auf den Auslöser drückte.

Gruss, Hans


als Antwort auf: [#426367]

variable in do shell maskieren

-hans-
Beiträge gesamt: 748

4. Dez 2009, 17:17
Beitrag # 6 von 8
Beitrag ID: #426460
Bewertung:
(6631 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
so, grunddaetzlich ist das script als dropplet jetzt funktionstüchtig.

Voraussetzung: exiftool muss installiert sein
http://www.sno.phy.queensu.ca/~phil/exiftool/

Was macht es:
Alle jpg-Dateien die auf das dropplet gezogen werden, werden in einen Ordner "NeueBilder" auf dem Desktop kopiert und in der form "kurzdatum.kuerzel.bildname.nummerierung.jpg" also "0512.bsp.toskana37.jpg" umbenannt.
alle angaben die unter "do shell script "exiftool ..." stehen, werden in die exifdaten (IPTC etc.) geschrieben. alle verwendbaren tags findet man auf der exiftool homepage ...

vllt. hat ja jemand interesse an einem solchen tool.
für jede verbesserung des codes wäre ich natürlich dankbar :)

Code
property kuerzel : "bsp." --erscheint im neuen dateinamen nach dem datum 
property bildbeschreibung : "" --wird beim start abgefragt
property bildname : "" --erscheint im neuen dateinamen nach dem kuerzel
property stichwort : "" --wird beim start abgefragt
property fotograf : "Beispiel"
property copyright : "Beispiel"
property webadresse : "www.beispiel.de"
property telnummer : "12345"
property mail : "beispiel@beispiel.de"

on run
showConfig()
end run

on showConfig()
if bildbeschreibung is "" then
modConfig()
else

set dR to button returned of (display dialog ¬
"Die aktuelle Bildbeschreibung:
" & bildbeschreibung buttons {"Ändern", "OK"} default button 2 with icon 1)
if dR = "Ändern" then
modConfig()
end if

end if
end showConfig

on modConfig()
with timeout of 300 seconds
set bildbeschreibung to text returned of (display dialog "Bildbeschreibung:" default answer "")
end timeout
end modConfig

on open these_items

if bildbeschreibung is "" then
modConfig()
end if

set stichwort to text returned of (display dialog "Bitte Keyword(s) eingeben: (Separation mit Komma)" default answer "")


--neuen Bildnamen abfragen
with timeout of 300 seconds
set bildname to text returned of (display dialog "Bildname:" default answer "")
end timeout

--datum erzeugen
set d to (current date)
set AppleScript's text item delimiters to " "

set tagZahl to word 2 of ((current date) as text)
if (count of text items of tagZahl) < 2 then
set tagZahl to "0" & tagZahl
end if

set Monat to word 3 of ((current date) as text)


set MonatsListe to {January, February, March, April, May, June, July, August, September, October, November, December}

repeat with i from 1 to 12

if d's month = item i of MonatsListe then
set MM to (text -2 thru -1 of ("0" & i) as text)
set Zaehlen to count text items of MM as text
if Zaehlen = 1 then
set MM to "0" & MM
end if

exit repeat
end if
end repeat
set datum to tagZahl & "." & MM & "."

--ordner auf dem schreibtisch erzeugen
set BildOrdnerPfad to POSIX path of (path to desktop) & quoted form of "NeueBilder/"
set BildOrdner to "mkdir -p " & BildOrdnerPfad
do shell script BildOrdner


repeat with i from 1 to the count of these_items

set datei to ((item i of these_items) as alias)
--fuer die nummerierung der dateien
if item i of these_items is datei then set position to i

--bilddatei auf den desktop in den Ordner NeueBilder kopieren
set ZielOrdner to ((path to desktop as string) & "NeueBilder:") as alias
tell application "Finder" to duplicate file datei to folder ZielOrdner with replacing
set neuerdateiName to datum & kuerzel & bildname & (position as string) & ".jpg"
set AppleScript's text item delimiters to ":"
set filePath to datei as Unicode text
set oldName to text item -1 of filePath
tell application "Finder" to set name of file oldName of folder ZielOrdner to neuerdateiName
set NeueDatei to (((ZielOrdner as string) & neuerdateiName) as alias)


set ganzerString to (quoted form of (neuerdateiName & " - " & bildbeschreibung))
try
do shell script "exiftool -IFD0:ImageDescription=" & quoted form of ganzerString & " -IFD0:Artist=" & quoted form of fotograf & " -IFD0:Copyright=" & quoted form of copyright & " -IPTC:Caption-Abstract=" & quoted form of ganzerString & " -IPTC:By-line=" & quoted form of fotograf & " -IPTC:Writer-Editor=" & quoted form of fotograf & " -IPTC:By-LineTitle='Bildjournalist' -IPTC:Credit=" & quoted form of "Credit" & " -IPTC:ObjectName=" & quoted form of bildname & " -IPTC:City='Aachen' -IPTC:Province-State='Nordrhein-Westfalen' -IPTC:Country-PrimaryLocationName='DEU Deutschland' -IPTC:Keywords=" & quoted form of stichwort & " -IPTC:CopyrightNotice=" & quoted form of copyright & " -XMP-dc:Description=" & quoted form of ganzerString & " -XMP-dc:Creator=" & quoted form of fotograf & " -XMP-dc:Rights=" & quoted form of copyright & " -XMP-dc:Title=" & quoted form of bildname & " -XMP-dc:Subject=" & quoted form of stichwort & " -XMP-photoshop:AuthorsPosition=" & quoted form of "Bildjournalist" & " -XMP-photoshop:CaptionWriter=" & quoted form of fotograf & " -XMP-photoshop:City='Aachen' -XMP-photoshop:State='Nordrheinwestfalen' -XMP-photoshop:Country=" & quoted form of "DEU Deutschland" & " -XMP-photoshop:Credit=" & quoted form of "Credit" & " -XMP-photoshop:Source=" & quoted form of "Source" & " -XMP-xmpRights:WebStatement=" & quoted form of webadresse & " -XMP-iptcCore:CreatorWorkTelephone=" & quoted form of telnummer & " -XMP-iptcCore:CreatorWorkEmail=" & quoted form of mail & " -XMP-iptcCore:CreatorCity='Aachen' -XMP-iptcCore:Address=" & quoted form of "eine strasse" & " -Photoshop:URL=" & quoted form of webadresse & " " & quoted form of POSIX path of NeueDatei
end try
try
set original to (((NeueDatei as string) & "_original") as alias)
tell application "Finder" to delete file original
end try

end repeat
say "finished"
display dialog "Haben fertig ;-)" giving up after 5
end open



als Antwort auf: [#426373]

variable in do shell maskieren

Hans Haesler
  
Beiträge gesamt: 5826

5. Dez 2009, 17:51
Beitrag # 7 von 8
Beitrag ID: #426567
Bewertung:
(6594 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich habe "exiftool" geholt, installiert und Dein Script ausprobiert.

Es funktioniert. Aber was Du genau damit bezweckst, ist mir nicht klar.

Verbesserungen? Vielleicht ist gewollt, dass mehrere Bilder auf das Droplet gezogen und mit demselben Name und Keywords versehen werden können.

Vielleicht sollte eine Warnung kommen, wenn ein Ordner auf dem Droplet deponiert wird.

Aber was gestrafft werden kann, ist das Erzeugen des Datum-Strings.

– Die AppleScript's text item delimiters braucht es nicht.
– Die Variable d wird zwar definiert, aber in der Folge wird zwei Mal current date benutzt.
– Die Variable Monat wird definiert, aber nie benutzt
– Die Schleife, um den Monat zu bekommen, kann man sich sparen.
– Der folgende Test ist nicht notwendig:
Code
if Zaehlen = 1 then 
set MM to "0" & MM
end if

So ist es viel kürzer (und viel komplizierter :-)

Code
--datum erzeugen  
set d to current date
set DD to text -2 thru -1 of ("0" & word 2 of (d as string))
set Mon to text 1 thru 3 of (d's month as string)
set m to offset of Mon in "JanFebMarAprMayJunJulAugSepOctNovDec"
set MM to text -2 thru -1 of ("0" & (((m + 2) / 3) as integer) as string)
set datum to DD & "." & MM & "."

Gruss, Hans


als Antwort auf: [#426460]

variable in do shell maskieren

-hans-
Beiträge gesamt: 748

5. Dez 2009, 21:15
Beitrag # 8 von 8
Beitrag ID: #426587
Bewertung:
(6573 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo Hans,

besten Dank!

Das Script dient unseren Fotografen dazu Bildserien von einem Termin auf einen Rutsch gleich zu benennen und die IPTC-Daten (+ sonstige exif eintraege) für das Archiv und andere Agenturen anzulegen.

Die Änderungen werde ich noch einbauen, thx :)


als Antwort auf: [#426567]
X