lborruto / Apple-Store-Monitoring

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Apple Store Reserve Monitor

Supports all iPhone, iPad, and Apple Watch

Now also check appointment availability due to COVID-19 store entry restrictions

  • A script to monitor status of the iPhone/iPad/Watch availability in a given country.
  • Configuration file to filter by country, device type, models number, carriers, and stores.
  • Makes an audio announcement if there is a change in the stock for given configuration.

Configuration (Config.json)

The configuration file has the following variables:

  1. country_code - ISO code for country (2 character) (required)
  2. device_family - Filter the device by the apple device family name. (required)
Device Family Names
iphone13pro
iphone13
iphone12pro
iphone12
iphone11pro
iphone11
iphonexr
iphone8
ipadpro_11
ipadair2019
ipad_10_2_2019
ipadmini2019
  1. zip_code - ZIP code to search for (e.g. 90210) (required)
  2. models - List the models you are interested about, it does a partial match so country specific information can be stripped (MQ8J2LL/A, MQ8J2). The default value is all available models.
  3. carriers - Carriers you are interested in. US carriers - TMOBILE/US, SPRINT/US, ATT/US, VERIZON/US, UNLOCKED/US. If you are outside US do not put this in.
  4. stores - ID of the stores you are interested in (you will have to run the script once to get the store ID), default value is all the stores in that region (also available here.)
  5. appointment_stores - ID of the stores you want to look for appointments in. This is optional, if you do not put this configuration the app will not look for appointments. In COVID-19 times appointments have become a hassle to get (at least in Berlin).

To get store's ID, model number, and carrier names you will have to run the script once.

Telegram Notification

Create a Telegram bot by talking to @BotFather, and copy the token.

Next, you'll need to configure telegram-send by running : telegram-send --configure

Apple Watch

To monitor Apple Watch skip family name parameter and just enter the particular model number. An example configuration would be.

{
  "country_code": "fr",
  "zip_code": "69001",
  "models": ["MKMQ3NF/A"],
  "stores": ["R469", "R373"]
  "appointment_stores": ["R469"],
}

You can get the correct model number for the device you are looking for from the URL such as https://www.apple.com/shop/buy-watch/apple-watch/silver-aluminum-white-sport-band?preSelect=false&product=MU642LL/A&step=detail# the product value is the model number, here are a few examples:

  • Apple Watch Space Gray Aluminum Case with Sport Band (MWT52LL/A)
  • Apple Watch Gold Stainless Steel Case with Sport Loop (MWQN2LL/A)

Thanks to @rovingrob for pointing this out!

How To Run:

  • Ensure you have Python 3.6 and run pip install -r requirements.txt.
  • Execute ./store_checker.py to run once.
  • Execute ./monitor.py to keep running it every 30 seconds.

image image

Model Numbers

  • To get the exact model code for your country go to your country equivalent of https://www.apple.com/fr/shop/product-locator-meta?family=iphone13 and get the partNumber.
  • These are some model numbers but others can be found easily at third party sellers.
  • Keep in mind these are country specific but you can truncate the information to skip the country information.

Dev Notes

Project uses the following tools to ensure a well formatted code. However, as of now it does not have pre-commit hooks or a setup file to run the tools.

  • Black (black .)
  • Pycodestyle (pycodestyle .)
  • Isort (isort -y)

About


Languages

Language:Python 99.5%Language:Batchfile 0.5%