Impf Bot.py đ⥠â Bot fĂŒr Impftermine
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 which did a lot of the heavy lifting.
â 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
â Manual user intervention & smart error resilience
â Zulip integration
â 50% Telegram 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.
- 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 đš
- 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
, butTeamViewer
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
- Python 3.x
- Selenium for Chrome
- Google Chrome
pip3 install -r requirements.txt
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
- Rename
settings.sample.py
tosettings.py
- Edit the
LOCATIONS
by adding your Impfzentrum with the name as shown on ImpfterminService - If you already have a Vermittlungscode for one of the centers, enter it at
code
- otherwise leave empty - Enter your age, mail and phone number
- 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.
Alerting
Audio alerting is already preconfigured. If you also want to use smartphone notifications, follow this setup guide.
Run it
python3 main.py
und entspahnenpython3 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
alert.py
and integrate it withread_code()
andsend_alert()
constructor.py
if your API is a bit more complex to keep things tidysettings.py
add your relevant settings (must includeENABLED
flag)main.py
inprint_config
for NextGen UX- Pull Request & Done đ„
Stay Up-to-Date
â 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. The version indicator at the top of the page and comparing it with
python main.py --version
is usually quite a good way to check if you're up-to-date.
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?