Hello all,
I thought that I'd share a script that helped me land my hexacore Mac Pro today. I developed it so that the instant it was added to the Refurbished Store, I would get an email. I tried using some websites that turn any page into an RSS feed, and tried other sites that monitored the refurbished stores, but they didn't act fast enough for what I wanted. This script (once you make it an application) runs in the background constantly but uses very little to no CPU power and very little RAM.
This works on my Power Mac G5 [Late 2005] running 10.5.8 so I can't guarantee that it will work for you. Try it out, and let me know if it works. I won't know how to fix it on your setup if it doesn't but I can offer suggestions. I tried to fix some errors that occurred on my setup with Finder not updating paths or getting the current file size, which explains some of the extra repeat/try loops. I found that maybe once every few weeks, there would be a weird pop-up error that occurred from curl not being able to reach the site I wanted to monitor, but if you clicked Okay on the error, it would go back to normal checking. I found that if I ignored any errors in the code, it wouldn't work so errors are not suppressed.
How to get it to work for you...
Here is the logic for the code...
In this code, I ignore changes of 150 bytes since those changes are often just enabling or disabling links to other products in the refurbished store that I am not interested in. Usually when something is added or removed from the store, the change is between 1500 and 1700 bytes.
Happy shopping!
Here is the code...
I thought that I'd share a script that helped me land my hexacore Mac Pro today. I developed it so that the instant it was added to the Refurbished Store, I would get an email. I tried using some websites that turn any page into an RSS feed, and tried other sites that monitored the refurbished stores, but they didn't act fast enough for what I wanted. This script (once you make it an application) runs in the background constantly but uses very little to no CPU power and very little RAM.
This works on my Power Mac G5 [Late 2005] running 10.5.8 so I can't guarantee that it will work for you. Try it out, and let me know if it works. I won't know how to fix it on your setup if it doesn't but I can offer suggestions. I tried to fix some errors that occurred on my setup with Finder not updating paths or getting the current file size, which explains some of the extra repeat/try loops. I found that maybe once every few weeks, there would be a weird pop-up error that occurred from curl not being able to reach the site I wanted to monitor, but if you clicked Okay on the error, it would go back to normal checking. I found that if I ignored any errors in the code, it wouldn't work so errors are not suppressed.
How to get it to work for you...
- Save the attachment
- Open the script
- Change the variables you need
a. Website address to check [my_url]
b. file path on your computer [the_filepath]
c. email address [my_email_address] - Choose File -> "Save As..."
- Choose File Format "Application"
- Choose Option "Stay Open"
Here is the logic for the code...
- Get the text from the source code for the website you want to check
- Save it to the current.html file
- Compare the current.html file size to the previous.html file size
- If there is no change or a small change, try again later
- If the change is significant then send an email with the current.html and previous.html as attachments
- Then save the current.html as previous.html
In this code, I ignore changes of 150 bytes since those changes are often just enabling or disabling links to other products in the refurbished store that I am not interested in. Usually when something is added or removed from the store, the change is between 1500 and 1700 bytes.
Happy shopping!
Here is the code...
Code:
global my_url, my_text, the_filename, the_filepath, the_file, the_new_file, the_old_file, old_fileSize, new_fileSize, my_email_address
on run {}
check_site()
end run
on idle {}
tell application "Finder" to update the_filepath
check_site()
return 90 --seconds between checking
end idle
on check_site()
--here are the variables you need to change
set my_url to "http://store.apple.com/ca/browse/home/specialdeals/mac/mac_pro" --this can be any site you want to monitor for changes
set the_filepath to "Your_HD:Users:your_name:Documents:Website Change:" --path to where your script is located along with the html files
set my_email_address to "your_name@email.com" --your email address
set my_text to do shell script "curl " & quoted form of my_url
set the_filename to "current.html" --this file has to already exist at the_filepath
set the_file to the_filepath & the_filename
try
set eof file the_file to 0
write my_text to file the_file
end try
tell application "Finder" to update the_filepath
set the_new_file to alias the_file
--needed to add this for the updates to work properly on my machine
repeat
try
tell application "Finder" to set new_fileSize to the size of the_new_file
if new_fileSize is not missing value then exit repeat
on error
delay 1
tell application "Finder" to update the_filepath
delay 5
end try
end repeat
set the_filename to "previous.html" --this file needs to exist at the_filepath
set the_file to the_filepath & the_filename
set the_old_file to alias the_file
repeat
try
tell application "Finder" to set old_fileSize to the size of the_old_file
if old_fileSize is not missing value then exit repeat
on error
delay 1
tell application "Finder" to update the_filepath
delay 5
end try
end repeat
set size_change to new_fileSize - old_fileSize as integer
if size_change = 0 then
--display dialog "No change"
delay 0.1
else
if size_change > 150 or size_change < -150 then
tell application "Finder"
if process "Mail" exists then
delay 0.5
else
tell application "Mail" to launch
tell application "Finder"
repeat until process "Mail" exists
delay 0.5
end repeat
delay 0.5
end tell
end if
end tell
delay 1
tell application "Finder" to set the visible of process "Mail" to false
tell application "Mail"
set theMessage to make new outgoing message with properties {visible:false, subject:"Change to Refurbished Mac Store", content:"Change of " & size_change & " bytes" & return & my_url}
tell theMessage
make new to recipient at end of to recipients with properties {address:my_email_address}
make new attachment with properties {file name:the_new_file} at after the last word of the last paragraph
make new attachment with properties {file name:the_old_file} at after the last word of the last paragraph
end tell
delay 5
send theMessage
try
set eof file the_file to 0
write my_text to file the_file
end try
end tell
end if
end if
end check_site