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 oder Pushover (Slack, Webhooks, ... 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 which did a lot of the heavy lifting.
⭐ Easy to set up
⭐ Book appointments remotely
⭐ Python for the 21st Century
⭐ Full browser automation
⭐ Concurrent checking
⭐ Waiting room detection
⭐ Instant Vermittlungscode Creation
⭐ Timeout / Shadow Ban 429
detection
⭐ Automatically re-check Vermittlungscode
⭐ settings.py
for single point of configuration
⭐ Manual user intervention & smart error resilience
⭐ Zulip, Pushover, Telegram integration
⭐ Run custom Commands for Alerting (Text-to-Speech preconfigured)
⭐ Easy to add additional backends, like Slack, Webhooks ...
⭐ Docker Support
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.
sms:123-456
settings.py
and restart the bot 🚨appt:1
or book the appointment manuallyAnyDesk
, but
TeamViewer
also works) to access your machine remotelyEvery 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 ref
⚠ 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.
pip3 install -r requirements.txt
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.
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
settings.sample.py
to settings.py
and open it with your favorite text editor (recommended: Sublime Text)LOCATIONS
by adding your Impfzentrum with the name as shown on ImpfterminServicecode
- otherwise leave emptyAdvanced Features
section.Audio alerting is already preconfigured. If you also want to use smartphone notifications in order to interact with the bot remotely, follow this setup guide.
python3 main.py
und entspahnenpython3 main.py --alerts
to test configured alertspython3 main.py --code
to instantly create a Vermittlungscode (works best from 23:00 to 07:00)Please refer to the Docker Setup to run on a headless server.
Stuck? Too complex? File an issue!
Successfully booked an appointment?
Feedback and feature requests are always much appreciated and can be submitted
here!
If you're a web designer and want to create a GitHub Pages for this project, you're more than welcome!
Contributions are welcome! Adding your favorite backend (e.g. Slack) for alerting is easy. Simply add your preferred integration to
alert.py
and integrate it with read_backend()
and send_alert()
constructor.py
if your API is a bit more complex to keep things tidysettings.py
add your relevant settings (must include ENABLED
flag)main.py
in print_config
for NextGen UXGood with pyTest? Help this project creating some proper test coverage! Unfortunately I'm pretty unexperienced with mocking requests and what good tests should look like. Even just a few are enough, so I can get the hang of it.
⚠ Please note: Even though this bot is geared towards being as solid as possible, you should consider regularly
checking this repository (site) to ensure you have the latest version. Unfortunately this is a bit of an arms
race as the website is under constant modification. Checking the version at the top of the page and comparing it with
python main.py --version
is usually quite a good way to see if you're up-to-date. Alternatively you can get
Notifications
on top of the page to know whenever the code changes.
When updating especially ensure your settings.py
has all the options!
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?