Impf Bot.py 🐍⚡ automation for the German

Overview

Impf Bot.py 🐍 – Bot für Impftermine

Python Selenium

Entspahnt in den Sommer

Automatisierte Impftermin-Vermittlung des offiziellen ImpfterminService - Der Patientenservice 116117. Der Bot kann mehrere Standorte parallel durchsuchen und auf verfügbare Terminen überwachen. Dabei wird der gesamte Prozess von der Vermittlungscode-Beschaffung bis zur Reservierung und Benachrichtigung freier Termine ganzheitlich abgebildet.

Wenn ein freier Impftermin / Slot gefunden wird, sendet der Bot eine Benachrichtigung via Zulip (Telegram, Slack, ... sind einfach integrierbar) und macht den Benutzer via Sprachausgabe auf den Slot aufmerksam. So kann der SMS Bestätigungscode manuell oder von überall unterwegs via Lieblings-Chat App übermittelt werden - Impf Bot.py erledigt den Rest. - detaillierter Workflow

Der Bot verwendet Browser-Automatisierung, die im Hintergrund laufen kann und es dem Benutzer ermöglicht manuell einzugreifen sowie einfach nachzuvollziehen, was gerade passiert. Die wichtigen Timings können dabei eingestellt werden, um einen Timeout (bzw. Shadow Ban) zu vermeiden.

This is an improved Python implementation of the Java-based 💉 🤖 Impf-Bot

Features

Easy to set up
Python for the 21st Century
Full browser automation
Concurrent checking
Waiting room detection
Timeout / Shadow Ban 429 detection
Automatically re-check Vermittlungscode
settings.py for single point of configuration
Zulip integration
Run custom Commands for Alerting (Text-to-Speech preconfigured)
Easy to add additional backends, like Telegram, Slack, Webhooks ...

Workflow

This is a two-step process. First you'll need a Vermittlungscode to then book a vaccination appointment. Each center* has its own valid Vermittlungscode, which you'll need to acquire first to advance to the next step.

  1. If you do not have a Vermittlungscode for a center yet
    • The bot will check the site to see if there is vacancy
    • If there is vacancy, the bot will enter your age, email and phone number
    • The bot will alert you that there is vacancy using the alert backends
    • ImpfterminService will send you a SMS with a confirmation code
    • Either enter the code manually or send it to the bot using sms:123-456
    • The Vermittlungscode is sent to your email
    • Enter the Vermittlungscode on the center in settings.py and restart the bot 🚨
  2. If you have a Vermittlungscode for a center
    • The bot will enter your Vermittlungscode
    • It will check if there are available appointments
    • If there are appointments, it will alert you using your alert backend
    • You will have to manually choose the appointment for your best convenience
    • Alternatively use a remote access tool (I prefer AnyDesk, but TeamViewer also works) to access your machine remotely

* Every center is hosted on a server, indicated by the numbers in the URL, e.g. https://001-iz.impfterminservice.de/impftermine/service?plz=70713 is server 001. Vermittlungscodes are valid for every center on the given server

Warning: The online booking isn't an authorization

On the booking date you still have to bring the documents with you, to proof that you are qualified to receive the vaccination. Check out the official guidelines and make sure you are qualified for them. This bot doesn't help you get a privilege. It only allows you to get a date without losing the nerves or waisting a lifetime in pointless callcenter calls.

Setup 👾

Requirements

For Dummies

I don't know anything about programming! And CLI gives me anxiety

Don't worry. It's easy. Follow this Step-by-Step Guide and then come back.

For Techies

git clone https://github.com/alfonsrv/impf-botpy.git
cd impf-botpy
pip3 install -r requirements.txt
# configure settings.py
mv settings.sample.py settings.py
python3 main.py

Configuration

  1. Rename settings.sample.py to settings.py
  2. Edit the LOCATIONS by adding your Impfzentrum with the name as shown on ImpfterminService
  3. If you already have a Vermittlungscode for one of the centers, enter it at code - otherwise leave empty
  4. Enter your age, mail and phone number
  5. The rest of the settings is ok as is. If you want to check locations with multiple browsers at the same time, dig into the Advanced Features section.

Run it

  • python3 main.py und entspahnen
  • python3 main.py --alerts to test configured alerts

Support & Contributing

Feature Requests & Feedback

Too complex? Successfully booked an appointment?
Feedback and reasonable feature requests are always much appreciated and can be submitted here!

Adding Backends for Alerts

Contributions are welcome! Adding your favorite backend (e.g. Slack) for alerting is easy. Simply add your preferred integration to

  1. alert.py and integrate it with read_code() and send_alert()
  2. constructor.py if your API is a bit more complex to keep things tidy
  3. settings.py add your relevant settings (must include ENABLED flag)
  4. main.py in print_config for NextGen UX
  5. Pull Request & Done 💥

Auch ich wünschte, dass es so n Tool nicht geben müsste, aber ist aktuell einfach absolute Katastrophe. Seid vernünftig und missbraucht den Bot nicht, ja?

Buy me a Coffee

Ärzte ohne Grenzen

The Ultimate Widevine Content Ripper (KEY Extract + Download + Decrypt) is REBORN

NARROWVINE-REBORN ** UPDATE 21.12.01 ** As expected Google patched its ChromeCDM Whitebox exploit by Satsuoni with a force-update on the ChromeCDM. Th

Vank0n 104 Dec 07, 2022
JurjenLang, an interpreted programming language

JurjenLang An interpreted programming language Getting started Follow these three steps on your computer to get started git clone https://github.com/J

JVerbruggen 5 May 03, 2022
The newest contender in Server Gateway Interface.

nsgi The newest contender in Server Gateway Interface. Why use this webserver? This webserver is made with the newest version of asyncio, and sockets,

OpenRobot 1 Feb 12, 2022
A Python module for decorators, wrappers and monkey patching.

wrapt The aim of the wrapt module is to provide a transparent object proxy for Python, which can be used as the basis for the construction of function

Graham Dumpleton 1.8k Jan 06, 2023
A small C compiler written in Python for learning purposes

A small C compiler written in Python. Generates x64 Intel-format assembly, which is then assembled and linked by nasm and ld.

Scattered Thoughts 3 Oct 22, 2021
All you need to understand CRUD and MVP in DRF

Book-Store-API This an API which has been put in place just to make you order for books, upload books with price, image and all, pay and automtically

Oladipo Adesiyan 6 Jul 03, 2022
This is a Python script to detect rapid upwards price changes (pumps) in a cryptocurrency pairing

A python script to detect a rapid upwards price brekout (pump) in a cryptocurrency pairing, through pandas and Binance API.

3 May 25, 2022
A simple assembly- and brainfuck-inspired stack-based language

asm-stackfuck A simple assembly- and brainfuck-inspired stack-based language. The language has a few goals: Be stack-based Look like assembly Have a s

Nils Trinity 1 Feb 06, 2022
Material de apoio da oficina de SAST apresentada pelo CAIS no Webinar de 28/05/21.

CAIS-CAIS Conjunto de Aplicações Intencionamente Sem-Vergonha do CAIS Material didático do Webinar "EP1. Oficina - Práticas de análise estática de cód

Fausto Filho 14 Jul 25, 2022
NFT-Image-Generator - Utility to generate a large collection of unique images

NFT-Image-Generator Utility for creating a generative art collection from suppli

Sem Moolenschot 60 Dec 15, 2022
resultados (data) de elecciones 2021 y código para extraer data de la ONPE

elecciones-peru-2021-ONPE Resultados (data) de elecciones 2021 y código para extraer data de la ONPE Data Licencia liberal, pero si vas a usarlo por f

Ragi Yaser Burhum 21 Jun 14, 2021
A check numbers python module

Made with Python3 (C) @FayasNoushad Copyright permission under MIT License License - https://github.com/FayasNoushad/Numbers/blob/main/LICENSE Deplo

Fayas Noushad 3 Nov 28, 2021
App and Python library for parsing, writing, and validation of the STAND013 file format.

python-stand013 python-stand013 is a Python app and library for parsing, writing, and validation of the STAND013 file format. Features The following i

Oda 3 Nov 09, 2022
Find all solutions to SUBSET-SUM, including negative, positive, and repeating numbers

subsetsum The subsetsum Python module can enumerate all combinations within a list of integers which sums to a specific value. It works for both negat

Trevor Phillips 9 May 27, 2022
Blender addon, import and update mixamo animation

This is a blender addon for import and update mixamo animations.

ywaby 7 Apr 19, 2022
Cross-Encoder-with-Bi-Encoder를 활용한 WebPage 데모

Retrieval_Streamlit_Demo Cross-Encoder-with-Bi-Encoder를 활용한

5 Dec 29, 2021
A set of scripts for a two-step procedure to measure the value of access to destinations across several modes of travel within a geographic area.

A set of scripts for a two-step procedure to measure the value of access to destinations across several modes of travel within a geographic area.

Institute for Transportation and Development Policy 2 Oct 16, 2022
Beacon Object File (BOF) to obtain a usable TGT for the current user.

Beacon Object File (BOF) to obtain a usable TGT for the current user.

Connor McGarr 109 Dec 25, 2022
Hopefully it'll become a very annoying desktop pet

AnnoyingPet Basic Tutorial: https://seebass22.github.io/python-desktop-pet-tutorial/ Handling Mouse Input: https://pythonhosted.org/pynput/mouse.html

1 Jun 08, 2022
This code can help you with auto update for-TV-advertisements in the store.

Auto-update-files-for-TV-advertisements-in-the-store This code can help you with auto update for-TV-advertisements in the store. It was write for Rasp

Max 2 Feb 20, 2022