Applescript for saving webpage in Safari

Discussion in 'Mac Programming' started by dolphin842, Nov 29, 2006.

  1. macrumors 65816

    dolphin842

    Joined:
    Jul 14, 2004
    #1
    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 
     

Share This Page