Apple Store Stock Notifier monitors the availability of selected Apple devices in selected Apple stores, and sends you a notification when devices are available!

Overview

Apple Store Stock Notifier

This software will immediately send you a notification via Telegram when one of your coveted Apple Devices is available in the selected Apple Stores! In addition, it offers various tools (such as graphs) to analyze the availability of the selected devices from the comfort of your smartphone / tablet / teapot / desktop etc. (whatever Telegram runs on). It is intended to run on an always-on device (such as a Raspberry Pi), and requires an internet connection and a Telegram account.

This software is built on a modified version of Apple-Store-Reserve-Monitor by insanoid.

Installation

How to install

  1. Clone this repository and cd to it.
  2. Execute pip install -r requirements.txt.
  3. Adapt the config.json file to your needs (see under "use").
  4. Create a Telegram bot to inform you and enter the required details in parameters.py.
  5. Run the monitor with python monitor.py.
  6. (optional) Send /setcommands to the Telegram Botfather chat, select the bot and send the output under "Commands available:" to make the commands easily accessible from the chat.

Running the pip numpy on the Raspberry Pi can be cumbersome. If you get errors pertaining to "Importing the numpy C-extensions failed", try running sudo apt-get install python-dev libatlas-base-dev.

Use

It's as simple as entering the device and Apple Store you want in config.json and running python module.py. The model in config.json is the model part number, that can be looked up here. The store in config.json is the store ID, a list of which can be looked up here, defaults to all stores in the zip-code region. config.json is part of the interface of Apple Store Reserve Monitor, more information on how to use this here.

You can change the parameters regarding intervals, paths, use of proxies etc. from the defaults in parameters.py.

It is recommended to run this on a computer that is always on and always has an active internet connection (think of the environment when doing this!). Raspberry Pi and similar computing boards are often good choices. You may want to set up a job to start this automatically using crontab or bashrc if you are running this on a Raspberry Pi, so it can run autonomously.

Please use this software responsibly! Do not set a low polling interval, both for your own benefit (you will be blocked) as for the other users of Apple's service. In general, the defaults set are fine for being notified in time. The intended use is for people to be able to get an Apple device that is often out of stock for their own use. Do not use this software for scalping, price gouging or any other use that is unethical.

Proxies

Randomized proxies help you make requests for a prolonged period of time without your IP-address being blocked by Apple's server. For this http-request-randomizer by pgaref (licensed under MIT license) is used. If randomized proxies are enabled in parameters.py, a list of free proxies will be generated. When a request is made, a random proxy is selected from this list. If the proxy does not return a response within the timeout window, the proxy is removed from the list. Because free proxies are often slow and unreliable, for each request, it will fallback to a non-proxied request after attempting a proxy unsuccesfully. However, because unresponsive proxies are removed from the list, in most cases this random proxy system becomes reliable after a while. Keep in mind that free proxies only remain active for a very short time (days or even hours), so if this program is ran for a long time, the list will become empty, at which point it reloads the proxy list. Using the randomized proxies is significantly slower than direct requests, but prevent your IP address from being blocked.

Licensing

This software builts on other open source software. As such, it is MIT licensed.

You might also like...
Typhon is a macOS specific payload aimed at targetting Jamf managed devices.
Typhon is a macOS specific payload aimed at targetting Jamf managed devices.

Typhon is a macOS specific payload aimed at targetting Jamf managed devices. This payload can be used to manipulate macOS devices into communicating with a Mythic instance, which acts as a Jamf server with the ability to execute commands.

Home Assistant integration for MyEnergi devices
Home Assistant integration for MyEnergi devices

myenergi for Home Assistant myenergi custom component for Home Assistant This is a very early release, will add more documentations soon! This compone

Mini SCADA. Poll modbus devices by TCP/IP network.

Plans Add saving and loading devices and channels with files or db or someone else. Multitasking system for poll all devices Automatic optimization po

An API for controlling Wi-Fi connections on Balena devices.

Description An API for controlling Wi-Fi connections on Balena devices. It does not contain an interface, instead it provides API endpoints to send re

Python module to interface with Tuya WiFi smart devices

TinyTuya Python module to interface with Tuya WiFi smart devices Description This python module controls and monitors Tuya compatible WiFi Smart Devic

This application aims to read all wifi passwords and visualizes the  complexity in graph formation by taking into account several criteria and help you generate new random passwords.
This application aims to read all wifi passwords and visualizes the complexity in graph formation by taking into account several criteria and help you generate new random passwords.

This application aims to read all wifi passwords and visualizes the complexity in graph formation by taking into account several criteria and help you generate new random passwords.

IPE is a simple tool for analyzing IP addresses. With IPE you can find out the server region, city, country, longitude and latitude and much more in seconds.

IPE is a simple tool for analyzing IP addresses. With IPE you can find out the server region, city, country, longitude and latitude and much more in seconds.

ProtOSINT is a Python script that helps you investigate Protonmail accounts and ProtonVPN IP addresses
ProtOSINT is a Python script that helps you investigate Protonmail accounts and ProtonVPN IP addresses

ProtOSINT ProtOSINT is a Python script that helps you investigate ProtonMail accounts and ProtonVPN IP addresses. Description This tool can help you i

Python Scrcpy Client - allows you to view and control android device in realtime
Python Scrcpy Client - allows you to view and control android device in realtime

Python Scrcpy Client This package allows you to view and control android device in realtime. Note: This gif is compressed and experience lower quality

Comments
  • Error running store_checker

    Error running store_checker

    I get:

    line 373 in store_checker = StoreChecker() TypeError: StoreChecker.Init() missing 1 required positional argument: 'username'

    I installed all dependencies. This is when i run the store_checker script, and all the config parameters are programmed.

    This is all from ubuntu 22.04.1 LTS (Desktop)

    opened by Fiberopt1986 2
  • Error running script

    Error running script

    Just creating new ticket and referencing the old ticket, as I commented after it was closed, but not sure if it will be seen>

    Let me back up. I did run the monitor.py file, and i had some errors initially there, and that is why i was trying to invoke the store checker to skip the telegram piece, as i thought it was a telegram issue. Now that I know that you cannot do that, here is the issue i have when running the monitor.py file:

    I get the following errors:

    New monitoring session! IP address: 192.168.190.129 Traceback (most recent call last): File "/home/username/Apple Notifier Scripts/Apple-Store-Stock-Notifier/monitor.py", line 350, in monitor = Monitor() File "/home/username/Apple Notifier Scripts/Apple-Store-Stock-Notifier/monitor.py", line 170, in init client.loop.run_until_complete(self.start_monitoring(client)) File "/usr/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete return future.result() File "/home/username/Apple Notifier Scripts/Apple-Store-Stock-Notifier/monitor.py", line 180, in start_monitoring await send(client, message) File "/home/username/Apple Notifier Scripts/Apple-Store-Stock-Notifier/utils.py", line 20, in send await client.send_message(username, message) File "/home/username/.local/lib/python3.10/site-packages/telethon/client/messages.py", line 853, in send_message result = await self(request) File "/home/username/.local/lib/python3.10/site-packages/telethon/client/users.py", line 30, in call return await self._call(self._sender, request, ordered=ordered) File "/home/username/.local/lib/python3.10/site-packages/telethon/client/users.py", line 79, in _call result = await future telethon.errors.rpcerrorlist.UserIsBotError: Bots can't send messages to other bots (caused by SendMessageRequest)

    That last error. I am definitely not sending from a bot to another bot. My username is my regular telegram username (tried with @ and without @), and the API_ID / hash was generated under the api section of my account. The bot_token was the token that was provided when creating the bot.

    I also tried removing the *.session files with no luck.

    Lastly, I also tried creating a completely different account with different phone number for the bot, so that i can validate 100% that the bot and my user was under a different account, and i got the same error.

    Originally posted by @Fiberopt1986 in https://github.com/fjwillemsen/Apple-Store-Stock-Notifier/issues/3#issuecomment-1293504069

    opened by Fiberopt1986 0
  • Getting : rpcerrorlist.ApiIdInvalidError:

    Getting : rpcerrorlist.ApiIdInvalidError:

    
     File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
        return future.result()
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telethon/client/auth.py", line 182, in _start
        await self.sign_in(bot_token=bot_token)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telethon/client/auth.py", line 368, in sign_in
        result = await self(request)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telethon/client/users.py", line 30, in __call__
        return await self._call(self._sender, request, ordered=ordered)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/telethon/client/users.py", line 79, in _call
        result = await future
    telethon.errors.rpcerrorlist.ApiIdInvalidError: The api_id/api_hash combination is invalid (caused by ImportBotAuthorizationRequest)
    
    

    Getting above error Will this work for iPHONE 14. ?

    opened by advaidg 0
Releases(v0.1.0)
Owner
Floris-Jan Willemsen
Hi! My name is Floris-Jan and I'm a Computer Science student from Holland. I've always been fascinated by computers and have a passion for programming.
Floris-Jan Willemsen
boofuzz: Network Protocol Fuzzing for Humans

boofuzz: Network Protocol Fuzzing for Humans Boofuzz is a fork of and the successor to the venerable Sulley fuzzing framework. Besides numerous bug fi

Joshua Pereyda 1.7k Dec 31, 2022
Interact remotely with the computer using Python and MQTT protocol 💻

Comandos_Remotos Interagir remotamento com o computador através do Python e protocolo MQTT. 💻 Status: em desenvolvimento 🚦 Objetivo: Interagir com o

Guilherme_Donizetti 6 May 10, 2022
E4GL3OS1NT - Simple Information Gathering Tool

E4GL30S1NT Features userrecon - username reconnaissance facedumper - dump facebook information mailfinder - find email with specific name godorker - d

C0MPL3XDEV 195 Dec 21, 2022
stellar-add-guest is a small tool to generate a new guest for Stellar Wireless (Enterprise mode) in OmniVista 2500 hosted on OmniSwitch with AOS Release 8

stellar-add-guest is a small tool to generate a new guest for Stellar Wireless (Enterprise mode) in OmniVista 2500 hosted on OmniSwitch with AOS Release 8.

BennyE 3 Jan 24, 2022
A simple python application for generating a WiFi QR code for ease of connection

A simple python application for generating a WiFi QR code Initialize the class by providing QR code values WiFi_QR_Code(self, error_correction: int =

Ivan 2 Aug 01, 2022
Multi-path load balancing is a method used by most of the real-time network to split the packets into different paths rather than transferring it through a single path

Multipath-Load-Balancing Method of managing incoming traffic by distributing and sharing load fairly among multiple routes from source to destination

Dharshan Kumar 6 Dec 10, 2022
Top server mcpe Indonesia!

server_mcpe Top server mcpe Indonesia! install pkg install python pkg install git git clone https://github.com/Latip176/server_mcpe cd server_mcpe pip

Muhammad Latif Harkat 2 Jul 17, 2022
A Python package for handling free proxies from sslproxies.org

SSLProxies Get free working proxy from https://www.sslproxies.org/ and use it in your script This is a port/rewrite of free-proxy with additional feat

Nate Harris 2 Mar 17, 2022
Process incoming JSON-RPC requests in Python

August 16, 2021: Version 5 has been released. Read about the changes in version 5, or read the full documentation. Version 5 is for Python 3.8+ only.

Exploding Labs 156 Dec 31, 2022
A simple implementation of an RPC toolkit

Simple RPC With Raw Sockets Repository for the Data network course project: Introduction In this project, you will attempt to code a simple implementa

Milad Samimifar 1 Mar 25, 2022
This is a Client-Server-System which can share the screen from the server to client and in the other direction.

Screenshare-Streaming-Python This is a Client-Server-System which can share the screen from the server to client and in the other direction. You have

VFX / Videoeffects Creator 1 Nov 19, 2021
Simple Port Scanner With Socket Module In Python 3x

PortScanner Simple Port Scanner With Socket Module In Python 3x How To Install Requirements Of This Port Scanner sudo apt install python3;sudo apt ins

1 Nov 23, 2021
A working cloudflare uam bypass !!

Dark Utilities - Cloudflare Uam Bypass Our Website https://over-spam.space/ ! Additional Informations The proxies type are http,https ... You need fas

Inplex-sys 26 Dec 14, 2022
A vpn that sits in your browser, accessible via a website

VPNInYourBrowser A vpn that sits in your browser, accessible via a website Example setup: https://VPNInBrowser.jaffa42.repl.co Setup Put the code onto

1 Jan 20, 2022
Linux SBC featuring two wifi radios, masquerading as a USB charger.

The WiFiWart is an open source WiFi penetration device masquerading as a regular wall charger. It features a 1.2Ghz Cortex A7 MPU with two WiFi chips onboard.

Walker 151 Dec 26, 2022
Utility for converting IP Fabric webhooks into a Teams format.

IP Fabric Webhook Integration for Microsoft Teams and/or Slack Setup IP Fabric Setup Go to Settings Webhooks Add webhook Provide a name URL will b

Community Fabric 1 Jan 26, 2022
pfSense integration with Home Assistant

hass-pfsense Join pfSense with home-assistant! hass-pfsense uses the built-in xmlrpc service of pfSense for all interactions. No special plugins or so

Travis Glenn Hansen 105 Dec 24, 2022
Python code that get the name and ip address of a computer/laptop

IP Address This is a python code that provides the name and the internet protocol address of the computer. You need to install socket pip install sock

CODE 2 Feb 21, 2022
The can package provides controller area network support for Python developers

python-can The Controller Area Network is a bus standard designed to allow microcontrollers and devices to communicate with each other. It has priorit

Brian Thorne 904 Dec 29, 2022
A collection of domains, wildcards and substrings designed for dnscrypt-proxy filter method.

A collection of domains, wildcards and substrings designed for dnscrypt-proxy filter method.

3 Oct 25, 2022