All Projects → golonzovsky → vacme-zurich-parser

golonzovsky / vacme-zurich-parser

Licence: other
Helps to find available slots on zh.vacme.ch corona vaccination service

Programming Languages

Jupyter Notebook
11667 projects
go
31211 projects - #10 most used programming language
python
139335 projects - #7 most used programming language
javascript
184084 projects - #8 most used programming language
HCL
1544 projects
HTML
75241 projects

Projects that are alternatives of or similar to vacme-zurich-parser

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 (+1150%)
Mutual labels:  vaccination, covid-19
auto-vaccine-appointment
Automatically searches for and completes booking of Covid-19 vaccination appointment. New York State only.
Stars: ✭ 12 (+0%)
Mutual labels:  vaccination, covid-19
vaccipy
Automatische Impfterminbuchung für www.impfterminservice.de
Stars: ✭ 548 (+4466.67%)
Mutual labels:  vaccination, covid-19
quanto-manca
Quando torneremo alla normalità?
Stars: ✭ 16 (+33.33%)
Mutual labels:  vaccination, covid-19
covaccine-notifier
CoWIN Vaccine availability notifier for India
Stars: ✭ 63 (+425%)
Mutual labels:  vaccination, covid-19
cowin-slot-tracker
Tracker to check the covid shot slot availability in India and send mobile alerts via Telegram Bot.
Stars: ✭ 30 (+150%)
Mutual labels:  vaccination, covid-19
citf-public
Official data on Malaysia's National Covid-​19 Immunisation Programme (PICK). Powered by MySejahtera.
Stars: ✭ 495 (+4025%)
Mutual labels:  vaccination, covid-19
impfbot
Benachrichtigungs-Bot für das niedersächische Impfportal / Notification bot for the lower saxony vaccination portal https://impfportal-niedersachsen.de
Stars: ✭ 37 (+208.33%)
Mutual labels:  vaccination, covid-19
covidpass
Scan your vaccination, test and recovery certificates in QR code representation and save them to your Apple Wallet
Stars: ✭ 137 (+1041.67%)
Mutual labels:  vaccination, covid-19
impf-botpy
Impf Bot.py 🐍⚡ – Automatisierung für den Corona ImpfterminService Bot
Stars: ✭ 254 (+2016.67%)
Mutual labels:  vaccination, covid-19
CovidVaccineNotifier
Get notified with available vaccination centres via SMS
Stars: ✭ 21 (+75%)
Mutual labels:  vaccination, covid-19
CoWin-Vaccine-Notifier
Automated Python Script to retrieve vaccine slots availability and get notified when a slot is available.
Stars: ✭ 102 (+750%)
Mutual labels:  vaccination, covid-19
web-covid-api
🦠COVID-19 Coronavirus 🔥Tracker Dashboard and 🚀Super fast API's (< 200ms) 🆕Updates every 3 mins
Stars: ✭ 18 (+50%)
Mutual labels:  covid-19
elm-webapp
A setup for writing http based, client-server app in elm, inspired wholly by lamdera.com
Stars: ✭ 52 (+333.33%)
Mutual labels:  fullstack
jpeg-defense
SHIELD: Fast, Practical Defense and Vaccination for Deep Learning using JPEG Compression
Stars: ✭ 82 (+583.33%)
Mutual labels:  vaccination
covidestim
Bayesian nowcasting with adjustment for delayed and incomplete reporting to estimate COVID-19 infections in the United States
Stars: ✭ 20 (+66.67%)
Mutual labels:  covid-19
GeoParser
Extract and Visualize location from any file
Stars: ✭ 48 (+300%)
Mutual labels:  covid-19
Trybe-School
All activities while studying at Trybe fullstack software development school. Contains: projects, exercises, course summaries. Brazil, 2020-2021.
Stars: ✭ 73 (+508.33%)
Mutual labels:  fullstack
CoronaApp
Real Time Corona App
Stars: ✭ 22 (+83.33%)
Mutual labels:  covid-19
dekontaminasi
DIY static API server for COVID-19 data in Indonesia
Stars: ✭ 66 (+450%)
Mutual labels:  covid-19

vacme-zurich-parser

https://zh.vacme.ch provides a way to register for vaccination in Zurich. Since there is not much free slots - its quite tedious to find available one. Recently dropdown was updated to filter not available ones, but unfortunately active options often dont have slots either.

This service (https://vacme.kloud.top) tries to simplify search by exposing rest api and UI with up to date available slots for vaccination in Zurich.
Be aware is uses personal refresh token for existing registration and reverse engineered api, so its all quite fragile - any next update of vacme.ch can break it.

Main part if you want to reuse code is in parser folder. Its python app which periodically calls zh.vacme.ch, and exposes basic api for UI and caching layers.
Its was just jupiter experiment (see original vaccination_search.ipynb) wrapped into api and extended with token refresh.

Currently, deployed to https://vacme.kloud.top with refresh interval ~3 min and with my account for group N.

zh.vacme.ch is for Zurich only, please check other cantons on https://foph-coronavirus.ch/vaccination/when-can-i-be-vaccinated/#cantons

Stay safe! ;)

UPD: I've found similar service https://rimpfli.web.app - check it out as well. It has Bern in addition to Zurich and notifications!

ui screenshot

possible todo

  • notifications in UI (?)
  • contact locations to get an info of which vaccine is in use there (?)
  • store/show statistics about slots per day etc
  • automatic SMS login

API

Here is main caching flat api providing appointment data and geo https://vacme.kloud.top/api/v2/locations for UI display.
Example response:

{
  "vaccination_group": "N",
  "last_refresh": 1621085095601,
  "refresh_interval_sec": 250,
  "locations": [
    {
      "name": "Zürich, TopPharm Morgental Apotheke",
      "id": "00d65270-264f-469f-bdac-765d01d2b14c",
      "noFreieTermine": true,
      "latitude": 47.3437185858769,
      "longitude": 8.529828454511142,
      "link": "https://goo.gl/maps/8VFBvGnSGrZJLHW98"
    },
    {
      "name": "_Impfzentrum Wetzikon",
      "id": "fcfae361-7a74-481d-bc6b-e257e1ddb1de",
      "noFreieTermine": false,
      "firstDate": 1623067200000,
      "secondDate": 1625486400000,
      "latitude": 47.31518772182702,
      "longitude": 8.79995562696232,
      "link": "https://goo.gl/maps/J9sD4ByixUrAQaes9"
    },
    .....
  ]
}

noFreieTermine and id fields are propagated from vacme.ch directly.

See parser only api in parser folder.

local deployment

if you want to run it locally, find your REGISTRATION_ID and REFRESH_TOKEN from browser network tab and run:

docker run --rm -it -e REGISTRATION_ID=? -e REFRESH_TOKEN=? golonzovsky/vacme-parser

or run python code directly.

cloud deployment

In case you want to run it in the cloud - sometimes api starts to redirect into captcha. AFAIK once captcha is solved - IP is added, and you can call vacme again.

If you run in k8s - you need to hide your nodes behind NAT. Then you can to solve captcha from behind NAT ip using socks proxy. Example to create local SOCKS proxy from private GKE node:

gcloud beta compute ssh --zone "europe-west6-a" "gke-main-preemptible-e2-medium-3b140cfc-wv1s" --tunnel-through-iap -- -N -p 22 -D localhost:5000

UPD: added all infra code, see https://github.com/golonzovsky/vacme-zurich-parser/tree/main/infrastructure folder. Its terraform definitions of GKE cluster and things around running in GCP.

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