Skip to content
Extraits de code Groupes Projets
Valider 857690cb rédigé par Adrien NUNES's avatar Adrien NUNES
Parcourir les fichiers

Update

parent 5cf4b840
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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)
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter