Thu 15 November 2012
I want to know when the Nexus 4 is available again. So I decided to hack
together a script to email me (and a friend) when it launches. I'm
relying on Google removing the words "Sold out". As I said, it's a hack.
Alternatively, I guess I could have stored a snapshot of the page's
source code and compared for changes.
#Script by Rishab Arora (spacetime)
from urllib import urlopen
sender = 'firstname.lastname@example.org'
recipients = [ 'email@example.com' , 'firstname.lastname@example.org' , 'email@example.com' ]
subject = 'Nexus 4 back in stock!'
body = 'Check Google Play Store!'
contents = urlopen ( "https://play.google.com/store/devices/details?id=nexus_4_16gb" ) . read ()
if contents . find ( "buy-hardware-button" ) != - 1 : #Found magic button!
message = " \r\n " . join ([ "From: " + sender ,
"Subject: " + subject ,
"To: " + ", " . join ( recipients ),
"MIME-Version: 1.0" ,
"Content-Type: text/html" ,
session = smtplib . SMTP ( 'smtp.gmail.com' , 587 )
session . ehlo ()
session . starttls ()
session . login ( 'firstname.lastname@example.org' , 'secretpassword' )
session . sendmail ( sender , recipients , message )
session . quit ()
except Exception :
print logging . exception ( '' )
Added this in my crontab:
*/ 5 * * * * python / home / spacetime / nexus . py
Which basically runs the script every 5 minutes (Too much? ) on my
Do test the script at least once if you are
using Gmail's SMTP server! One way you can test the script is by
if contents . find ( "buy-hardware-button" ) != - 1 :
if contents . find ( "buy-hardware-button" ) == - 1 :
And running it.
An easier (and more accurate) way would be to change the URL to, say, Nexus 7 16 GB.
(Remember to chmod +x) The first time you run it, you
will see something resembling:
SMTPAuthenticationError: (535, '5.7.1 Please log in with your web browser and then try again. Learn more at\n5.7.1 https://support.google.com/mail/bin/answe
Log into your account from a browser and there will be a notification at
the top with steps on how to allow the script to work.
Edit 1: The
script now looks for "buy-hardware-button" which appears when you can
buy stuff. Thanks to Anarcie on
Edit 2: I can add a few names to my script, fill this
Edit 3: Yes, I realize the script spams you till I switch it off. That's
a design decision. ;) I want my phone to keep ringing till I read it.
You can mark the email as spam when you're done and it won't bother you.
About 150 people on the alert list! =)
If you like/hate it or notice any problems, please leave a comment!!!
If you wish to see the sendmail version I'm using:
click here for the github gist.