Skip to content

Instantly share code, notes, and snippets.

@jhofman
Last active December 24, 2015 08:49
Show Gist options
  • Save jhofman/6772884 to your computer and use it in GitHub Desktop.
Save jhofman/6772884 to your computer and use it in GitHub Desktop.
checks apple.come for iphone 5s in-store pickup availability
#!/usr/bin/env python
#
# file: scrapple.py
#
# description: checks apple.come for iphone 5s in-store pickup availability
#
# usage: ./scrapple.py [zip] [att|verizon|sprint] [16|32|64] [grey|silver|gold]
#
# or in a crontab:
# */5 * * * * /path/to/scrapple.py 10012 verizon 32 grey && mailx -s 5s [email protected]
#
import sys
from urllib import urlencode
from urllib2 import urlopen
import json
import smtplib
carrier_codes = {'att': 305,
'verizon': 341,
'sprint': 350}
storage_offset = {'16': 0,
'32': 3,
'64': 6}
color_offset = {'grey': 0,
'silver': 1,
'gold': 2}
BASE_URL = 'http://store.apple.com/us/retail/availabilitySearch'
def get_part_num(carrier, storage, color):
num = carrier_codes[carrier] + storage_offset[storage] + color_offset[color]
return 'ME%dLL/A' % num
if __name__=='__main__':
zip, carrier, storage, color = sys.argv[1:]
part_num = get_part_num(carrier, storage, color)
query = urlencode({'parts.0': part_num, 'zip': zip})
url = '%s?%s' % (BASE_URL, query)
response = json.load(urlopen(url))
stores = []
for store in response['body']['stores']:
availability = store["partsAvailability"][part_num]["pickupDisplay"]
if availability != "unavailable":
stores.append((store["storeDisplayName"], availability))
if len(stores) > 0:
msg = '%s %sGB %s\n' % (carrier, storage, color)
msg += "\n".join([": ".join(store) for store in stores])
print msg
sys.exit(0)
else:
sys.exit(1)
@iMinichrispy
Copy link

What about t-mobile?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment