• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Der Frühling ist auch in den eingesandten Fotos deutlich zu erkennen. Zeigt uns, wer Euer Favorit ist! hier geht es lang für Euer Voting --> Klick

Spotlight-Kommentare in Schlagwörter einfügen

ChrREI

Erdapfel
Registriert
02.12.10
Beiträge
5
Hallo Forengemeinde, ich bin Christoph und habe folgendes Problem:

Es soll ein AppleScript erstellt werden, dass Spotlight-Kommentare aus Bilddateien ausliest und diese anschließend in die Schlagwörter/Keywords der Datei einfügt.
Das auslesen der Spotlight-Kommenater geschieht hier und funktioniert:

tell application "Finder" to set spotlight to comment of i

Allein diese Spotlight-Kommentare dann in die Keywords einzufügen funktioniert mit diesem Code:

set IPTC keywords to (spotlight)

Allerdings werden dann die bereits vorhandenen Keywords gelöscht und nur die neuen eingefügt. Es sollen also die alten Keywords erhalten bleiben und nur die Spotlight-Kommentare als Keywords hinten angefügt werden. Das sollte mit folgendem Code funktionieren:

set existingKeywords to IPTC keywords
set IPTC keywords to (existingKeywords & {spotlight})


Beim Ausführen dieses Codes passiert allerdings nichts.
Das Problem hat etwas damit zu tun, dass "IPTC keywords" eine Liste ist, oder an der Verknüpfung von "existingKeywords & spotlight"

Hier noch der komplette Code:


on run
open (choose file with multiple selections allowed)
end run

on open (dItems)
repeat with i in dItems

tell application "Finder" to set spotlight to comment of i
try
tell application "GraphicConverter"
open i
tell window 1

set existingKeywords to IPTC keywords
set IPTC keywords to (existingKeywords & {spotlight})

close saving yes
end tell
end tell

end try

end repeat
end open

Vielen Dank im Voruas für die Zeit und Mühe. Ich bin mir sicher, dass das "Problem" gelöst werden kann.
 
Zuletzt bearbeitet:

-hans-

Jamba
Registriert
02.09.10
Beiträge
56
Hallo,

ich habe jetzt hier keinen graficConverter, aber poste doch mal das Ergebnis von:
Code:
set existingKeywords to IPTC keywords
aus Deinem Script ...
 

sedna

Schweizer Glockenapfel
Registriert
22.10.08
Beiträge
1.375
Hallo!

Stichworte müssen durch ein Semikolon getrennt werden.Dies und einige andere Dinge müssen berücksichtigt werden:
Ist schon ein Semikolon vorhanden? Bestehen die Spotlight Kommentare aus mehreren Einträgen? Sind diese wiederum durch Leerzeichen, Komma oder andere Satzzeichen getrennt?
set IPTC keywords to ((existingKeywords & ";" & spotlight) as text)
wird dir auch keine richtige Freude bereiten.

Auf jeden Fall wirst du die Stichworte wohl noch mit AppleScript's text item delimiters bearbeiten müssen
(Siehe hier und hier)

Gruß
 

ChrREI

Erdapfel
Registriert
02.12.10
Beiträge
5
Code:
set existingKeywords to IPTC keywords
set IPTC keywords to existingKeywords
Wenn beispielsweise die keywords "Auto, PKW, Fahrzeug" sind, dann macht er mit diesem Code daraus nur noch "Auto". Es wird also nur ein Wort der Liste wieder ausgegeben und nicht alle.

Code:
set IPTC keywords to {spotlight}
Wenn ich die Spotlight-Kommentare beispielsweise einfach in die keywords einfüge, wird dies anstandslos gemacht.

Die Kombination aus beidem (existingKeywords und spotlight) ist das Problem.
Die Spotlight-Kommentare an die bereits bestehenden Keywords dran hängen, sowie ALLE Keywords der Liste ausgeben, statt nur einem.
 

-hans-

Jamba
Registriert
02.09.10
Beiträge
56
Hi,

die keywords sind durchaus tricky. Jeder einzelne Eintrag darf die Länge von 64 Characters nicht überschreiten. Separiert sind die Einträge durch Kommata. Kurz zusammengehackt eine einfache Lösung mit dem exiftool (download musst Du eben mal googlen ...)

Gruß

Hans

Code:
set TheFile to alias "Macintosh HD:Users:hans:Desktop:taest.JPG"

tell application "Finder" to set Thecomment to comment of TheFile

set oldkeywords to do shell script "exiftool -IPTC:Keywords " & quoted form of POSIX path of TheFile

set {tid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, ":"}

set oldkeywords to text 2 thru -1 of text item 2 of oldkeywords

set AppleScript's text item delimiters to ", "

set oldkeywords to text items of oldkeywords

set Keywordstring to ""

repeat with i from 1 to count of oldkeywords
	set theKEYWORD to quoted form of item i of oldkeywords
	if (count of theKEYWORD) < 64 then
		
		set theKEYWORD to " -IPTC:Keywords=" & theKEYWORD
		set Keywordstring to Keywordstring & theKEYWORD
	else
		display dialog "keyword zu lang: " & theKEYWORD giving up after 5
	end if
end repeat

set newkeywords to text items of Thecomment

repeat with i from 1 to count of newkeywords
	set theKEYWORD to quoted form of item i of newkeywords
	if (count of theKEYWORD) < 64 then
		
		set theKEYWORD to " -IPTC:Keywords=" & theKEYWORD
		set Keywordstring to Keywordstring & theKEYWORD
	else
		display dialog "keyword zu lang: " & theKEYWORD giving up after 5
	end if
end repeat

--IPTC ergaenzen / schreiben 
do shell script "exiftool" & Keywordstring & " " & quoted form of POSIX path of TheFile
--set updatedkeywords to do shell script "exiftool -IPTC:Keywords " & quoted form of POSIX path of TheFile --uncomment to read keywords
 

sedna

Schweizer Glockenapfel
Registriert
22.10.08
Beiträge
1.375
Irgendwie überrascht es mich nicht, dass du mit einer fertigen Lösung aufwartest :)
Das exiftool zu nehmen, ist eine gute Idee :cool:
Wesentlich besser, als es mit dem Graphic Converter zu erledigen.
Dass ChRei meine Zeilen und meinen Code nicht mal probiert hat, umzusetzen, zeigt mir zudem, dass ich mich hier hätte gar nicht einzumischen brauchen :p

Gruß
 

ChrREI

Erdapfel
Registriert
02.12.10
Beiträge
5
@hans:
Das mit dem ExifTool ist echt eine gute Idee. Das Programm sieht sehr gut aus, wenn ich das als AppleScript Laie so sagen kann.
Aber es wird mir noch folgender Fehler für die letzten beiden Zeilen angezeigt:
"quoted form of POSIX path of 2 kann nicht in Typ Unicode text umgewandelt werden."

@sedna
Deine Zeilen Code habe ich ausprobiert, und habe versucht deine Ideen umzusetzen, allerdings funktionierte es einfach nicht, obwohl der Code logisch wäre.
 

toc-rox

Weigelts Zinszahler (Rotfranch)
Registriert
15.11.09
Beiträge
247
Kleine Ergänzung zu -hans- Ausführungen: The keyword field is a “multi-value” field. You can have unlimited numbers of keywords and phrases but no single keyword or key phrase can exceed this 64 character maximum limit.
 

ChrREI

Erdapfel
Registriert
02.12.10
Beiträge
5
@hans:
Ich habe das Skript ein wenig angepasst. Es funktioniert soweit, bei Bildern mit wenigen keywords. Aber wenn es so an die 14 keywords sind, dann werden die Spotlight-Kommentare nicht mehr angefügt. Außerdem wird zu jedem Bild eine UNIX-Datei mit demselben Namen wie das Bild erstellt. Wo kommt das her?

Code:
on run
    open (choose file with multiple selections allowed)
end run

on open (dItems)
    repeat with i in dItems
        
        
        tell application "Finder" to set Thecomment to comment of i
        
        set myPosixPath to quoted form of POSIX path of i
        
        set oldkeywords to do shell script "exiftool -IPTC:Keywords " & myPosixPath
        
        set {tid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, ":"}
        
        set oldkeywords to text 2 thru -1 of text item 2 of oldkeywords
        
        set AppleScript's text item delimiters to ", "
        
        set oldkeywords to text items of oldkeywords
        
        set Keywordstring to ""
        
        repeat with i from 1 to count of oldkeywords
            set theKEYWORD to quoted form of item i of oldkeywords
            if (count of theKEYWORD) < 64 then
                
                set theKEYWORD to " -IPTC:Keywords=" & theKEYWORD
                set Keywordstring to Keywordstring & theKEYWORD
            else
                display dialog "keyword zu lang: " & theKEYWORD giving up after 5
            end if
        end repeat
        
        set newkeywords to text items of Thecomment
        
        repeat with i from 1 to count of newkeywords
            set theKEYWORD to quoted form of item i of newkeywords
            if (count of theKEYWORD) < 64 then
                
                set theKEYWORD to " -IPTC:Keywords=" & theKEYWORD
                set Keywordstring to Keywordstring & theKEYWORD
            else
                display dialog "keyword zu lang: " & theKEYWORD giving up after 5
            end if
        end repeat
        
        --IPTC ergaenzen / schreiben 
        do shell script "exiftool" & Keywordstring & " " & myPosixPath
        -- set updatedkeywords to do shell script "exiftool -IPTC:Keywords " & quoted form of POSIX path of i --uncomment to read keywords
        
    end repeat
end open
 

-hans-

Jamba
Registriert
02.09.10
Beiträge
56
n'abend,

nun die "Unix-Datei" ist die umbenannte Originaldatei, die ExifTool erstellt, wenn es die Exifdaten verändert. Also ignorieren, sichern oder löschen … ;)

Ich habe Dein Script ein kleines bisschen umgeschrieben und habe hier einen Test mit über 200 Keywords gemacht -klappt :)

Wenn Du die Muße hast: probiers einfach nochmal :)

Ansonsten poste doch mal einen beispielhaften SpotlightComment ...

Code:
on run
	open (choose file with multiple selections allowed)
end run

on open (dItems)
	repeat with i in dItems
		
		
		tell application "Finder" to set Thecomment to comment of i
		
		set myPosixPath to quoted form of POSIX path of i
		
		set oldkeywords to do shell script "exiftool -IPTC:Keywords " & myPosixPath
		
		set {tid, AppleScript's text item delimiters} to {AppleScript's text item delimiters, ":"}
		
		set Keywordstring to ""
		
		try
			set oldkeywords to text 2 thru -1 of text item 2 of oldkeywords
			
			set AppleScript's text item delimiters to ", "
			
			set oldkeywords to text items of oldkeywords
			
			
			repeat with i from 1 to count of oldkeywords
				set theKEYWORD to quoted form of item i of oldkeywords
				if (count of theKEYWORD) < 66 then
					
					set theKEYWORD to " -IPTC:Keywords=" & theKEYWORD
					set Keywordstring to Keywordstring & theKEYWORD
				else
					display dialog "keyword zu lang: " & theKEYWORD giving up after 5
				end if
			end repeat
		end try
		
		try
			set AppleScript's text item delimiters to ", "
			
			set newkeywords to text items of Thecomment
			
			repeat with i from 1 to count of newkeywords
				set theKEYWORD to quoted form of item i of newkeywords
				if (count of theKEYWORD) is not greater than 66 and (count of theKEYWORD) is not equal to 2 then
					
					set theKEYWORD to " -IPTC:Keywords=" & theKEYWORD
					set Keywordstring to Keywordstring & theKEYWORD
				else
					display dialog "Problem mit keyword: " & theKEYWORD giving up after 5
				end if
			end repeat
		end try
		
		set tid to AppleScript's text item delimiters
		
		--IPTC ergaenzen / schreiben 
		do shell script "exiftool" & Keywordstring & " " & myPosixPath
		
	end repeat
end open
 

ChrREI

Erdapfel
Registriert
02.12.10
Beiträge
5
Vielen Dank für deine Mühe hans! Das Skript läuft einwandfrei und das Problem ist somit gelöst.