From 857690cb771f07a5198d849d1a6767737b2931c4 Mon Sep 17 00:00:00 2001 From: Adrien Nunes <adrien.nunes@ensiie.fr> Date: Fri, 16 Jul 2021 16:54:29 +0200 Subject: [PATCH] Update --- main.py | 76 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 19 deletions(-) diff --git a/main.py b/main.py index 1ed54d8..1514a6f 100644 --- a/main.py +++ b/main.py @@ -2,17 +2,37 @@ import requests import time from datetime import date, datetime, timedelta +#max delay in day +next_x_days = 5 + +#webhook +webhook = 'webhook here' +#id user discord +id_discord = 'id discord to get notif' + centers_file = 'centers.txt' booking_url = "https://www.doctolib.fr/booking/" availabilities_url = "https://www.doctolib.fr/availabilities.json" main_page = "https://www.doctolib.fr/" +done = [] -def request_json_data(url, params=()): +def request_json_data(url, params={}): data = None + headers = { + 'Host': 'www.doctolib.fr', + 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0', + 'Accept': 'application/json', + 'Accept-Language': 'en-US,en;q=0.5', + 'content-type': 'application/json; charset=utf-8', + 'Connection': 'keep-alive', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'TE': 'Trailers' + } try: - r = requests.get(url, params=params) + r = requests.get(url, params=params, headers=headers) data = r.json() except requests.exceptions.RequestException as e: print("ERROR : ", e) @@ -44,7 +64,7 @@ def find_agendas(center): practices = {} for motive in center_data['visit_motives'] : - if ('1re' in motive['name']) and ('Pfizer' in motive['name']): + if ('1re' in motive['name']) and (('Pfizer' in motive['name']) or ('Moderna' in motive['name'])): motive_pfizer = motive['id'] break @@ -61,17 +81,30 @@ def find_agendas(center): def find_availabilities(motive, agendas): - curr_date = (date.today() + timedelta(days=1)).strftime("%Y-%m-%d") #On veut pour demain - - params = ( - ('start_date', curr_date), - ('visit_motive_ids', motive), - ('agenda_ids', agendas) - ) + curr_date = date.today().strftime("%Y-%m-%d") + + params = { + 'start_date': curr_date, + 'visit_motive_ids': motive, + 'agenda_ids': agendas, + 'limit': next_x_days + } data = request_json_data(availabilities_url, params) if (data is None) or (len(data['availabilities']) == 0): return [] - return data['availabilities'][0]['slots'] + + slots = [i['slots'] for i in data['availabilities']] + flat = [item for sublist in slots for item in sublist] + return flat + +def send_alert(rdv): + print(rdv) + data = { + 'content': '<@' + id_discord + '> : ' + rdv, + 'username': 'QuickVaccin', + } + requests.post(webhook, json=data) + if __name__ == '__main__': @@ -85,14 +118,19 @@ if __name__ == '__main__': availabilities = find_availabilities(motive_pfizer, agendas) if len(availabilities) > 0: - print("\n=============================================") for availability in availabilities: - heure = datetime.strptime(availability['start_date'] .split('+')[0], "%Y-%m-%dT%H:%M:%S.%f").strftime('%H:%M') + date_str = availability['start_date'] .split('+')[0]; + code = date_str + center + if(code not in done): + done.append(code) + date_rdv = datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%S.%f").strftime('[%A] %d %b %H:%M') + + #Traiter l'info (Envoyer une notif discord etc) + rdv = "\n----------------------------------------------------------\n" + rdv += date_rdv+"\n" + rdv += main_page + center+'?pid=practice-'+str(practices[availability['agenda_id']]) + rdv += "\n----------------------------------------------------------\n" - #Traiter l'info (Envoyer une notif discord etc) - print(main_page + center+'?pid=practice-'+str(practices[availability['agenda_id']])) - print('Disponible : '+heure) - print('\n') - print("=============================================") + send_alert(rdv) - time.sleep(1) + time.sleep(30) -- GitLab