well the finaltext1 file is basically a text file that has been edited to only contain a small phrase or title. It was saved to the folder as a text file since there were two parts to the task. The first part of the task got text from a webpage and edited it as an autmator action and an additional script inside the automator. The second part takes that file and puts it in a title after audio Hijack has had a session. This is my first project so I"m pretty bad at scripting but with a lot of help I got it working.
The first part is this
-- syntax : changeCase of someText to caseType
-- someText (string) : plain or encoded text
-- caseType (string) : the type of case required ("upper", "lower", "sentence", "title" or "mixed")
-- "upper" : all uppercase text (no exceptions)
-- "lower" : all lowercase text (no exceptions)
-- "sentence" : uppercase character at start of each sentence, other characters lowercase (apart from words in sentenceModList)
-- "title" : uppercase character at start of each word, other characters lowercase (no exceptions)
-- "mixed" : similar to title, except for definite and indefinite articles, conjunctions and prepositions (see mixedModList) that don't start a sentence
property lowerStr : "abcdefghijklmnopqrstuvwxyzáà âäãåæçéèêëÃìîïñóòôöõøœúùûüÿ"
property upperStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZÃÀÂÄÃÅÆÇÉÈÊËÃÌÎÃÑÓÒÔÖÕØŒÚÙÛÜŸ"
property alphaList : lowerStr's characters & reverse of upperStr's characters
property sentenceBreak : {".", "!", "?"}
property wordBreak : {space, ASCII character 202, tab}
property everyBreak : wordBreak & sentenceBreak
property whiteSpace : wordBreak & {return, ASCII character 10}
property currList : missing value
property sentenceModList : {"i", "i'm", "i'm", "i've", "i've", "I've", "I've", "I'm", "I'm", "I"} (* could be extended to include certain proper nouns, acronyms, etc. *)
property mixedModList : {"By Means Of", "In Front Of", "In Order That", "On Account Of", "Whether Or Not", "According To", "As To", "Aside From", "Because Of", "Even If", "Even Though", "In Case", "Inside Of", "Now That", "Only If", "Out Of", "Owing To", "Prior To", "Subsequent To", "A", "About", "Above", "Across", "After", "Against", "Along", "Although", "Among", "An", "And", "Around", "As", "At", "Because", "Before", "Behind", "Below", "Beneath", "Beside", "Between", "Beyond", "But", "By", "De", "Down", "During", "Except", "For", "From", "If", "In", "Inside", "Into", "Like", "Near", "Of", "Off", "On", "Onto", "Or", "Out", "Outside", "Over", "Past", "Since", "So", "The", "Though", "Through", "Throughout", "To", "Under", "Unless", "Until", "Up", "Upon", "When", "Whereas", "While", "With", "Within", "Without", "Ye", "ye", "without", "within", "with", "while", "whereas", "when", "upon", "up", "until", "unless", "under", "to", "throughout", "through", "though", "the", "so", "since", "past", "over", "outside", "out", "or", "onto", "on", "off", "of", "near", "like", "into", "inside", "in", "if", "from", "for", "except", "during", "down", "de", "by", "but", "beyond", "between", "beside", "beneath", "below", "behind", "before", "because", "at", "as", "around", "and", "an", "among", "although", "along", "against", "after", "across", "above", "about", "a", "subsequent to", "prior to", "owing to", "out of", "only if", "now that", "inside of", "in case", "even though", "even if", "because of", "aside from", "as to", "according to", "whether or not", "on account of", "in order that", "in front of", "by means of"}
on textItems from currTxt
tell (count currTxt's text items) to if it > 4000 then tell it div 2 to return ¬
my (textItems from (currTxt's text 1 thru text item it)) & ¬
my (textItems from (currTxt's text from text item (it + 1) to -1))
currTxt's text items
end textItems
on initialCap(currTxt)
tell currTxt to if (count words) > 0 then tell word 1's character 1 to if it is in lowerStr then
set AppleScript's text item delimiters to it
tell my (textItems from currTxt) to return beginning & upperStr's character ((count lowerStr's text item 1) + 1) & rest
end if
currTxt
end initialCap
to capItems from currTxt against breakList
repeat with currBreak in breakList
set text item delimiters to currBreak
if (count currTxt's text items) > 1 then
set currList to my (textItems from currTxt)
repeat with n from 2 to count currList
set my currList's item n to initialCap(my currList's item n)
end repeat
set text item delimiters to currBreak's contents
tell my currList to set currTxt to beginning & ({""} & rest)
end if
end repeat
currTxt
end capItems
on modItems from currTxt against modList
set currList to modList
set currCount to (count modList) div 2
repeat with currBreak in everyBreak
set text item delimiters to currBreak
if (count currTxt's text items) > 1 then repeat with n from 1 to currCount
set text item delimiters to my currList's item n & currBreak
if (count currTxt's text items) > 1 then
set currTxt to textItems from currTxt
set text item delimiters to my currList's item -n & currBreak
tell currTxt to set currTxt to beginning & ({""} & rest)
end if
end repeat
end repeat
currTxt
end modItems
to changeCase of currTxt to caseType
if (count currTxt's words) is 0 then return currTxt
ignoring case
tell caseType to set {upper_Case, lower_Case, sentence_Case, title_Case, mixed_Case} to {it is "upper", it is "lower", it is "sentence", it is "title", it is "mixed"}
end ignoring
if not (upper_Case or lower_Case or title_Case or sentence_Case or mixed_Case) then
error "The term \"" & caseType & "\" is not a valid case type option. Please use \"upper\", \"lower\", \"sentence\", \"title\" or \"mixed\"."
else if upper_Case then
set n to 1
else
set n to -1
end if
considering case
set tid to text item delimiters
repeat with n from n to n * (count lowerStr) by n
set text item delimiters to my alphaList's item n
set currTxt to textItems from currTxt
set text item delimiters to my alphaList's item -n
tell currTxt to set currTxt to beginning & ({""} & rest)
end repeat
if sentence_Case then
set currTxt to initialCap(modItems from (capItems from currTxt against sentenceBreak) against sentenceModList)
else if title_Case or mixed_Case then
set currTxt to initialCap(capItems from currTxt against whiteSpace)
if mixed_Case then set currTxt to initialCap(capItems from (modItems from currTxt against mixedModList) against sentenceBreak)
end if
set text item delimiters to tid
end considering
currTxt
end changeCase
--start prgm
property finaltitle1 : ""
property finaltitle2 : ""
set unicodeTxt to (read ("/Users/username/desktop/ttbook.txt" as POSIX file) as Unicode text)
set {text:stringTxt} to unicodeTxt as string
searchReplace(stringTxt, "Next", "Listen!")
to searchReplace(thisText, searchTerm, replacement)
set AppleScript's text item delimiters to searchTerm
set thisText to thisText's text items
set AppleScript's text item delimiters to replacement
set thisText to "" & thisText
set AppleScript's text item delimiters to {""}
return thisText
end searchReplace
set finaltext to searchReplace(stringTxt, "Next", "Listen!")
set AppleScript's text item delimiters to "Listen!"
set thisText to finaltext's text items
set title1 to item 2 of thisText
set title2 to item 3 of thisText
set AppleScript's text item delimiters to {" "}
set title1text to text items of title1
set AppleScript's text item delimiters to {""}
set ftitle1 to title1text as text
set AppleScript's text item delimiters to {""}
set w2 to words of title2
set w1 to words of title1
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to space
set title2 to w2 as string
set title1 to w1 as string
set AppleScript's text item delimiters to tid
set someText to title1
set finaltext1 to changeCase of someText to "mixed" (* "upper", "lower", "sentence", "title" or "mixed" *)
set someText to title2
set finaltext2 to changeCase of someText to "mixed" (* "upper", "lower", "sentence", "title" or "mixed" *)
get finaltext1 & ", " & finaltext2
try
set finaltext1s to (finaltext1 as string) & return
set finaltext1f to open for access "Nautilus HD:Users:username:Desktop:finaltext1.txt" with write permission
set len to get eof finaltext1f
write finaltext1s to finaltext1f starting at (len + 1)
close access finaltext1f
on error e number n from finaltext1f to t partial result p
try
close access finaltext1f
end try
error e number n from finaltext1f to t partial result p
end try
finaltext1 is the title one I want to use for the song title and title 2 is the second title.
These are two different recording sessions.
Then I use this activated by Audio Hijack pro to change the file.
on process(theArgs)
--Coerce args to be a list
if class of theArgs is not list then
set theArgs to {theArgs}
end if
--Into iTunes ye files shall go
tell application "iTunes"
repeat with TheFile in theArgs
add TheFile to playlist "best knowla"
set name of thisfile to my GetTitleFromFile()
end repeat
end tell
end process
on GetTitleFromFile()
tell application "Finder"
set the_file to (read ("/Users/username/desktop/finaltext1.txt" as POSIX file) as Unicode text)
open for access the_file
set title_text to (read the_file)
close access the_file
return title_text
end tell
end GetTitleFromFile
I am sure there is a lot easier way of doing it but this is what I have so far.