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:
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:
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