All Projects → alfonsrv → impf-botpy

alfonsrv / impf-botpy

Licence: other
Impf Bot.py 🐍⚡ – Automatisierung für den Corona ImpfterminService Bot

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to impf-botpy

vaccipy
Automatische Impfterminbuchung für www.impfterminservice.de
Stars: ✭ 548 (+115.75%)
Mutual labels:  selenium, vaccination, covid-19, impftermin, impfterminservice
impf-bot
💉🤖 Bot for the German "ImpfterminService - 116117"
Stars: ✭ 167 (-34.25%)
Mutual labels:  selenium, vaccination, impftermin
impfbot
Benachrichtigungs-Bot für das niedersächische Impfportal / Notification bot for the lower saxony vaccination portal https://impfportal-niedersachsen.de
Stars: ✭ 37 (-85.43%)
Mutual labels:  vaccination, covid-19, impftermin
auto-vaccine-appointment
Automatically searches for and completes booking of Covid-19 vaccination appointment. New York State only.
Stars: ✭ 12 (-95.28%)
Mutual labels:  vaccination, covid-19
fBrowser
Helpful Selenium functions to make web-scraping easier and faster
Stars: ✭ 16 (-93.7%)
Mutual labels:  selenium, selenium-python
scrape-youtube-channel-videos-url
This Python script is used to scrape all the video links from a youtube channel.
Stars: ✭ 34 (-86.61%)
Mutual labels:  selenium, selenium-python
CovidVaccineNotifier
Get notified with available vaccination centres via SMS
Stars: ✭ 21 (-91.73%)
Mutual labels:  vaccination, covid-19
ig-automatic-story-viewer
Python Program To Send Instagram Story Views
Stars: ✭ 17 (-93.31%)
Mutual labels:  selenium, selenium-python
vacme-zurich-parser
Helps to find available slots on zh.vacme.ch corona vaccination service
Stars: ✭ 12 (-95.28%)
Mutual labels:  vaccination, covid-19
tithiwa
Automate Web WhatsApp with selenium in python.
Stars: ✭ 17 (-93.31%)
Mutual labels:  selenium, selenium-python
cowin-vaccine-booking
The app enables tracking coivid vaccine availability and automatically book a vaccination slot. This is based on Cowin API and supports the recently added Captcha code of Cowin.
Stars: ✭ 150 (-40.94%)
Mutual labels:  vaccination, covid-19
citf-public
Official data on Malaysia's National Covid-​19 Immunisation Programme (PICK). Powered by MySejahtera.
Stars: ✭ 495 (+94.88%)
Mutual labels:  vaccination, covid-19
google-meet-bot
Bot for scheduling and entering google meet sessions automatically
Stars: ✭ 33 (-87.01%)
Mutual labels:  selenium, selenium-python
CoWin-Vaccine-Notifier
Automated Python Script to retrieve vaccine slots availability and get notified when a slot is available.
Stars: ✭ 102 (-59.84%)
Mutual labels:  vaccination, covid-19
covaccine-notifier
CoWIN Vaccine availability notifier for India
Stars: ✭ 63 (-75.2%)
Mutual labels:  vaccination, covid-19
python-appium-framework
Complete Python Appium framework in 360 degree
Stars: ✭ 43 (-83.07%)
Mutual labels:  selenium, selenium-python
Seleniumbase
A Python framework that inspires developers to become better test automation engineers. 🧠💡
Stars: ✭ 2,520 (+892.13%)
Mutual labels:  selenium, selenium-python
Selenium Python Helium
Selenium-python but lighter: Helium is the best Python library for web automation.
Stars: ✭ 2,732 (+975.59%)
Mutual labels:  selenium, selenium-python
quanto-manca
Quando torneremo alla normalità?
Stars: ✭ 16 (-93.7%)
Mutual labels:  vaccination, covid-19
Instagram-Giveaways-Winner
Instagram Bot which when given a post url will spam mentions to increase the chances of winning. Win Instagram Giveaways!
Stars: ✭ 95 (-62.6%)
Mutual labels:  selenium, selenium-python

Impf Bot.py 🐍 – Bot für Impftermine

Python Selenium Version

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 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.

Features

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

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 - you can either follow the standard workflow described below or create one instantly (see Run it)
    • 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 can choose an appointment using your favorite chat app appt:1 or book the appointment manually
    • To book an appointment manually when you're not on your PC, 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 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.

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 and open it with your favorite text editor (recommended: Sublime Text)
  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.

Alerting

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.

Run it

  • python3 main.py und entspahnen
  • python3 main.py --alerts to test configured alerts
  • python3 main.py --code to instantly create a Vermittlungscode (works best from 23:00 to 07:00)

Docker

Please refer to the Docker Setup to run on a headless server.

Support & Contributing 🪢

Feature Requests & Feedback

Stuck? Too complex? File an issue!

Successfully booked an appointment?
Feedback and feature requests are always much appreciated and can be submitted here!

Web Designers

If you're a web designer and want to create a GitHub Pages for this project, you're more than welcome!

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_backend() 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. Optional: Setup Guide in ALERTS.md
  6. Pull Request & Done 💥

Unit Tests

Good 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.

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. 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?

Buy me a Coffee

Ärzte ohne Grenzen

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].