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

SpellingBeeSolver - This program generates solutions to NYT style spelling bee problems.

SpellingBeeSolver This program generates solutions to NYT style spelling bee problems. The initial version of this program is being written in Python

1 Jan 01, 2022
python3 scrip for case conversion of source code files writen in fixed form fortran

convert_FORTRAN_case python3 scrip for case conversion of source code files writen in fixed form fortran python3 scrip for case conversion of source c

7 Sep 20, 2022
Hacktoberfest 2021 contribution repository✨

🎃 HacktoberFest-2021 🎃 Repository for Hacktoberfest Note: Although, We are actively focusing on Machine Learning, Data Science and Tricky Python pro

Manjunatha Sai Uppu 42 Dec 11, 2022
CircuitPython Driver for Adafruit 24LC32 I2C EEPROM Breakout 32Kbit / 4 KB

Introduction CircuitPython driver for Adafruit 24LC32 I2C EEPROM Breakout Dependencies This driver depends on: Adafruit CircuitPython Bus Device Regis

Adafruit Industries 4 Oct 03, 2022
Auto Join Zoom Meeting

Auto-Join-Zoom-Meeting Join a zoom meeting with out filling in meeting id's or passcodes, one button for it all! Setup See attached excel document. MA

JareBear 1 Jan 25, 2022
Modeval (or Modular Eval) is a modular and secure string evaluation library that can be used to create custom parsers or interpreters.

modeval Modeval (or Modular Eval) is a modular and secure string evaluation library that can be used to create custom parsers or interpreters. Basic U

2 Jan 01, 2022
3x - This Is 3x Friendlist Cloner Tools

3X FRIENDLIST CLONER TOOLS COMMAND $ apt update $ apt upgrade $ apt install pyth

MAHADI HASAN AFRIDI 2 Jan 17, 2022
This alerts you when the avalanche score a goal

This alerts you when the avalanche score a goal

Davis Burrill 1 Jan 15, 2022
Collapse a set of redundant kmers to use IUPAC degenerate bases

kmer-collapse Collapse a set of redundant kmers to use IUPAC degenerate bases Overview Given an input set of kmers, find the smallest set of kmers tha

Alex Reynolds 3 Jan 06, 2022
A simple python project which control paint brush in microsoft paint app

Paint Buddy In Python A simple python project which control paint brush in micro

Ordinary Pythoneer 1 Dec 27, 2021
Nextstrain build targeted to Omicron

About This repository analyzes viral genomes using Nextstrain to understand how SARS-CoV-2, the virus that is responsible for the COVID-19 pandemic, e

Bedford Lab 9 May 25, 2022
Create VSCode Extensions with python

About Create vscode extensions with python. Installation Stable version: pip install vscode-ext Why use this? Why should you use this for building VSc

Swas.py 134 Jan 07, 2023
Find habits that genuinely increase your productivity

BiProductive Description This repository contains the application BiProductive, which analyzes the habits of the person, tests his productivity, and d

Rizvan Iskaliev 43 Jun 11, 2022
Example teacher bot for deployment to Chai app.

Create and share your own chatbot Here is the code for uploading the popular "Ms Harris (Teacher)" chatbot to the Chai app. You can tweak the config t

Chai 1 Jan 10, 2022
Open source home automation that puts local control and privacy first

Home Assistant Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiast

Home Assistant 57k Jan 02, 2023
A calculator to test numbers against the collatz conjecture

The Collatz Calculator This is an algorithm custom built by Kyle Dickey, used to test numbers against the simple rules of the Collatz Conjecture.

Kyle Dickey 2 Jun 14, 2022
Open HW & SW for Scanning Electron Microscopes

OpenSEM Project Status: Preliminary The purpose of this project is to create a modern and open-source hardware and software platform for using vintage

Steven Lovegrove 7 Nov 01, 2022
A simple program which gets a file(CSV/Excel) with tasks and creates different variants

TestMakerProject A simple program which gets a file(CSV/Excel) with tasks and creates different variants The main program is QTengine.py You only have

George 3 Nov 18, 2021
Chicks get hostloc points regularly

hostloc_getPoints 小鸡定时获取hostloc积分 github action大规模失效,mjj平均一人10鸡,以下可以部署到自己的小鸡上

59 Dec 28, 2022
Sacred is a tool to help you configure, organize, log and reproduce experiments developed at IDSIA.

Sacred Every experiment is sacred Every experiment is great If an experiment is wasted God gets quite irate Sacred is a tool to help you configure, or

IDSIA 4k Jan 02, 2023