Skip to content

Instantly share code, notes, and snippets.

@eSoares
Created December 26, 2021 18:36
Show Gist options
  • Select an option

  • Save eSoares/2828ab5ac3970400dd40590cae21ee55 to your computer and use it in GitHub Desktop.

Select an option

Save eSoares/2828ab5ac3970400dd40590cae21ee55 to your computer and use it in GitHub Desktop.
# %%%
import requests
import json
import tqdm
units = requests.get("https://api-drive.unilabs.pt/api/v1/units?type=3&exam-id=1&entity-id=1") # source: https://go.unilabs.pt/marcacao/local?exam=1&protocol=1
dates_by_district = {}
for unit in tqdm.tqdm(units.json()):
# print(unit)
unit_slots = requests.get(
f"https://api-drive.unilabs.pt/api/v1/slots?unit-id={unit['id']}&since=2021-12-26&until=2022-01-09&exam-id=1&entity-id=1")
days = unit_slots.json()[0].get("agenda", [])
district = unit.get("districtName")
for day in sorted(days, key=lambda x: x['day']):
day_rep = day.get("day", [])
slots_available = list(filter(lambda x: x.get("seats", 0) > 0, day.get("slots", []))) # todo: maybe save this to calculate number of slots?
if len(slots_available) > 0:
district_currect_date = dates_by_district.get(district, [])
if len(district_currect_date) == 0 or district_currect_date[0]["day"] > day_rep:
dates_by_district[district] = [{"day": day_rep, "unit": unit}]
elif district_currect_date[0]["day"] == day_rep:
dates_by_district[district] = dates_by_district.get(district, []) + [{"day": day_rep, "unit": unit}]
break
print(json.dumps(dates_by_district, indent=4, sort_keys=True))
{
"Aveiro": [
{
"day": "2021-12-27",
"unit": {
"address": "Rua Doutor \u00c2ngelo Miranda ",
"canSchedule": true,
"districtId": 1,
"districtName": "Aveiro",
"id": 5078,
"isWalkThru": true,
"latitude": 40.929599,
"longitude": -8.254362,
"name": "Unilabs Arouca",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Rua Marqu\u00eas de Pombal, Edif\u00edcio Solmar II, 5, R\u00e9s do Ch\u00e3o Esq\u00ba",
"canSchedule": true,
"districtId": 1,
"districtName": "Aveiro",
"id": 6854,
"isWalkThru": true,
"latitude": 40.697759720427115,
"longitude": -8.487276163188566,
"name": "Unilabs Walk Thru Albergaria",
"specialties": [
1,
100
]
}
}
],
"Braga": [
{
"day": "2021-12-28",
"unit": {
"address": "Rua do Pavilh\u00e3o Loja 4, Edif\u00edcio Europa I",
"canSchedule": true,
"districtId": 3,
"districtName": "Braga",
"id": 5170,
"isWalkThru": true,
"latitude": 41.38446,
"longitude": -8.414974,
"name": "Unilabs Vila Nova de Famalic\u00e3o | Del\u00e3es",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Rua C\u00e2ndido Cunha, 278",
"canSchedule": true,
"districtId": 3,
"districtName": "Braga",
"email": "ucbarcelos@gmail.com",
"id": 5179,
"isWalkThru": true,
"latitude": 41.53337,
"longitude": -8.6142613,
"name": "Unilabs Barcelos | C\u00e2ndido Cunha",
"specialties": [
1,
100,
5
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Rua Central, 15, 1\u00ba Drt",
"canSchedule": true,
"districtId": 3,
"districtName": "Braga",
"email": "rececao.pevidem@unilabs.com",
"id": 5358,
"isWalkThru": true,
"latitude": 41.42793,
"longitude": -8.353092,
"name": "Unilabs Guimar\u00e3es | Pevid\u00e9m ",
"specialties": [
0,
1,
100,
5
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Rua Nossa Senhora da Concei\u00e7\u00e3o, 23 4800-163 ",
"canSchedule": true,
"districtId": 3,
"districtName": "Braga",
"email": "rececao.azurem@unilabs.com",
"id": 5377,
"isWalkThru": true,
"latitude": 41.447645,
"longitude": 8.300149,
"name": "Unilabs Guimar\u00e3es | Azur\u00e9m",
"specialties": [
0,
1,
100,
5
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Alameda Dr. Francisco S\u00e1 Carneiro",
"canSchedule": true,
"districtId": 3,
"districtName": "Braga",
"email": "drivecovidfamalicao@outlook.pt",
"id": 6539,
"isWalkThru": true,
"latitude": 41.407271,
"longitude": -8.515042,
"name": "Unilabs Walk Thru Famalic\u00e3o",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Parque de estacionamento do F\u00f3rum Vizela -Rua Joaquim Ribeiro Ferreira",
"canSchedule": true,
"districtId": 3,
"districtName": "Braga",
"id": 6706,
"isWalkThru": true,
"latitude": 41.377558,
"longitude": -8.309727,
"name": "Unilabs Walk Thru Vizela",
"specialties": [
1,
100
]
}
}
],
"Bragan\u00e7a": [
{
"day": "2021-12-27",
"unit": {
"address": "Rua Calouste Gulbenkian, 5, R/C ",
"canSchedule": true,
"districtId": 4,
"districtName": "Bragan\u00e7a",
"email": "lacmjmls@sapo.pt",
"id": 5496,
"isWalkThru": true,
"latitude": 41.80681,
"longitude": -6.754008,
"name": "Unilabs Bragan\u00e7a",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Rua Camilo de Mendon\u00e7a, 53, r/c drt",
"canSchedule": true,
"districtId": 4,
"districtName": "Bragan\u00e7a",
"email": "elvira.herdeiro@unilabs.com",
"id": 5508,
"isWalkThru": true,
"latitude": 41.342115,
"longitude": -6.963801,
"name": "Unilabs Alf\u00e2ndega da F\u00e9",
"specialties": [
0,
1,
3,
100,
5
]
}
}
],
"Coimbra": [
{
"day": "2021-12-28",
"unit": {
"address": "Avenida Doutor Jo\u00e3o Garcia Bacelar, 9015 B, Loja D, R/C",
"canSchedule": true,
"districtId": 6,
"districtName": "Coimbra",
"email": "geral.cantanhede@unilabs.com",
"id": 5796,
"isWalkThru": true,
"latitude": 40.313857,
"longitude": -8.753433,
"name": "Unilabs Cantanhede | Tocha",
"specialties": [
0,
1,
100,
5
]
}
}
],
"Faro": [
{
"day": "2021-12-27",
"unit": {
"address": "Free Parking, Estrada da Rocha ",
"canSchedule": true,
"districtId": 8,
"districtName": "Faro",
"id": 6707,
"isWalkThru": false,
"latitude": 37.122,
"longitude": -8.535,
"name": "Unilabs Drive Thru Portim\u00e3o",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Rua Cidade da Praia",
"canSchedule": true,
"districtId": 8,
"districtName": "Faro",
"id": 6959,
"isWalkThru": false,
"latitude": 37.029627,
"longitude": -7.941523,
"name": "Unilabs Drive Thru Faro",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Rua dos Marmeleiros 5",
"canSchedule": true,
"districtId": 8,
"districtName": "Faro",
"id": 6989,
"isWalkThru": true,
"latitude": 37.082181,
"longitude": -8.1204123,
"name": "Unilabs Walk Thru Vilamoura",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Estrada do Farol, 90",
"canSchedule": true,
"districtId": 8,
"districtName": "Faro",
"id": 6990,
"isWalkThru": true,
"latitude": 37.095532,
"longitude": -8.464534,
"name": "Unilabs Walk Thru Carvoeiro",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Avenida S. Jo\u00e3o de Deus, Parque de Sa\u00fade da Miseric\u00f3rdia de Portim\u00e3o",
"canSchedule": true,
"districtId": 8,
"districtName": "Faro",
"id": 6991,
"isWalkThru": true,
"latitude": 37.1388,
"longitude": -8.544,
"name": "Unilabs Drive e Walk Thru S\u00e3o Camilo",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Rua 12 de Julho ",
"canSchedule": true,
"districtId": 8,
"districtName": "Faro",
"id": 7025,
"isWalkThru": true,
"latitude": 37.094406,
"longitude": -8.188917,
"name": "Unilabs Walk Thru Albufeira | Olhos de \u00c1gua",
"specialties": [
1,
100
]
}
}
],
"Guarda": [
{
"day": "2021-12-27",
"unit": {
"address": "Rua Jos\u00e9 Augusto Saraiva de Aguiar, 5",
"canSchedule": true,
"districtId": 9,
"districtName": "Guarda",
"email": "ana.martins@unilabs.com",
"id": 5739,
"isWalkThru": true,
"latitude": 41.08224,
"longitude": -7.1403598,
"name": "Unilabs Vila Nova de Foz C\u00f4a",
"specialties": [
0,
1,
3,
100,
5
]
}
}
],
"Leiria": [
{
"day": "2021-12-29",
"unit": {
"address": "Avenida Inoc\u00eancia Cairel Sim\u00e3o 24F",
"canSchedule": true,
"districtId": 10,
"districtName": "Leiria",
"email": "rececao.bombarral@unilabs.com",
"id": 6152,
"isWalkThru": true,
"latitude": 39.27113,
"longitude": -9.1581,
"name": "Unilabs Bombarral",
"specialties": [
0,
1,
3,
100,
5
]
}
}
],
"Lisboa": [
{
"day": "2021-12-31",
"unit": {
"address": "Rua Dom Bosco",
"canSchedule": true,
"districtId": 11,
"districtName": "Lisboa",
"id": 6806,
"isWalkThru": false,
"latitude": 38.716624,
"longitude": -9.406481,
"name": "Unilabs Drive Thru Estoril",
"specialties": [
100
]
}
}
],
"Porto": [
{
"day": "2021-12-28",
"unit": {
"address": "Largo da Feira, n\u00ba 40",
"canSchedule": true,
"districtId": 13,
"districtName": "Porto",
"id": 5246,
"isWalkThru": true,
"latitude": 41.205123,
"longitude": -8.331264,
"name": "Unilabs Paredes | Largo da Feira",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Avenida 1\u00ba de Maio, R/C",
"canSchedule": true,
"districtId": 13,
"districtName": "Porto",
"id": 5247,
"isWalkThru": true,
"latitude": 41.27188,
"longitude": -8.0778,
"name": "Unilabs Amarante |1\u00ba de Maio",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Complexo Desportivo de Lousada",
"canSchedule": true,
"districtId": 13,
"districtName": "Porto",
"id": 6576,
"isWalkThru": false,
"latitude": 41.28638,
"longitude": -8.294843,
"name": "Unilabs Drive Thru Lousada",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Rua do Sport Clube de Freamunde",
"canSchedule": true,
"districtId": 13,
"districtName": "Porto",
"email": "unilabsdrivefreamunde@gmail.com",
"id": 6697,
"isWalkThru": false,
"latitude": 41.277513,
"longitude": -8.338789,
"name": "Unilabs Drive Thru Freamunde",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": "Avenida do Hospital Padre Am\u00e9rico, 210",
"canSchedule": true,
"districtId": 13,
"districtName": "Porto",
"email": "unilabsdrivepenafiel@gmail.com",
"id": 6703,
"isWalkThru": false,
"latitude": 41.195968,
"longitude": -8.307313,
"name": "Unilabs Drive Thru Penafiel (CHTS)",
"specialties": [
1,
100
]
}
},
{
"day": "2021-12-28",
"unit": {
"address": " R. Dom Sancho I Est\u00e1dio do Rio Ave",
"canSchedule": true,
"districtId": 13,
"districtName": "Porto",
"id": 6809,
"isWalkThru": true,
"latitude": 38.5663,
"longitude": -9.0498,
"name": "Unilabs Walk Thru Rio Ave",
"specialties": [
1,
100
]
}
}
],
"Santar\u00e9m": [
{
"day": "2021-12-29",
"unit": {
"address": "Casal do Confeiteiro, Cal\u00e7adinha, EN3 Rua O, UFCS",
"canSchedule": true,
"districtId": 14,
"districtName": "Santar\u00e9m",
"email": "drivesantarem.unilabs@gmail.com",
"id": 6840,
"isWalkThru": false,
"latitude": 39.22362,
"longitude": -8.700018,
"name": "Unilabs Drive Thru Santar\u00e9m",
"specialties": [
100
]
}
}
],
"Set\u00fabal": [
{
"day": "2021-12-31",
"unit": {
"address": "Est\u00e1dio do Bonfim",
"canSchedule": true,
"districtId": 15,
"districtName": "Set\u00fabal",
"email": "sandra.adao@unilabs.com",
"id": 6805,
"isWalkThru": false,
"latitude": 38.5326929,
"longitude": -8.8910288,
"name": "Unilabs Drive Thru Set\u00fabal",
"specialties": [
100
]
}
}
],
"Viana do Castelo": [
{
"day": "2021-12-27",
"unit": {
"address": "Rua Rio do Porto, 39",
"canSchedule": true,
"districtId": 16,
"districtName": "Viana do Castelo",
"id": 5140,
"isWalkThru": true,
"latitude": 42.112122,
"longitude": -8.257105,
"name": "Unilabs Melga\u00e7o",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Rua Val Flores, Bloco B",
"canSchedule": true,
"districtId": 16,
"districtName": "Viana do Castelo",
"id": 5141,
"isWalkThru": true,
"latitude": 42.024208,
"longitude": -8.645167,
"name": "Unilabs Valen\u00e7a",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Avenida Doutor Dantas Carneiro",
"canSchedule": true,
"districtId": 16,
"districtName": "Viana do Castelo",
"id": 6705,
"isWalkThru": false,
"latitude": 41.879322,
"longitude": -8.836975,
"name": "Unilabs Drive Thru Caminha",
"specialties": [
1,
100
]
}
}
],
"Vila Real": [
{
"day": "2021-12-27",
"unit": {
"address": "Rua C\u00e2ndido Sotto Mayor, 51, R/C",
"canSchedule": true,
"districtId": 17,
"districtName": "Vila Real",
"email": "geral@laboratoriopioledo.pt",
"id": 5292,
"isWalkThru": true,
"latitude": 41.73754,
"longitude": -7.46579,
"name": "Unilabs Chaves | Madalena",
"specialties": [
0,
1,
3,
100,
5
]
}
},
{
"day": "2021-12-27",
"unit": {
"address": "Largo do Rossio n\u00ba20 Cave \n(entrada pela Avenida 1\u00ba de Maio)",
"canSchedule": true,
"districtId": 17,
"districtName": "Vila Real",
"email": "geral@laboratoriopioledo.pt",
"id": 5813,
"isWalkThru": true,
"latitude": 41.2975274,
"longitude": -7.7458038,
"name": "Unilabs Corgo",
"specialties": [
0,
1,
3,
100,
5
]
}
}
],
"Viseu": [
{
"day": "2021-12-27",
"unit": {
"address": "Rua 5 de Outubro",
"canSchedule": true,
"districtId": 18,
"districtName": "Viseu",
"email": "lab.cssm@casadesaude.pt",
"id": 7189,
"isWalkThru": true,
"latitude": 40.65684,
"longitude": -7.90505,
"name": "Walk Thru Viseu | Casa de Saude Sao Mateus",
"specialties": [
100
]
}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment