Benachrichtigungs-Bot für das niedersächische Impfportal / Notification bot for the lower saxony vaccination portal https://impfportal-niedersachsen.de
English version here.
Ein kleines Wochenend-Projekt von mir. Der Bot überwacht die REST-API des niedersächsischen Impfportals (https://impfportal-niedersachsen.de) auf freie Impfslots und sendet eine Benachrichtigung mit deinem bevorzugtem Service. Ab da gilt leider: der Schnellste gewinnt. Bitte missbraucht den Bot nicht und verwendet moderate Intervalle.
Was der impfbot nicht macht: Den Termin für dich reservieren und/oder deine Daten automatisch eingeben.
Die Nutzung des Bots garantiert nicht, einen Impftermin zu bekommen. Bitte nutze zusätzlich auch die Warteliste deines zuständigen Impfzentrums und deines Hausarztes!
Am Beispiel von Windows:
config.example.ini
nach config.ini
umbennen und deine Daten eintragen (PLZ, Geburtstag, Email-Server-Datenwindows_validate.bat
, um die Einstellungen zu prüfenwindows_start.bat
Wer den Impfbot auf seinem Android-Smartphone laufen lassen möchte, liest hier weiter.
Für Fortgeschrittene steht alternativ auch ein Docker-Container zur Verfügung. Siehe dazu docker. Das Validieren der Config funktioniert über den Befehl docker exec impfbot python src/validate_config.py -a
.
config.ini
kopieren.Folgende Schritte muss für jeden ausgeführt werden, der Nachrichten empfangen will
config.ini
kopieren (mehrere Nummern mit ,
getrennt).windows_validate.bat
Deine Daten werden nur lokal gespeichert!
birthdate
- Dein Geburtstag - Da die Verteilung vom Alter abhängig ist, ist dieser zwingend notwendig. Beispiel: 23.06.1912
group_size
- Gruppengröße - Wenn du lieber einen Gruppentermin suchen möchtest musst du birthdate auskommentieren und eine Gruppengröße angeben (zwischen 2 und 15). Es darf nur eins von beiden in der Config sein! Beispiel: 5
zip_code
- Fünfstellige PLZ für das Impfzentrum, das der Bot überwachen soll. Beispiel: 49123
with_vector
- Für die unter 60-Jährigen: Soll auch nach Vector-Impfstoffen gesucht werden? Beispiel: true
enable
- Legt fest, ob E-Mails versendet werden sollen. true
wenn ja, sonst false
.sender
- Die E-Mail-Adresse, von der die Benachrichtigungen versendet werden sollen. Beispiel: [email protected]
user
- Login Name für den SMTP-Server (in den meisten Fällen identisch mit der Absender Adresse)password
- Das Passwort für die Absender-E-Mail-Adresse.server
- Der SMTP-Server. Beispiel: smtp.server.tld
port
- Der Port für den SMTP-Server. Beispiel: 465
receivers
- E-Mail Empfänger Liste - Trag hier auch deine Absender-Adresse ein, wenn du selber Mails empfangen möchtest (Mit Kommata getrennt). Beispiel: [email protected],[email protected],[email protected]
oder (nur an sich selbst) [email protected]
enable
- Legt fest, ob Telegram-Nachrichten versendet werden sollen. true
wenn ja, sonst false
.token
- Bot-Token - Dieser zunächst beim BotFather generiert werden: https://t.me/BotFather
chat_ids
- User-IDs der Empfänger - Die bekommst du am einfachsten wenn du den User-Info-Bot anschreibst https://t.me/userinfobot. Da bekommst du eine Id, die hier eingetragen werden muss. Mehrere Id's durch Kommata trennen.enable
- Legt fest, ob der Browser automatisch geöffnet werden soll. (Nur auf Desktop-Systemen) true
wenn ja, sonst false
.enable
- 'true' wenn Apprise verwendet werden soll, sonst 'false'service_uris
- Service URIs. Für mehr Informationen: Apprise Documentation (Mehrere URIs durch Kommata trennen)cooldown_between_requests
- Wartezeit zwischen den Abfragen; Eine zu kleine Wartezeit führt zu einem IP-Ban (Default: 1 min, kann aber empirisch verkleinert werden)cooldown_between_failed_requests
- Wartezeit zwischen fehlgeschlagenen Versuchen. Bei jedem weiteren wird die Wartezeit nochmal hinzuaddiert, um einen IP Ban zu verhindern. D.h. fünf Fehlschläge = Wartezeit von 5*15s bis zum nächsen Aufrufcooldown_after_ip_ban
- Wenn eine Abfrage 10x fehlschlaegt, ist die IP vermutlich gebannt. Standardmaeßig wird dann 3 h gewartet.cooldown_after_success
- Cooldown, nachdem ein Impftermin gefunden wurde. Standardmaeßig wird dann 15 min gewartet (in Sekunden)jitter
- Zufällige Zeitspanne von 0-jtter Sekunden, die auf die Wartezeiten addiert wird (Default: 5
)sleep_at_night
- Legt fest, ob der Bot nachts schlafen soll (Default: true
, da eh keine Termine veröffentlicht werden)user_agent
- Der User Agent, der im Header übermittelt wird (Default: impfbot
)Beispiel Config:
[COMMON]
zip_code=42042
birthdate=23.06.1912
with_vector=true
[EMAIL]
enable=true
[email protected]
user=username
password=xxxxxx
server=smtp.server.de
port=465
[email protected],[email protected],[email protected]
[TELEGRAM]
enable=true
token=TOKEN
chat_ids=123456789,987654321
[WEBBROWSER]
enable=true
[APPRISE]
enable=false
service_uris=discord://webhook_id/webhook_token,matrix://hostname
[ADVANCED]
cooldown_between_requests=60
cooldown_between_failed_requests=10
cooldown_after_ip_ban=10800
cooldown_after_success=900
jitter=5
sleep_at_night=true
user_agent=impfbot
Schreib hier oder twitter mich an.
Dir hat der impfbot geholfen und du möchtest monetär etwas beitragen? Dann spende doch unter dieser Spendenaktion an Ärzte ohne Grenzen. (Ja, etwas abgekupfert von vaccipy. Aber ich fand die Idee gut.)