cowin-monitor/cowin-book-appointment.py
Ameya Shenoy 1682ea1dd1
feat: add cowin book appointment
Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
2021-05-07 01:38:00 +05:30

117 lines
3.4 KiB
Python

import sys
import json
import requests
# FILL THIS
access_token = ""
beneficiary = "" # can you can get this form decoding the JWT access token at jwt.io
# FILL THIS
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'en-US,en;q=0.5',
'Origin': 'https://selfregistration.cowin.gov.in',
'Authorization': f'Bearer {access_token}',
'DNT': '1',
'Connection': 'keep-alive',
'Referer': 'https://selfregistration.cowin.gov.in/',
'Sec-GPC': '1',
'TE': 'Trailers',
}
params = (
('district_id', '395'), # 395 is Mumbai
('date', '06-05-2021'), # todays date
)
response = requests.get('https://cdn-api.co-vin.in/api/v2/appointment/sessions/calendarByDistrict', headers=headers, params=params)
# incase you want to book a certain hospital
required_hospital = 'seven hills'.lower()
center_id = ''
session_id = ''
slot = ''
if response.ok:
print('Sessions available')
resp_json = response.json()
# pprint(resp_json)
for center in resp_json.get('centers'):
for session in center.get('sessions'):
if session.get('available_capacity') > 0 and session.get('min_age_limit') == 18:
print(center)
if required_hospital in center.get('name').lower():
print(center)
print(f"Booking slot in {center.get('name')}")
center_id = center.get('center_id')
session_id = session.get('session_id')
slot = session.get('slots')[0]
break
else:
print("Available Non Matching Center")
print(center)
else: # crutial else to ensure you're not blocked
print("Response Failed")
print(response.reason)
print(response.text)
sys.exit(1)
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'en-US,en;q=0.5',
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json',
'Origin': 'https://selfregistration.cowin.gov.in',
'DNT': '1',
'Connection': 'keep-alive',
'Referer': 'https://selfregistration.cowin.gov.in/',
'Sec-GPC': '1',
'TE': 'Trailers',
}
print('Center ID: {}'.format(center_id))
print(session_id)
print(slot)
# sample_data = '{"center_id":561800,"session_id":"50bceff2-51b0-4c4e-b6c4-af02ccf89c34","beneficiaries":["xxxxxxxxxxxxxx"],"slot":"09:00AM-11:00AM","dose":1}'
custom_data = {
"center_id": center_id,
"session_id": session_id,
"beneficiaries":[f"{beneficiary}"],
"slot": slot,
"dose":1
}
custom_data = json.dumps(custom_data)
custom_data = custom_data.replace(' ', '')
# print(data)
print(custom_data)
if center_id != '':
print("Sending POST request to book session")
response = requests.post('https://cdn-api.co-vin.in/api/v2/appointment/schedule', headers=headers, data=custom_data)
if response.ok:
print("Response Succeeded")
print(response)
try:
print(response.json())
except:
pass
else: # crutial else to ensure you're not blocked
print("Response Failed")
print(response.reason)
print(response.text)
sys.exit(1)