Last active
January 28, 2021 12:28
-
-
Save benjeffery/7c2943634d4e02bbad882fb679bfb450 to your computer and use it in GitHub Desktop.
UK Covid testing alarm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import datetime | |
import time | |
import requests | |
import playsound #You might need to install pygobject if you get an error about missing "gi" module for this. | |
playsound.playsound("ding.mp3") #You'll need a file here that is noisy | |
while True: | |
try: | |
r = requests.post( | |
"https://ads-prd-gov-1-sp.test-for-coronavirus.service.gov.uk/testcentres/availabilityquery", | |
headers={ | |
"authority": "ads-prd-gov-1-sp.test-for-coronavirus.service.gov.uk", | |
"accept": "application/json, text/plain, */*", | |
"dnt": "1", | |
"x-urlcode": "***GET THIS IN BROWSER DEV TOOLS FROM A REQUEST MADE BY THE WEBSITE***", | |
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36", | |
"content-type": "application/json", | |
"origin": "https://test-for-coronavirus.service.gov.uk", | |
"sec-fetch-site": "same-site", | |
"sec-fetch-mode": "cors", | |
"sec-fetch-dest": "empty", | |
"referer": "https://test-for-coronavirus.service.gov.uk/", | |
"accept-language": "en-GB,en-US;q=0.9,en;q=0.8", | |
}, | |
json={ | |
"topLevelTestCentreId": "CVD19", | |
"postcode": "***YOUR_POSTCODE***", | |
"testCentreGroupIds": ["GR_RTS", "GR_STS", "GR_MTU", "GR_LTS"], | |
"startDate": "** DATE IN THIS FORMAT : 2020-09-10T00:00:00**", | |
"numberOfDays": 5, | |
"appointmentTypeCode": "ATCOM05", | |
"paging": {"currentPage": 1, "pageSize": 3}, | |
}, | |
).json() | |
print("Time:", datetime.datetime.now()) | |
if len(r["testCentres"]) == 0: | |
print("Nothing!") | |
for c in r["testCentres"]: | |
print( | |
c["testCentre"]["displayName"], | |
c["geolocation"]["distance"], | |
c["availability"]["availableSlots"], | |
) | |
if float(c["geolocation"]["distance"]) < 50: | |
for i in range(20): | |
playsound.playsound("ding.mp3") | |
except: | |
playsound.playsound("ding.mp3") | |
time.sleep(60) | |
# Example request and response from chrome dev tools: | |
# curl 'https://ads-prd-gov-1-sp.test-for-coronavirus.service.gov.uk/testcentres/availabilityquery' \ | |
# -H 'authority: ads-prd-gov-1-sp.test-for-coronavirus.service.gov.uk' \ | |
# -H 'accept: application/json, text/plain, */*' \ | |
# -H 'dnt: 1' \ | |
# -H 'x-urlcode: YOUR_CODE_HERE' \ | |
# -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36' \ | |
# -H 'content-type: application/json' \ | |
# -H 'origin: https://test-for-coronavirus.service.gov.uk' \ | |
# -H 'sec-fetch-site: same-site' \ | |
# -H 'sec-fetch-mode: cors' \ | |
# -H 'sec-fetch-dest: empty' \ | |
# -H 'referer: https://test-for-coronavirus.service.gov.uk/' \ | |
# -H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \ | |
# --data-binary '{"topLevelTestCentreId":"CVD19","postcode":"YOUR_POSTCODE","testCentreGroupIds":["GR_RTS","GR_STS","GR_MTU"],"startDate":"2020-09-10T00:00:00","numberOfDays":5,"appointmentTypeCode":"ATCOM05","paging":{"currentPage":1,"pageSize":3}}' \ | |
# --compressed | |
# { | |
# "testCentres": [ | |
# { | |
# "availability": { | |
# "availableSlots": 3, | |
# "slotsAvailableOn": ["2020-09-11T00:00:00"], | |
# }, | |
# "geolocation": {"distance": 113.036529084286}, | |
# "testCentre": { | |
# "testCentreId": "LRC", | |
# "displayName": "Central Chester - Walk through site", | |
# "address": { | |
# "addressLine1": "Little Roodee Car Park", | |
# "town": "Chester", | |
# "postcode": "CH1 1SL", | |
# }, | |
# "active": true, | |
# "testCentreGroupId": "GR_LTS", | |
# }, | |
# }, | |
# { | |
# "availability": { | |
# "availableSlots": 7, | |
# "slotsAvailableOn": ["2020-09-11T00:00:00"], | |
# }, | |
# "geolocation": {"distance": 130.744753751102}, | |
# "testCentre": { | |
# "testCentreId": "KNH", | |
# "displayName": "Kirklees Ravensthorpe - Walk through site", | |
# "address": { | |
# "addressLine1": "Kirklees Neighbourhood Housing Car Park, Queen Street", | |
# "town": "Ravensthorpe", | |
# "postcode": "WF13 3BT", | |
# }, | |
# "active": true, | |
# "testCentreGroupId": "GR_LTS", | |
# }, | |
# }, | |
# { | |
# "availability": { | |
# "availableSlots": 1, | |
# "slotsAvailableOn": ["2020-09-11T00:00:00"], | |
# }, | |
# "geolocation": {"distance": 134.594445459396}, | |
# "testCentre": { | |
# "testCentreId": "CAL", | |
# "displayName": "Halifax Calderdale - Walk through site", | |
# "address": { | |
# "addressLine1": "Overflow Car Park, ASDA Halifax Superstore, Thrum Hall Lane", | |
# "town": "Halifax", | |
# "postcode": "HX1 4PG", | |
# }, | |
# "active": true, | |
# "testCentreGroupId": "GR_LTS", | |
# }, | |
# }, | |
# ], | |
# "flagInvalidGeoLocation": false, | |
# "customerCode": "XXXXXXX", | |
# } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Someone is making a lot of money by rationing the tests.