Created
December 26, 2021 18:36
-
-
Save eSoares/2828ab5ac3970400dd40590cae21ee55 to your computer and use it in GitHub Desktop.
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 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)) |
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
| { | |
| "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