pallupz / covid-vaccine-booking
- четверг, 6 мая 2021 г. в 00:27:43
This very basic script can be used to automate COVID-19 vaccination slot booking on India's Co-WIN Platform.
This very basic CLI based script can be used to automate covid vaccination slot booking on Co-WIN Platform.
feature/auto-book
has auto-booking functionality that books the first available center, date, and slot. Considering it's possible impacts, I won't be promoting it to main
.For the anyone not familiar with Python and using Windows, using the covid-vaccine-slot-booking.exe
executable file would be the easiest way. It might trigger an anti-virus alert. That's because I used pyinstaller
to package the python code and it needs a bit more effort to avoid such alerts.
OR
Run the script file as show below:
python src\covid-vaccine-slot-booking.py
If you're on Linux, install the beep package before running the Python script. To install beep, run:
sudo apt-get install beep
If you already have a bearer token, you can also use:
python src\covid-vaccine-slot-booking.py --token=YOUR-TOKEN-HERE
tabulate
: For displaying data in tabular format.requests
: For making GET and POST requests to the API.inputimeout
: For creating an input with timeout.Install all dependencies by running:
pip install -r requirements.txt
Run script:
python src\covid-vaccine-slot-booking.py
Select Beneficiaries. Read the important notes. You can select multiple beneficiaries by providing comma-separated index values such as 1,2
:
Enter the registered mobile number: ██████████
Requesting OTP with mobile number ██████████..
Enter OTP: 999999
Validating OTP..
Token Generated: █████████████████████████████████████████████████████████████
Fetching registered beneficiaries..
+-------+----------------------------+---------------------------+------------+
| idx | beneficiary_reference_id | name | vaccine |
+=======+============================+===========================+============+
| 1 | ██████████████ | █████████████████████████ | COVISHIELD |
+-------+----------------------------+---------------------------+------------+
| 2 | ██████████████ | █████████████████ | |
+-------+----------------------------+---------------------------+------------+
################# IMPORTANT NOTES #################
# 1. While selecting beneficiaries, make sure that selected beneficiaries are all taking the same dose: either first OR second.
# Please do no try to club together booking for first dose for one beneficiary and second dose for another beneficiary.
#
# 2. While selecting beneficiaries, also make sure that beneficiaries selected for second dose are all taking the same vaccine: COVISHIELD OR COVAXIN.
# Please do no try to club together booking for beneficiary taking COVISHIELD with beneficiary taking COVAXIN.
###################################################
Enter comma separated index numbers of beneficiaries to book for : 2
Ensure correct beneficiaries are getting selected:
Selected beneficiaries:
+-------+----------------------------+-----------+
| idx | beneficiary_reference_id | vaccine |
+=======+============================+===========+
| 1 | ██████████████ | |
+-------+----------------------------+-----------+
Select a state
+-------+-----------------------------+
| idx | state |
+=======+=============================+
| 1 | Andaman and Nicobar Islands |
+-------+-----------------------------+
| 2 | Andhra Pradesh |
+-------+-----------------------------+
+-------+-----------------------------+
+-------+-----------------------------+
| 35 | Uttar Pradesh |
+-------+-----------------------------+
| 36 | Uttarakhand |
+-------+-----------------------------+
| 37 | West Bengal |
+-------+-----------------------------+
Enter State index: 18
Select districts you are interested in. Multiple districts can be selected by providing comma-separated index values
+-------+--------------------+
| idx | district |
+=======+====================+
| 1 | Alappuzha |
+-------+--------------------+
| 2 | Ernakulam |
+-------+--------------------+
| 3 | Idukki |
+-------+--------------------+
+-------+--------------------+
+-------+--------------------+
| 13 | Thrissur |
+-------+--------------------+
| 14 | Wayanad |
+-------+--------------------+
Enter comma separated index numbers of districts to monitor : 2,13
Ensure correct districts are getting selected.
Selected districts:
+-------+---------------+-----------------+-----------------------+
| idx | district_id | district_name | district_alert_freq |
+=======+===============+=================+=======================+
| 1 | 307 | Ernakulam | 660 |
+-------+---------------+-----------------+-----------------------+
| 2 | 303 | Thrissur | 3080 |
+-------+---------------+-----------------+-----------------------+
Enter the minimum number of slots to be available at the center:
Filter out centers with availability less than: 5
Script will now start to monitor slots in these districts every 15 seconds.
===================================================================================
Centers available in Ernakulam from 01-05-2021 as of 2021-04-30 15:13:44: 0
Centers available in Thrissur from 01-05-2021 as of 2021-04-30 15:13:44: 0
No viable options. Waiting for next update in 15s.
===================================================================================
Centers available in Ernakulam from 01-05-2021 as of 2021-04-30 15:13:59: 0
Centers available in Thrissur from 01-05-2021 as of 2021-04-30 15:13:59: 0
No viable options. Waiting for next update in 15s.
If at any stage your token becomes invalid, the script will make a beep and prompt for y
or n
. If you'd like to continue, provide y
and proceed to allow using same mobile number
Token is INVALID.
Try for a new Token? (y/n): y
Try for OTP with mobile number ███████████? (y/n) : y
Enter OTP: 888888
When a center with more than minimum number of slots is available, the script will make a beep sound - different frequency for different district. It will then display the available options as table:
===================================================================================
Centers available in Ernakulam from 01-05-2021 as of 2021-04-30 15:34:19: 1
Centers available in Thrissur from 01-05-2021 as of 2021-04-30 15:34:19: 0
+-------+----------------+------------+-------------+------------+------------------------------------------------------------------------------+
| idx | name | district | available | date | slots |
+=======+================+============+=============+============+==============================================================================+
| 1 | Ayyampilly PHC | Ernakulam | 30 | 01-05-2021 | ['09:00AM-10:00AM', '10:00AM-11:00AM', '11:00AM-12:00PM', '12:00PM-02:00PM'] |
+-------+----------------+------------+-------------+------------+------------------------------------------------------------------------------+
----------> Wait 10 seconds for updated options OR
----------> Enter a choice e.g: 1.4 for (1st center 4th slot): 1.3
Before the next update, you'll have 10 seconds to provide a choice in the format centerIndex.slotIndex
eg: The input1.4
will select the vaccination center in second row and its fourth slot.