on run
-- get the list of selected ID's in front window
set selectedItems to GetSelection()
-- show about
AboutScript()
-- process each item
set theCount to 0
tell application "iView MediaPro"
repeat with theItem in selectedItems
-- get exif date & original name
set newName to ""
set theName to the name of theItem
set thePath to the path of theItem
--display dialog thePath
set theHeadline to the headline of theItem
-- form new name by stripping all punctuation from the headline and
-- replace all spaces with underscores
set newName to my tidyString(theHeadline)
-- set newName to theHeadline
-- if the old name has an extension, append it to new name
-- But change it to lower case
set nc to the number of characters in theName
if character (nc - 3) of theName = "." then
set thefileextension to my change_case((get text (nc - 3) through nc of theName), 0)
end if
-- rename
if theName � (newName & thefileextension) then
--does a file already exist with this name?
tell application "Finder"
set filefolder to (folder of alias thePath)
set filenumber to ""
set counter to 1
set myloop to true
repeat until myloop is false
if exists file (newName & filenumber & thefileextension) of filefolder then
if filenumber = "" then
set filenumber to "_" & counter
else
set filenumber to "_" & counter + 1
set counter to counter + 1
end if
else
set myloop to false
end if
end repeat
end tell
set the name of theItem to (newName & filenumber & thefileextension)
if the name of theItem = (newName & filenumber & thefileextension) then set theCount to theCount + 1
end if
--end try
end repeat
end tell
ShowResult(theCount)
end run
-- get the selected media items in an array ---------------------------------------------
on GetSelection()
set selectedItems to {}
tell application "iView MediaPro"
if catalog 1 exists then set selectedItems to the selection of catalog 1
end tell
if number of items in selectedItems is 0 then
display dialog �
"You need to select at least one media item in the front catalog in order to use this script." buttons {"OK"} default button �
"OK" with icon 1 giving up after 10
error number -128
end if
return selectedItems
end GetSelection
-- Strip punctuation and replace spaces with underscore ------------
on tidyString(the_string)
set the_delims to {"!", "@", "�", "#", "�", "$", "%", "^", "&", "*", "(", ")", "=", "+", "[", "]", "{", "}", ";", ":", "\"", "'", "\\", "|", ",", "<", ".", ">", "/", "?", "`", "~", "_"}
-- store the originals and set up the marker.
set {OLD_delim, _marker_} to {AppleScript's text item delimiters, "�"}
-- process each of the delimiters in the_delims replacing each with the _marker_
repeat with this_delim in the_delims
my atid(this_delim) -- see the handler that follows
set the_string to text items of the_string
my atid(_marker_)
set the_string to text items of the_string as string
end repeat
my atid(_marker_)
set the_string to text items of the_string
my atid(OLD_delim)
set the_string to the_string as string
-- now replace spaces with "_"
set the_words to words of the_string
my atid("_")
set the_string to the_words as string
my atid("")
return the_string
end tidyString
on atid(the_delim)
set AppleScript's text item delimiters to the_delim
end atid
on replaceSpaces(the_text)
set myWords to words of the_text
my atid("_")
set the_text to myWords as string
my atid("")
return the_text
end replaceSpaces
-- about this script ---------------------------------------------
on AboutScript()
display dialog �
"This script will rename original files of all selected items using valid values in the \"Headline\" field.
Resulting filenames will have all punctuation removed, and spaces replaced with \"_\".
It will also change the file extension, if present, to lowercase." buttons {"Cancel", "Rename"} default button 2 with icon 1
set theAnswer to the button returned of the result
return theAnswer
end AboutScript
-- show result ---------------------------------------------
on ShowResult(theCount)
if theCount = 0 then
set theMsg to "Script completed." & return & "No items were renamed."
else if theCount = 1 then
set theMsg to "Script completed." & return & "1 item was renamed."
else
set theMsg to "Script completed." & return & theCount & " items were renamed."
end if
display dialog theMsg buttons {"OK"} default button "OK" with icon 1 giving up after 10
end ShowResult
-- Change case --------------------------------------
-- Taken from https://www.apple.com/applescript/guidebook/sbrt/pgs/sbrt.07.htm
on change_case(this_text, this_case)
if this_case is 0 then
set the comparison_string to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set the source_string to "abcdefghijklmnopqrstuvwxyz"
else
set the comparison_string to "abcdefghijklmnopqrstuvwxyz"
set the source_string to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
end if
set the new_text to ""
repeat with this_char in this_text
set x to the offset of this_char in the comparison_string
if x is not 0 then
set the new_text to �
(the new_text & character x of the source_string) as string
else
set the new_text to (the new_text & this_char) as string
end if
end repeat
return the new_text
end change_case