CoWIN Vaccine availability notifier for India

Overview

covaccine-notifier

CoWIN Portal Vaccine availability notifier

covaccine-notifier periodically checks and sends email notifications for available slots for the next 7 days on CoWIN portal in a given area and age.

Sample screenshot

email notification

Installation

Install the pre-compiled binary

curl -sfL https://raw.githubusercontent.com/PrasadG193/covaccine-notifier/main/install.sh | sh

Docker

docker pull ghcr.io/prasadg193/covaccine-notifier:v0.2.0

Usage

covaccine-notifier can monitor vaccine availability either by pin-code or state and district names

$ ./covaccine-notifier --help
CoWIN Vaccine availability notifier India

Usage:
  covaccine-notifier [FLAGS] [flags]

Flags:
  -a, --age int           Search appointment for age
  -d, --district string   Search by district name
  -e, --email string      Email address to send notifications
  -f, --fee string        Fee preferences - free (or) paid. Default: No preference
  -h, --help              help for covaccine-notifier
  -i, --interval int      Interval to repeat the search. Default: (60) second
  -p, --password string   Email ID password for auth
  -c, --pincode string    Search by pin code
  -s, --state string      Search by state name
  -v, --vaccine string    Vaccine preferences - covishield (or) covaxin. Default: No preference

Note: Gmail password won't work for 2FA enabled accounts. Follow this guide to generate app token password and use it with --password arg

Examples

Terminal

Search by State and District

covaccine-notifier --state Maharashtra --district Akola --age 27  --email <email-id> --password <email-password>

Search by Pin Code

covaccine-notifier --pincode 444002 --age 27  --email <email-id> --password <email-password>

Docker

docker run --rm -ti ghcr.io/prasadg193/covaccine-notifier:v0.2.0  --state Maharashtra --district Akola --age 27  --email <email-id> --password <email-password>

Running on Kubernetes Cluster

If you are not willing to keep your terminal on all the time 😄 , you can also create a Pod on K8s cluster

kubectl run covaccine-notifier --image=ghcr.io/prasadg193/covaccine-notifier:v0.2.0 --command -- /covaccine-notifier --state Maharashtra --district Akola --age 27  --email <email-id> --password <email-password>

Contributing

We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:

  • Reporting a bug
  • Discussing the current state of the code
  • Submitting a fix
  • Proposing new features
Comments
  • Getting error while sending the email

    Getting error while sending the email

    Got following error :

    2021/05/10 04:51:34 Found available slots, sending email
    Error: 535 5.7.8 Username and Password not accepted. Learn more at
    5.7.8  https://support.google.com/mail/?p=BadCredentials d63sm18304741pjk.10 - gsmtp
    Usage:
      covaccine-notifier [FLAGS] [flags]
    
    opened by shre2398 4
  • Add interval, and appointment date args and increase verbosity

    Add interval, and appointment date args and increase verbosity

    Changes introduced in this PR -

    1. Add option for search interval and appointment date.
    2. Increase verbosity by adding more log statements.
    3. Remove search for state and district ID after every interval tick.
    4. Update readme.
    opened by valaparthvi 3
  • Error: json: cannot unmarshal number 32.5 into Go struct field .centers.sessions.available_capacity of type int

    Error: json: cannot unmarshal number 32.5 into Go struct field .centers.sessions.available_capacity of type int

    ❯ ./covaccine-notifier -c 452001 -a 60 -e [email protected] -p xyz Error: json: cannot unmarshal number 32.5 into Go struct field .centers.sessions.available_capacity of type int Usage: covaccine-notifier [FLAGS] [flags]

    Flags: -a, --age int Search appointment for age -d, --district string Search by district name -e, --email string Email address to send notifications -h, --help help for covaccine-notifier -p, --password string Email ID password for auth -c, --pincode string Search by pin code -s, --state string Search by state name

    opened by anjuls 2
  • Unauthenticated access! - API rate limitation?

    Unauthenticated access! - API rate limitation?

    2021/05/25 11:38:19 Response: Unauthenticated access!

    2021/05/25 11:38:19 Received unexpected response, rechecking after 30 seconds

    2021/05/25 11:38:48 Querying endpoint: https://cdn-api.co-vin.in/api/v2/appointment/sessions/calendarByPin?pincode=171007&date=25-05-2021

    This new error started today... has been consistent using Jio , Airtel , DigitalOcean & AWS IPs

    could it be related to this? ---> https://github.com/bombardier-gif/covid-vaccine-booking/issues/329

    opened by 40ZqTYY4ag3tAO4hdlxR1 1
  • updated the cowin api from protected to public

    updated the cowin api from protected to public

    to fix the response "Unauthenticated access!" in the cowin api using https://apisetu.gov.in/public/marketplace/api/cowin#/Appointment%20Availability%20APIs/calendarByDistrict Public API

    opened by surendhar153 1
  • Add telegram notification support

    Add telegram notification support

    • new flag to choose notifier between email and telegram ex :- --notifier-type telegram
    • add other flags to add telegram details --telegram-token --telegram-username
    • add telegram bot initialization and send notification functionality
    • update notification workflow
    • create document for telegram bot integration with covaccine-notifier
    • send telegram notification as file if message length exceeds 4096 characters
    • this PR addresses the issue #24
    opened by sohm22 1
  • Add command-line option to filter on available vaccination capacity

    Add command-line option to filter on available vaccination capacity

    This PR add command line option "minCapacity" and related logic to filter appointments which have minimum available vaccination capacity. The default value is 1.

    Real-world use case is that i am looking for 2 vaccination slots but getting lot of alerts with 1 slots.

    opened by shakti-garg 0
  • Add support for fee preference

    Add support for fee preference

    This PR address the feature request https://github.com/PrasadG193/covaccine-notifier/issues/20.

    A common function isPreferredAvailable() is used to check fee and vaccine preferences.

    opened by shreyas-sriram 0
  • Add interval option and improve logging

    Add interval option and improve logging

    This PR adds the new option interval to change search query interval and improves logging

    Refactored on top of - https://github.com/PrasadG193/covaccine-notifier/pull/7

    opened by PrasadG193 0
  • fix false alarm generation for age 45+

    fix false alarm generation for age 45+

    • decide userMinAgeLimit on the basis of input --age value
    • send notification only if userMinAgeLimit matches with vaccine availability for that minAgeLimit
    • This PR address the issue #43
    opened by sohm22 0
  • Option - Narrow down search criteria by center_id

    Option - Narrow down search criteria by center_id

    Ability to narrow down the search criteria by one or two center IDs would be useful.

    Example

    covaccine-notifier --state Maharashtra --district Akola --age 27 --email <email-id> --password <email-password>

    A district wide search for district_id=364 results in 42 centers.... This query results in a flood of email alerts every time a slot opens up.

    I just care about center_id:614986 , its just down the road. The alerts for those 41 other centers in my district just result in notification-fatigue :)

    opened by 40ZqTYY4ag3tAO4hdlxR1 0
  • Connection reset by peer

    Connection reset by peer

    Logs

    2021/05/11 20:42:20 Received unexpected response, rechecking after 60 seconds
    2021/05/11 20:43:20 Querying endpoint: https://cdn-api.co-vin.in/api/v2/appointment/sessions/calendarByDistrict?district_id=294&date=11-05-2021
    Error: Failed to fetch appointment sessions: Get "https://cdn-api.co-vin.in/api/v2/appointment/sessions/calendarByDistrict?district_id=294&date=11-05-2021": read tcp 172.31.32.42:47126->54.182.0.86:443: read: connection reset by peer
    Usage:
      covaccine-notifier [FLAGS] [flags]
    
    Flags:
      -a, --age int           Search appointment for age
      -d, --district string   Search by district name
    ...
    ...
    
    opened by shreyas-sriram 0
Releases(v0.3.0)
Owner
Prasad Ghangal
Open source enthusiast | prev. gsoc | Creater and maintainer botkube.io, kyaml2go
Prasad Ghangal
Lms-notifier - A simple tool to keep track of lms modules

lms-notifier A simple tool to keep track of lms modules Getting Started These in

Arash Sameni 2 Sep 16, 2022
Qfy - Self-hosted implementation of Synthetics - Monitoring checks to validate your service availability

qfy Self-hosted implementation of Synthetics - Monitoring checks to validate you

Milan Pavlik 1 Feb 23, 2022
cross platform command line tool to list, notify and book vaccine using cowin API

Command line tool to List and Book Vaccine cowin-cli is a simple cli tool to book vaccines and list centers using the COWIN API. It also supports auto

Anoop S 35 Mar 7, 2022
A cowin bot that gives you an update whenever it finds a vacancy in your region

go-cowin-bot A cowin bot that will give you an update on discord whenever it finds a vacancy for the parameters provided Setup: download go-cowin-bot

Varun Sapre 4 Mar 29, 2022
Markdown version of Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine

The big BNT162b2 archive All vaccine data here is sourced from this World Health Organization document. This describes the RNA contents of the BNT162b

null 161 Oct 11, 2022
CLI for admins to manage the Vaccine Hunters Finder tool.

A CLI for administrators to manage vaccine availabilities and other data for the Vaccine Hunters Finder tool. Installation Click h

Vaccine Hunters Canada 3 Feb 14, 2022
Telegram bot to get information on vaccine availabilities.

?? berlin-vaccine-alert Telegram bot to get information on vaccine availabilities. Get the latest appointments directly on telegram. The bot listen to

Erwan Leboucher 17 Jun 23, 2022
gosx-notifier is a Go framework for sending desktop notifications to OSX 10.8 or higher

gosx-notifier A Go lib for sending desktop notifications to OSX Mountain Lion's (10.8 or higher REQUIRED) Notification Center. Update 4/3/2014 On OSX

Ralph Caraveo III 576 Nov 16, 2022
Simple Notifier/Listener utility package to pass around messages in-memory

Simple Observer (go) A small simple library to use for sending around messages in-memory. It uses a notifier/listener style messaging. Installation go

Daniël Pot 1 Dec 7, 2021
Notifie Server is a learning list notifier

Notifie Server Notifie Server is a learning list notifier. E.g; If you want to l

Mehmet KAYKISIZ 0 Dec 24, 2021
Simple Apple Software Release Notifier, sends an email containing release information

Apple Release Notifier Simple Apple Software Release Notifier, sends an email containing release information. Usage Fill in the contacts file with the

Ahmet Batur Tülek 2 Feb 22, 2022
Lms-notifier - A simple tool to keep track of lms modules

lms-notifier A simple tool to keep track of lms modules Getting Started These in

Arash Sameni 2 Sep 16, 2022
Notifier is a Go library to send notification to other applications.

Notifier is a Go library to send notification to other applications.

ᴍᴏᴏɴD4ʀᴋ 7 Oct 26, 2022
HARAQA - High Availability Routing And Queueing Application

haraqa is designed to be a developer friendly, scalable message queue for data persistence and real-time data streaming between microservices. Haraqa provides high-throughput, low-latency, fault-tolerant pipelines for architectures of any size.

null 49 Nov 1, 2022
LinDB is an open-source Time Series Database which provides high performance, high availability and horizontal scalability.

LinDB is an open-source Time Series Database which provides high performance, high availability and horizontal scalability. LinDB stores all monitoring data of ELEME Inc, there is 88TB incremental writes per day and 2.7PB total raw data.

LinDB 2.3k Nov 29, 2022
the pluto is a gateway new time, high performance, high stable, high availability, easy to use

pluto the pluto is a gateway new time, high performance, high stable, high availability, easy to use Acknowledgments thanks nbio for providing low lev

mobus 2 Sep 19, 2021
IPFS Cluster - Automated data availability and redundancy on IPFS

IPFS Cluster - Automated data availability and redundancy on IPFS

IPFS 1.3k Nov 20, 2022
Command to set GCP SLO (Availability)

概要 以下の指標の GCP の SLO を作成するツールです 可用性 99% 可用性 = (2xx レスポンス) / (2xx レスポンス + 5xx レスポンス) 前提条件 Cloud Load Balancing を利用している前提になります 対象となる Cloud Load Balancing

null 2 Oct 8, 2021
app-services-go-linter plugin analyze source tree of Go files and validates the availability of i18n strings in *.toml files

app-services-go-linter app-services-go-linter plugin analyze source tree of Go files and validates the availability of i18n strings in *.toml files. A

Red Hat Developer 2 Nov 29, 2021
PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology management, high availability, configuration management, and plugin extensions.

What is PolarDB Cluster Manager PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology manage

null 7 Nov 9, 2022