Skip to content
This repository has been archived by the owner on Jun 12, 2021. It is now read-only.
/ Vac-Cowin Public archive

πŸ’‰ One Stop Solution for Booking Vaccination Slots available in the CoWIN Portal directly from your Terminal...

License

Notifications You must be signed in to change notification settings

dhhruv/Vac-Cowin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DISCLAIMER

DUE TO LATEST CHANGES IN THE API ACCESS POLICY BY MoHFW, THERE WILL BE NO MORE COMMITS/CONTRIBUTIONS/RELEASES/MAINTENANCE IN THE PROJECT. THE PROJECT HAS BEEN PUT ON INDEFINITE HOLD. GRATEFUL TO EVERY CONTRIBUTORS, SUPPORTERS, USERS THAT WE COULD HELP YOU IN THE CRISIS. EVEN THOUGH YOU MAY STILL USE THE APP AFTER GOING THROUGH THE T&C, WE ADVISE NOT TO MISUSE IT, OTHERWISE YOU MIGHT FACE LEGAL ISSUES. USE IT AT YOUR OWN RISK.

Table of Contents:

  1. Introduction
  2. About
  3. Getting Started
  4. How to Use
  5. Working Screenshots
  6. Contributing
  7. License
  8. Team Members
  9. Important

Introduction

CoWIN Portal is used to self-register yourself for the Vaccination process in India. Here you can register yourself with your Phone Number and avail a slot from the available slots in various Vaccination Centres around the country.

About

VacCowin is a CLI based Python Script that can be used to perform tasks such as OTP Generation till Vaccination Slot Booking from Co-WIN Platform directly from your Terminal. This script rechecks after every few seconds and when the slots are available, it confirms the slot only after you enter the captcha shown on the screen.

Since India has started the Vaccination Drive for those above 18 years of age, there is a very heavy rush and slots get booked soon. This script will come in handy for booking those slots as soon as they open.

IMPORTANT: This is a Proof of Concept (POC) Project. I OR the Team do NOT endorse or condone, in any shape or form, automating any monitoring/booking tasks. It's only made for Educational Purposes. Use this at your own risk.

The data used is retrieved using the open APIs at API Setu. It works on both Linux and Windows.

Getting Started

  1. Install Python
  2. Clone this repository...
git clone https://github.com/dhhruv/Vac-Cowin.git

OR Download the Zip and Extract the content.

  1. Install, create and activate virtual environment. For instance we create a virtual environment named 'venv'.
pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat
  1. Install dependencies
cd Vac-Cowin
pip install -r requirements.txt

How To Use

  1. Run the Script after performing the Initial Steps of Getting Started: python VacCowin.py
  2. Select the Beneficiaries. Read the Important notes. You can select multiple beneficiaries by providing comma-separated index values such as 1,2:
Running VacCowin...
Enter the Registered Mobile Number: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
Successfully Requested OTP for the Mobile Number β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ at 2021-05-23 09:28:41.669816..
Enter OTP (If you do not recieve OTP in 2 minutes, Press Enter to Retry): β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
Validating OTP. Please Wait...
Token Generated: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ

Fetching the Registered Beneficiaries...
+-------+----------------+---------------+-----------+-------+----------------------+
|   idx |        bref_id | name          | vaccine   |   age | status               |
+=======+================+===============+===========+=======+======================+
|     1 | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   |    β–ˆβ–ˆ | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ       |
+-------+----------------+---------------+-----------+-------+----------------------+

    ################# IMPORTANT THINGS TO BE REMEMBERED #################
    
    # 1. While selecting Beneficiaries, make sure that selected Beneficiaries are all taking the same dose: either their First OR Second.
    #    Please do no try to club together booking for first dose for one Beneficiary and second dose for another Beneficiary. Recommended to do both seperately.
    
    # 2. While selecting Beneficiaries, also make sure that Beneficiaries selected for second dose are all taking the same vaccine: COVISHIELD OR COVAXIN OR SPUTNIK V.
    #    Please do no try to club together booking for Beneficiary taking COVISHIELD with Beneficiary taking COVAXIN and other possibilities.
    
    # 3. If you're selecting multiple Beneficiaries, make sure all are of the same Age Group (45+ or 18+) as defined by the Government.
    #    Please do not try to club together booking for Younger and Older Beneficiaries at the same time.

    #####################################################################
Enter comma separated index numbers of Beneficiaries to book for : 1
  1. Ensure that the Beneficiaries are getting selected:
Selected Beneficiaries are:  
+-------+----------------+---------------+-----------+-------+----------------------+
|   idx |        bref_id | name          | vaccine   |   age | status               |
+=======+================+===============+===========+=======+======================+
|     1 | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   |    β–ˆβ–ˆ | β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ       |
+-------+----------------+---------------+-----------+-------+----------------------+
  1. Selecting the State:
+-------+-----------------------------+  
| idx   | state                       |  
+=======+=============================+  
| 1     | Andaman and Nicobar Islands |  
+-------+-----------------------------+  
| 2     | Andhra Pradesh              |  
+-------+-----------------------------+
+-------+-----------------------------+
+-------+-----------------------------+  
| 35    | Uttar Pradesh               |  
+-------+-----------------------------+  
| 36    | Uttarakhand                 |  
+-------+-----------------------------+  
| 37    | West Bengal                 |  
+-------+-----------------------------+
Enter State Index from the Table: 12
  1. Select the Districts you are interested in. Multiple Districts can be selected by providing comma-separated index values...
+-------+-------------------------+
|   idx | district                |
+=======+=========================+
|     1 | Ahmedabad               |
+-------+-------------------------+
|     2 | Ahmedabad Corporation   |
+-------+-------------------------+
|    .. | ......                  |
+-------+-------------------------+
|    41 | Valsad                  |
+-------+-------------------------+
Enter comma separated index numbers of Districts to monitor : 2
  1. Ensure that the correct Districts are getting selected...
Selected Districts are:
+-------+---------------+-----------------------+--------------+
|   idx |   district_id | district_name         |   alert_freq |
+=======+===============+=======================+==============+
|     1 |           770 | Ahmedabad Corporation |          660 |
+-------+---------------+-----------------------+--------------+
  1. Additional Information regarding Vaccination Availability, Loading Data, Date etc... to be added by the User.
Filter out Centres with Vaccine availability less than ? Minimum 1 :
How often do you want to load Data from the Portal (in Seconds)? Default 15. Minimum 5. :

Search for next seven day starting from when?
Use 1 for Today, 2 for Tomorrow, or provide a date in the format DD-MM-YYYY. Default 2:

Do you have a Preference for Fee Type?
Enter 0 for No Preference, 1 for Free Only, or 2 for Paid Only. Default 0 :
  1. Program will now start to monitor the slots in these Districts every 15 seconds.
===================================================================================  
Centres are available in Ahmedabad Corporation from 24-05-2021 as of 2021-05-23 09:29:10: 0
No Options Available right now. Next Update in 15 seconds..
  1. If at any stage your Token becomes invalid, then the Program will make a Beep and Prompt for y or n. If you would like to continue, provide y and proceed to allow using same Mobile Number
Token is INVALID! 
Do you want to try for a new Token? (y/n Default y): y
Enter the Registered Mobile Number: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
Enter OTP: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
  1. When a Center with more than minimum number of Slots is available, the Program will make a Beep sound - having different frequency for different districts. It will then display the available options as shown in the Screenshot.

  2. Before the Next Update, you'll have 10 seconds to provide a choice in the given format centerIndex.slotIndex eg: The input1.4 will select the First Vaccination Center and its Fourth Slot.

Working Screenshots:

  1. Generating OTP and Token...

SS1

  1. Fetching Registered Beneficiaries...

SS2

  1. Selecting Beneficiaries...

SS3

  1. Additional Information to be entered for Slot Booking...

SS4

  1. Auto-Booking Function...

SS5

  1. Save Information as JSON File...

SS6

  1. Displaying Available Vaccination Centers and Booking Slots (Auto-Booking ON)...

SS7

  1. Successfully Booking a Slot (If and only if you enter the Captcha correctly and in the mean time, all the slots are not booked)

SS8

Contributing

Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Team Members:

  1. Dhruv Panchal
  2. Urveshkumar Patel
  3. Nirja Desai

Important:

  • This is a Proof of Concept Project. I OR the Team do NOT endorse or condone, in any shape or form, automating any monitoring/booking tasks. It's only made for Educational Purposes. Use this at your own risk.
  • FURTHER, ANY USE OF THE SCRIPT FOR MONETARY, UNETHICAL, OR ILLEGAL PURPOSES IS NOT PERMITTED. - IN CASE, YOU ARE FOUND TO DO THE SAME, YOU SHALL BE SOLELY LIABLE FOR THE CONSEQUENCES. THE DEVELOPER SHALL AND CANNOT BE HELD LIABLE FOR THE UNETHICAL OR ILLEGAL USE OF THE SAME
  • This Python Script CANNOT book slots automatically. It doesn't skip any of the steps that a User would have to take on the official portal. You will still have to enter the OTP and Captcha as you do in the CoWIN Portal.
  • Do NOT use unless all the beneficiaries selected are supposed to get the same Vaccine and Dose.
  • There is no option to Register a new Phone/Mobile or add beneficiaries for now. This can be used only after beneficiary has been added through the official Portal/App.
  • Be careful if you're choosing to use the auto-book feature. It will blindly select first available Vaccination Centre, Date (Both Sorted Ascending) and a RANDOM slot. I would not recommend using this feature unless and until it's crucial.
  • If you accidentally booked a slot you didn't want to then don’t worry. You can always log in to the CoWIN Portal and cancel/re-schedule that.
  • This goes without saying but, once you get your shot, please do help out any people around you who may not have a laptop or the know-how. For instance any sort of domestic help or literally the thousands of people who don't have the knowledge or luxury as we do.
  • The Developer reserves their rights to take any legal action as enumerated under the law against any unethical or illegal use of the same.
  • API Details (Do read the first paragraph): https://apisetu.gov.in/public/marketplace/api/cowin/cowin-public-v2

Made with ❀ by Dhruv Panchal