CovidTrackerFr / vitemadose

Détection de créneaux de vaccination disponibles pour l'outil ViteMaDose
GNU General Public License v3.0
232 stars 56 forks source link

Ajouter la plateforme Valwin #471

Closed Noezor closed 3 years ago

Noezor commented 3 years ago

Guillaume a reçu un message sur Twitter pour intégrer Valwin à VMD. Ils ont 700 pharmacies sur leurs rdvs.

Bouska commented 3 years ago

Ca va être difficile voire impossible. Valwin n'est pas une plateforme, c'est plutôt une agence qui créé des sites de pharmacies et des services autour. Il n'y a aucun annuaire des 700 pharmacies qu'ils ont (et c'est juste des pharmacies clientes, elles n'ont pas forcement de système de prise de RDV). J'ai trouvé un certain nombre de pharmacie Valwin ; si je prend https://pharmacie-francoise-parolini.com/animations qui a des RDV, il n'y a pas d'API, il faudrait donc scraper le site (et pas sur que la totalité des sites aient la même structure HTML). Sinon, il y a une app Valwin compatible avec toutes les pharmacies, potentiellement qu'avec un package sniffer, il y aurait moyen de récupérer les appels d'APi que fait l'app, mais rien ne garantie que l'API ne soit pas authentifié ou autre.

grubounet commented 3 years ago

Après peut etre que la plateforme peut fournir une doc pour l'api ?

grubounet commented 3 years ago

@rozierguillaume peux tu leur dire de venir sur le mattermost ?

DavidLibeau commented 3 years ago

Il y a des trucs : https://pharmacie-francoise-parolini.com/api/on-duty/in-range?from=2021-04-30T22:00:00.000Z&to=2021-05-31T21:59:59.999Z

DavidLibeau commented 3 years ago

Pour info, ya une liste de sites de pharmacie ici : http://www.ordre.pharmacien.fr/ecommerce/search (peut-être tout systèmes confondus).

Noezor commented 3 years ago

@DavidLibeau tu veux faire un truc ? ça sera aussi l'occasion de voir à quel point c'est facile d'étendre la collection et l'exportation des horaires de tous les rdvs

DavidLibeau commented 3 years ago

@Noezor Je ne code pas en Python/pas le temps d'apprendre.

Bouska commented 3 years ago

Il y a des trucs : https://pharmacie-francoise-parolini.com/api/on-duty/in-range?from=2021-04-30T22:00:00.000Z&to=2021-05-31T21:59:59.999Z

Effectivement, il n'y a pas zéro API, mais là il me semble que c'est une API pour avoir les pharmacies au alentour de garde. Je ne vais pas m'amuser à aller plus loin sans doc, ça va être une perte de temps qui sera mieux consacré à d'autres sujets.

DavidLibeau commented 3 years ago

Pour être tout à fait complet, ça serait possible et assez simple à scrap car les sites Valwin semble être des simili Jamstacks qui utilisent l'hydratation mais sans API : tout se fait en backend et les données sont en JSON dans la page. En gros, il faut détecter le JSON meetingTypes sur le /animations puis le JSON meetingSlots sur le /animation-details/{id}/{page}/{pageSize}.

Capture d’écran 2021-05-16 à 10 07 28
max5962 commented 3 years ago

Avec cette recherche google, on voit le nombre de pharmacie compatible : https://www.google.com/search?q=%22Une+cr%C3%A9ation+Valwin%22+pharmacie+%22%2Fanimations%22

il y en a pas mal. en parcourant à la main, il y a assez peu de site qui propose des RDV de vaccination... Cette requête "$($('div:contains("Vaccin COVID-19")')[4]).next()[0].href" te permet d'avoir l'avoir le lien vers la page de réservation et renvoit undefined si cela n'est pas proposé

Boucler en jquery est facile et on peut obtenir rapidement tous les rdvs via ce type de requête : jour : $('.meeting-slot__day','.meeting-slot')[ID_CRENEAUX] mois : $('.meeting-slot__month','.meeting-slot')[ID_CRENEAUX] heure : $('.hour','.meeting-slot')[ID_CRENEAUX] liens : $('.a','.meeting-slot')[ID_CRENEAUX]

ça ne doit pas être "compliqué" à mettre en place.

A voir à partir de combien de pharmacie ça peut valoir le coup. Sachant que ça sera AZ et Moderna.