Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

dolphin842

macrumors 65816
Original poster
Jul 14, 2004
1,172
29
Hi all,

A friend and I are making a simple AppleScript for automatically saving the current webpage in Safari. The twist is that the filename for the saved webpage is based on whatever text the user selects in the webpage (i.e. the title of a news article). Here is what we have so far:

Code:
tell application "Safari"
	activate
	set the_url to URL of document 1
end tell

tell application "System Events"
	tell process "Safari"
		click menu item "Copy" of menu "Edit" of menu bar 1
	end tell
end tell

set the_filename to the clipboard
set the_path to "'/Users/Roy/Documents/" & the_filename & ".html'"

do shell script "curl -o " & the_path & " '" & the_url & "'"

After a fresh restart of Safari, the first run of this script works perfectly. If I go to a second webpage, highlight different text, and run the script again, the file generated from the previous run gets overwritten by the second webpage, and no file with the selected text from the second webpage is made. If I go to a third webpage, select different text, then run, a new file with the selected text from the *second* webpage is created with the data from the *third* webpage. This behavior indicates that the curl command is going according to plan, but something with the clipboard is getting messed up. Any help would be much appreciated!

EDIT: Nevermind folks.... putting a delay between the copy command and setting the_filename to the clipboard did the trick!

EDIT2: fwiw, we ended up using the save function in Safari directly... this produces an html file with a ".html.download" extension, so a shell script takes it back to ".html". I've got the script mapped to a function key and it's quite useful if you only save to a few directories regularly. Here's the final version:

Code:
tell application "Safari"
	activate
end tell

tell application "System Events"
	tell process "Safari"
		click menu item "Copy" of menu "Edit" of menu bar 1
	end tell
end tell

delay 1

set the_filename to (the clipboard) & ".html"
set the_filepath to "Macintosh HD:Users:Roy:Documents:" & the_filename
set the_shellfilepath to "'/Users/Roy/Documents/" & the_filename & ".download'"
set the_shellfilepath2 to "'/Users/Roy/Documents/" & the_filename & "'"

tell application "Safari"
	activate
	save document 1 in the_filepath
end tell

do shell script "mv " & the_shellfilepath & " " & the_shellfilepath2
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.