(* Convert to JPG and upload to Flickr folder action script Ordinal Malaprop, 12 March 2007 This is a modified version of the "Convert to JPEG" folder action script, combined with elements of Murphy Mac's "mail files when dropped into a folder" script - http://murphymac.com/files-mailed-magically-when-dropped-in-a-finder-folder/ It is designed to be placed as a folder action on a folder, to which you then save screenshots from Second Life. For more information on how to set up folder actions, see http://www.apple.com/applescript/folderactions/index.html You will have to edit parameters to get this working - see the section called ** CHANGE THESE BITS ** *) property done_foldername : "JPEG Images" property originals_foldername : "Original Images" property newimage_extension : "jpg" -- the list of file types which will be processed -- eg: {"PICT", "JPEG", "TIFF", "GIFf"} property type_list : {"TIFF", "GIFf", "PNGf", "PICT", "BMP"} -- since file types are optional in Mac OS X, -- check the name extension if there is no file type -- NOTE: do not use periods (.) with the items in the name extensions list -- eg: {"txt", "text", "jpg", "jpeg"}, NOT: {".txt", ".text", ".jpg", ".jpeg"} property extension_list : {"tif", "tiff", "gif", "png", "pict", "pct", "bmp"} on adding folder items to this_folder after receiving these_items tell application "Finder" if not (exists folder done_foldername of this_folder) then make new folder at this_folder with properties {name:done_foldername} end if set the results_folder to (folder done_foldername of this_folder) as alias if not (exists folder originals_foldername of this_folder) then make new folder at this_folder with properties {name:originals_foldername} set current view of container window of this_folder to list view end if set the originals_folder to folder originals_foldername of this_folder end tell try repeat with i from 1 to number of items in these_items set this_item to item i of these_items set the item_info to the info for this_item if (alias of the item_info is false and the file type of the item_info is in the type_list) or (the name extension of the item_info is in the extension_list) then tell application "Finder" my resolve_conflicts(this_item, originals_folder, "") set the new_name to my resolve_conflicts(this_item, results_folder, newimage_extension) set the source_file to (move this_item to the originals_folder with replacing) as alias end tell process_item(source_file, new_name, results_folder) end if end repeat on error error_message number error_number if the error_number is not -128 then tell application "Finder" activate display dialog error_message buttons {"Cancel"} default button 1 giving up after 120 end tell end if end try end adding folder items to on resolve_conflicts(this_item, target_folder, new_extension) tell application "Finder" set the file_name to the name of this_item set file_extension to the name extension of this_item if the file_extension is "" then set the trimmed_name to the file_name else set the trimmed_name to text 1 thru -((length of file_extension) + 2) of the file_name end if if the new_extension is "" then set target_name to file_name set target_extension to file_extension else set target_extension to new_extension set target_name to (the trimmed_name & "." & target_extension) as string end if if (exists document file target_name of target_folder) then set the name_increment to 1 repeat set the new_name to (the trimmed_name & "." & (name_increment as string) & "." & target_extension) as string if not (exists document file new_name of the target_folder) then -- rename to conflicting file set the name of document file target_name of the target_folder to the new_name exit repeat else set the name_increment to the name_increment + 1 end if end repeat end if end tell return the target_name end resolve_conflicts -- this sub-routine processes files on process_item(source_file, new_name, results_folder) -- NOTE that the variable this_item is a file reference in alias format -- FILE PROCESSING STATEMENTS GOES HERE try -- the target path is the destination folder and the new file name set the target_path to ((results_folder as string) & new_name) as string with timeout of 900 seconds tell application "Image Events" launch -- always use with Folder Actions set this_image to open file (source_file as string) save this_image as JPEG in file target_path with icon close this_image end tell -- ** CHANGE THESE BITS ** -- Set this to your email set theSender to "Firstname Lastname" -- Set this to your private Flickr email posting address - see http://www.flickr.com/account/uploadbyemail/ set recipAddress to "randomwordsandnumbers@photos.flickr.com" -- Set this to be the standard title for each picture set msgSubject to "Direct from the Grid" -- Set this to be the standard text that appears as a subtitle on the picture set msgText to "" -- ** STOP CHANGING ** set recipCommon to "Flickr" tell application "Mail" set newmessage to make new outgoing message with properties {subject:msgSubject, content:msgText & return & return} tell newmessage set visible to true set sender to theSender make new to recipient with properties {name:recipCommon, address:recipAddress} make new attachment with properties {file name:POSIX path of target_path as string} at after the last paragraph end tell send newmessage end tell end timeout on error error_message tell application "Finder" activate display dialog error_message buttons {"Cancel"} default button 1 giving up after 120 end tell end try end process_item