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

Osu statistics right on your desktop, made with pyqt

Osu!Stat Osu statistics right on your desktop, made with Qt5 Credits Would like to thank these creators for their projects and contributions. ppy, osu

Aditya Gupta 21 Jul 13, 2022
Python Excuse Generator

Excuse Generator Python Excuse Generator This project is an excuse generator that provides the user with an excuse as to why they weren't paying atten

Collin Sanders 5 Jul 07, 2022
Dungeon Dice Rolls is an aplication that the user can roll dices (d4, d6, d8, d10, d12, d20 and d100) and store the results in one of the 6 arrays.

Dungeon Dice Rolls is an aplication that the user can roll dices (d4, d6, d8, d10, d12, d20 and d100) and store the results in one of the 6 arrays.

Bracero 1 Dec 31, 2021
Homed - Light-weight, easily configurable, dockerized homepage

homed GitHub Repo Docker Hub homed is a light-weight customizable portal primari

Matt Walters 12 Dec 15, 2022
A collection of some leetcode challenges in python and JavaScript

Python and Javascript Coding Challenges Some leetcode questions I'm currently working on to open up my mind to better ways of problem solving. Impleme

Ted Ngeene 1 Dec 20, 2021
Run-Your-Own Firefox Sync Server

Run-Your-Own Firefox Sync Server This is an all-in-one package for running a self-hosted Firefox Sync server. It bundles the "tokenserver" project for

Mozilla Services 1.7k Dec 30, 2022
Structured, dependable legos for Starknet development.

cairomate • Structured, dependable legos for starknet development. Directory Structure contracts ├─ defi │ ├─ ChainlinkPriceOracle — "Simple price or

andreas 127 Nov 23, 2022
🌍💉 Global COVID-19 vaccination data at the regional level.

COVID-19 vaccination data at subnational level. To ensure its officiality, the source data is carefully verified.

sociepy 61 Sep 21, 2022
Yakuake session management

yman is a python script used for saving/restoring yakuake sessions (currently running commands, working directories, environment variables, tab titles)

Szymon Borecki 6 Jun 25, 2022
The worst and slowest programming language you have ever seen

VenumLang this is a complete joke EXAMPLE: fizzbuzz in venumlang x = 0

Venum 7 Mar 12, 2022
Probably the best way to simulate block scopes in Python

This is a package, as it says on the tin, to emulate block scoping in Python, the lack of which being a clever design choice yet sometimes a trouble.

88 Oct 26, 2022
Robotic hamster to give you financial advice

hampp Robotic hamster to give you financial advice. I am not liable for any advice that the hamster gives. Follow at your own peril. Description Hampp

1 Nov 17, 2021
Submission from Team OMR for the TRI-NIT Hackathon

Submission from Team OMR for the TRI-NIT Hackathon

0 Feb 01, 2022
This repo created to complete the task HACKTOBER 2021, contribute now and get your special T-Shirt & Sticker. TO SUPPORT OWNER PLEASE PRESS STAR BUTTON

❤ THIS REPO WILL CLOSED IN 31 OCT 00:00 ❤ This repository will automatically assign the hacktoberfest and hacktoberfest-accepted labels to all submitt

Rajendra Rakha 307 Dec 27, 2022
Python code to control laboratory hardware and perform Bayesian reaction optimization on the MIT Make-It system for chemical synthesis

Description This repository contains code accompanying the following paper on the Make-It robotic flow chemistry platform developed by the Jensen Rese

Anirudh Nambiar 11 Dec 10, 2022
Online-update est un programme python permettant de mettre a jour des dossier et de fichier depuis une adresse web.

Démarrage rapide Online-update est un programme python permettant de mettre a jour des dossier et de fichier depuis une adresse web. Mode préconfiguré

pf4 2 Nov 26, 2021
dbt adapter for Firebolt

dbt-firebolt dbt adapter for Firebolt dbt-firebolt supports dbt 0.21 and newer Installation First, download the JDBC driver and place it wherever you'

23 Dec 14, 2022
Create N Share is a No Code solution which gives users the ability to create any type of feature rich survey forms with ease.

create n share Note : The Project Scaffold will be pushed soon. Create N Share is a No Code solution which gives users the ability to create any type

Chiraag Kakar 11 Dec 03, 2022
🏃 Python3 Solutions of All Problems in GKS 2022 (In Progress)

GoogleKickStart 2022 Python3 solutions of Google Kick Start 2022. Solution begins with * means it will get TLE in the largest data set. Total computat

kamyu 38 Dec 29, 2022
A Trace Explorer for Reverse Engineers

Tenet - A Trace Explorer for Reverse Engineers Overview Tenet is an IDA Pro plugin for exploring execution traces. The goal of this plugin is to provi

1k Jan 02, 2023