Apple Store Notifier

Apple hat vor einigen Tagen neue Produkte angekündigt. Wie immer sind die Artikel in den Stores nur bedingt vorrätig. Wer schlau ist, schaut online, ob das gewünschte Produkt im örtlichen Apple Store vorrätig ist. Wer faul ist, nutzt dazu das folgende Python Script, um das automatisiert zu machen. Achtung Pushover wird vorausgesetzt. #!/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"])) Das Script liegt im Repository dprandzioch/apple-store-notifier auf GitHub. ...

19. März 2022 · 1 Minute · 228 Wörter

Ghost Bookmarklet

Nach meinem Wechsel von Grav zu Ghost muss ich den einen oder anderen Artikel nochmal anpassen. Damit ich schnell vom Frontend ins Backend wechseln kann, habe ich mir ein supersimples Bookmarklet geschrieben. Einfach folgenden Code als Lesezeichen speichern. javascript:window.location.href=window.location.href+'/edit'; Nachdem man auf das Lesezeichen klickt, wechselt der Browser auf http://DEINEBLOG.URL/edit und sofern du eingeloggt bist, kannst du den Artikel direkt bearbeiten.

23. Dezember 2021 · 1 Minute · 61 Wörter

Dropbox auf Uberspace

Dieses Blog und weitere Dienste hoste ich bei Uberspace.de. Vor einigen Jahren konnte man den Dropbox-Client im eigenen Benutzerkonto installieren. Seitdem Uberspace auf CentOS 7 gewechselt ist, geht das leider nicht mehr. Vor einigen Wochen erfuhr ich von Maestral, einem Dropbox-Client eines Drittanbieters. Zuerst müssen wir die Software pip aktualisieren. Das geht ganz einfach mit folgendem Befehl: python3 -m pip install --upgrade pip --user Jetzt können wir Maestral installieren, das geht ähnlich einfach: ...

30. September 2021 · 2 Minuten · 362 Wörter

CSS Brighter

Wie Matsuko, finde ich Videos manchmal ebenfalls zu dunkel, wenn ich abends Netflix oder YouTube schaue. In der Regel stelle ich dann den Bildschirm heller, ich würde aber lieber nur das Video heller stellen. Mit dem folgenden Codeschnipsel kann man genau das tun. /* Brighter Netflix and YouTube videos */ video[src^="blob:https://www.netflix.com/"], video[src^="blob:https://www.youtube.com/"] { filter: brightness(1.4); }

6. August 2020 · 1 Minute · 56 Wörter

Hello Darkness

Solltet ihr ein Gerät nutzen, das einen Darkmode hat, so färbt sich dieses kleine Blog nun auch entsprechend eurer Systemeinstellung. Mit Hilfe der Beschreibung von Jeremy Keith konnte ich das ganz schnell umsetzen. Eigentlich ist es sehr, sehr einfach. Einfach den folgenden Code in seine style.css packen und die gewünschten CSS-Eigenschaften für den Darkmode hinterlegen. @media (prefers-color-scheme: dark) { /* Darkmode CSS-Eigenschaften hier */ } Man könnte jetzt noch überlegen, ob man einen Schalter im Blog möchte, mit dem man die Einstellung überschreiben kann. Thomas Steiner beschreibt das hier auch ganz gut. ...

31. März 2020 · 1 Minute · 92 Wörter