Apple Store Notifier

Apple announced new products a few days ago. As always, stock in the stores is limited. If you’re smart, you check online whether the product you want is available at your local Apple Store. If you’re lazy, use the following Python script to automate that. Note: Pushover is required. #!/usr/bin/env python3 import requests import os import time def fetch_availability(product_number, store_id): payload = { "store": store_id, "little": False, "mt": "regular", "parts.0": product_number, "fts": True, } url = "https://www.apple.com/de/shop/fulfillment-messages" r = requests.get(url, params=payload) data = r.json() stores = data["body"]["content"]["pickupMessage"]["stores"] store = next(store for store in stores if store["storeNumber"] == store_id) avail = store["partsAvailability"][product_number] return { "store_name": store.get("storeName"), "available": avail.get("pickupDisplay") != "ineligible", "store_pickup_quote": avail.get("storePickupQuote"), "pickup_search_quote": avail.get("pickupSearchQuote"), "pickup_display": avail.get("pickupDisplay"), } def assemble_availability_text(product_number, store_ids): avail_text = "" for store_id in store_ids: avail = fetch_availability(product_number, store_id) avail_text += f'{avail["store_name"]}: {avail["store_pickup_quote"]}\n' return avail_text def create_file_if_not_exists(filepath): if not os.path.exists(filepath): with open(filepath, "w") as f: f.write("") def do_it(part_no, store_ids, **kwargs): availability_text = assemble_availability_text(part_no, store_ids) create_file_if_not_exists("/tmp/cache.txt") with open("/tmp/cache.txt", "r+", encoding="utf-8") as f: if f.read() == availability_text: print("No Changes", flush=True) else: print("Changes detected", availability_text, flush=True) if kwargs["pushover_enabled"] == "1": requests.post( "https://api.pushover.net/1/messages.json", data={ "token": kwargs["pushover_token"], "user": kwargs["pushover_user"], "message": availability_text, "title": "CHANGES DETECTED", }, headers={"Content-Type": "application/x-www-form-urlencoded"}, ) f.truncate(0) f.seek(0) f.write(availability_text) if __name__ == "__main__": while True: do_it( os.environ["MONITORED_PART_NO"], os.environ["MONITORED_STORES"].split(","), pushover_enabled=os.environ["PUSHOVER_ENABLED"], pushover_token=os.environ["PUSHOVER_TOKEN"], pushover_user=os.environ["PUSHOVER_USER"], ) time.sleep(int(os.environ["POLLING_DELAY_SECONDS"])) The script is in the repository dprandzioch/apple-store-notifier on GitHub. ...

March 19, 2022 · 2 min · 243 words

PiXel ScaLer

Here’s a quick recommendation for pixel artists. The tool PiXel ScaLer scales up small pixel graphics by several times while preserving the pixel structure. PiXel ScaLer is a scaling application that provides a relatively easy way to convert pixel art to illustration style art using xBRjs. You may use the converted pixel art for personal or commercial use within the limits of your conscience. The text was automatically translated from German into English. The German quotations were also translated in sense. ...

January 22, 2022 · 1 min · 81 words

Ghost Bookmarklet

After switching from Grav to Ghost I have to tweak a few articles. To be able to quickly jump from the frontend to the backend, I wrote a super-simple bookmarklet. Just save the following code as a bookmark. javascript:window.location.href=window.location.href+'/edit'; After you click the bookmark, the browser will navigate to http://DEINEBLOG.URL/edit and, if you’re logged in, you can edit the article directly. The text was automatically translated from German into English. The German quotations were also translated in sense. ...

December 23, 2021 · 1 min · 78 words
Ein veröffentlichtes Foto

Aloe Vera

That was the most beautiful aloe vera we’ve ever had. R.I.P. Feel free to like or comment on the photo on Instagram: https://instagr.am/p/CSHpfv4MTRW/ The text was automatically translated from German into English. The German quotations were also translated in sense.

August 3, 2021 · 1 min · 40 words

BestPhotos

Using the app BestPhotos - Library Manager, I’ve spent the last few weeks cleaning up and organizing my photo library. Now I just need a tool that can smartly determine location information. It’s not uncommon for me to have taken photos with an iPhone and a digital camera at the same spot. Surely you can use artificial intelligence to fill in locations intelligently, since certain subjects have been photographed thousands of times and their coordinates could therefore be determined easily. ...

July 21, 2021 · 1 min · 101 words