AppleScript: CDFinder

Es musste ja mal so kommen, dass ich auch mal den CDFinder skripte. Aber es war nicht wirklich ein Vergnügen. Es werden zwar einige Befehle angeboten, nur wenn man mal das Suchergebnis einer manuell durchgeführte Suche verskripten möchte… Nun, CDFinder steht Apple Mail in nichts nach (Stichwort outgoing messages).
Also mein Ziel war folgendes: Ich wollte in CDFinder mein Musik-Share nach Titel durchsuchen und dann auf Knopfdruck die Original-Datei einer Datei aus dem Suchergebnis in einen bestimmten Ordner kopieren. So eine Funktion (kopiere Original in Ordner XY) fände ich sogar recht naheliegend bei eine Katalog-Software :-/). Nun sei es drum, ich konnte also nun leider nicht auf die Auswahl im Ergebnisfenster zugreifen, also auch nicht den “complete path” auslesen, wenn das Skript nicht auch die Suche selbst durchführt. Deshalb musste wieder mal GUI-Scripting als Lösung herhalten, öffne die Info, lese Text-Feld XY aus und baue dir daraus einen Datei-Pfad zum kopieren… und kopiere! Nun das Skript auf einen Shortcut…(cmd + J ist noch frei)
Darf ich vorstellen, mein erstes CDFinder Skript:

–hubionmac.com 14.01.2011

–CDFinder Copy selection to Desktop into some folder

–GUI Scripted, since CDFinder does not seem to support 

–something like… get selection

property FolderAtDesktop : “CDFinder File Export”

tell application “Finder”

try

set myPath to (my getSelectionsPath()) as alias

set destination_folder to my setDestionationFolderAtDesktop(FolderAtDesktop)

activate

duplicate myPath to destination_folder without replacing

delay 2

tell application “CDFinder” to activate

on error msg

error msg

end try

end tell

on getSelectionsPath()

activate application “CDFinder”

tell application “System Events”

tell process “CDFinder”

keystroke “i” using command down

set i to 0

–wait for Info Dialog to popup

repeat until (name of window 1) starts with “Info” or i > 100

delay 0.2

set i to i + 1

end repeat

if i > 100 then

error “WTF?!”

else

set myPath to value of static text 14 of group 1 of tab group 1 of window 1

–key code 53 — nope this will trigger FrontRow each time you keep holding command (using a shortcut to start the script)

click button 4 of window 1

if (count of every character of myPath) < 10 then

error “WTF?! ” & myPath

else

return myPath

end if

end if

end tell

end tell

end getSelectionsPath

on setDestionationFolderAtDesktop(foldername)

try

tell application “Finder”

if folder foldername of desktop exists then

return (folder foldername of desktop) as alias

else

return (make new folder at desktop with properties {name:foldername}) as alias

end if

end tell

on error msg

error “Error while creating folder @ Desktop:” & return & return & msg

end try

end setDestionationFolderAtDesktop