Coder Social home page Coder Social logo

dunglas / vaccin.click Goto Github PK

View Code? Open in Web Editor NEW
94.0 8.0 19.0 1.47 MB

Une extension Firefox pour trouver et réserver automatiquement votre créneau de vaccination COVID-19.

Home Page: https://vaccin.click

License: GNU Affero General Public License v3.0

JavaScript 86.80% CSS 1.29% HTML 11.90%
covid-19 vaccine firefox-addon firefox-extension firefox-webextension firefox-extensions

vaccin.click's Introduction

vaccin.click : une extension Firefox pour trouver et réserver automatiquement votre créneau de vaccination COVID-19

Retrouvez toutes les infos concernant l'extension sur vaccin.click.

Contribuer à l'extension

Merci ! Tout est décrit dans le fichier CONTRIBUTING.md.

Voir aussi le guide publié par Mozilla.

Crédits

Créé par Kévin Dunglas (licence AGPL). Icônes par E Conceptive (licence Creative Commons Attribution 3.0 Unported).

vaccin.click's People

Contributors

ayce45 avatar dunglas avatar fabious avatar hschaeidt avatar julienw avatar oojdoo avatar pborreli avatar pirquessa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vaccin.click's Issues

onglet s'ouvre mais pas de réservation

Tout d'abord très belle initiative !
Je ne sais pas si c'est suite à la mise à jour de l'extension de ce matin mais au moins 5 onglets se sont ouvert dans la matinée et pourtant aucun créneau n'etait disponible dans les 24h.
Ou alors je n'ai pas de chance le créneau a été pris dan les 5 minutes ?

"Impossible de cliquer sur le slot"

Bonjour,
Vaccin clik a généré une erreur sur la détection des rdv dispo (EDIT) mais en fin de compte quand en cliquant sur le centre l'onglet s'ouvre bien.

Capture d’écran_2021-07-19_16-42-47

Erreur : "Echec - Impossible de cliquer sur le slot avec le titre mar. 3 août".

Merci pour cette belle extension bien pratique!

oojdoo

Impossible d'ajouter un centre à ma liste

Hello @dunglas et merci pour cette extension :)

Petit rapport de bug :

J'ai ajouté 24 centres à ma liste, et je ne peux plus en rajouter, le bouton "Ajouter à ma liste" sur un 25ème déclenche l'erreur suivante :

Error: QuotaExceededError: storage.sync API call exceeded its quota limitations.

C'est peut être normal, mais du coup j'ai un doute sur le fait que l'extension fait bien son travail (pour l'instant elle ne m'a pas proposer de créneau).

Pas clair de ce que sera l'action, après choix des centres, quand un RDV aura été trouvé

  1. Le site https://vaccin.click/ détaille bien la mise en place de l'alerte.
    Cependant, une fois que les centres ont été rajoutés, quelle est l'action proposée par l'extension ? (Dans le cas où l'on ne veut pas de prise de rdv automatique, mais uniquement une alerte)
  • Alarme sonore automatique ?
  • Notification à l'écran?
  • Si un rdv est trouvé, j'aurais un onglet qui s'ouvre automatiquement ? Quid si jamais ça n'est pas FF en focus sur mon ordi?
  1. Je cherche à simuler ce que j'aurais à faire quand un rdv sera trouvé. Donc je mets plein de centre pour connaitre le comportement de l'extension quand le rdv sera trouvé. Pour vérifier que je ne fais pas confiance à l'outil pour rien. Ca marche, mais à mon sens la notification d'une simple ouverture d'onglet n'est pas suffisante, notamment car j'ai l'impression que le focus ne passe pas sur le nouvel onglet. Une alarme sonore complémentaire serait souhaitable.

Doctolib.click

c'est un ticket complètement hors sujet et à fermer sûrement immédiatement mais si un forck est fait un jour voici des specs avec une expérience d'utilisateur .

Avec la généralisation de doctolib (c'est un fait, pas un débat) il est plus en plus facile de prendre un rendez vous, mais aussi de l'annuler .

Cette semaine je viens de faire l'expérience d'un rendez vous médical : tiens je vais regarder s'il y a de la place et par chance j'ai un rendez vous dans 3 jours (généralement c'est 1 mois). Donc j'ai eu de la chance (sûrement suite à un désistement).

Et je me suis dit tiens si j'avais eu sous la main un doctolib.click qui, pour un médecin donné m'ouvre un onglet s'il y a un rendez vous dans les X jours (suite à une annulation donc).

Je complète ma "spec" avec mon expérience et des captures d'écran pour mon cas précis :

Le médecin a 2 lieux de consultation je souhaite si possible n'en choisir qu'un

Capture d’écran du 2021-07-20 11-26-16

On est le 20 juillet , prochain rendez vous le 26 juillet ça peut matcher yeah

Capture d’écran du 2021-07-20 11-27-40

Ha non ! c'est un remplaçant :(

Capture d’écran du 2021-07-20 11-28-56

Ok 27 aout ça match

Capture d’écran du 2021-07-20 11-30-48

A fermer donc ( car non je ne vais pas forcker et faire un plugin firefox) mais je voulais laisser une trace/expérience ;)

(et grâce à Vaccin.click je capte mieux la 5G merci)

Avoir un package.json avec des scripts et dépendances pour aider le dev

@dunglas @pirquessa que penseriez-vous d'avoir un package.json avec:

  • une dépendance web-ext
  • quelques scripts (notamment build, ou liés au lint ou à la CI)

J'ai ça localement plutôt qu'un web-ext installé globalement. J'ai mes habitudes avec yarn mais pas de souci pour avoir un npm à la place.

Avantage:

  • on maitrise les versions utilisées (avec npx comme utilisé dans la CI on a toujours la dernière version)
  • on a la même version localement et sur la CI
  • peut-être (?) plus simple pour les nouveaux contributeurs

Inconvénient: il faut ensuite gérer les updates de dépendances, donc mettre en place un outil type depfu.com que j'aime bien.

Qu'en pensez-vous ?

Problème sur les centres avec la question "avez vous déjà consulté un praticien de cet établissement"

Sur des centres tels que: https://www.doctolib.fr/vaccination-covid-19/paris/centre-de-vaccination-covid-paris-15e?highlight%5Bspeciality_ids%5D%5B%5D=5494
avec cette boite:
image

j'ai l'impression que l'extension n'arrive pas à passer cette étape pour réaliser la réservation.

J'obtiens une erreur qui est (je la fais de tête, possiblement pas 100% exacte) can't access textContent, document.getElementByid('...') is null/undefined.

Erreur qui n'est pas "créneau non disponible"

Bonjour !

Déjà, merci et bravo pour cette super idée :)
J'ai cru comprendre que si l'erreur "créneau non disponible" n'apparaissait pas, ce n'était pas bon signe.

Dans certains centres, j'ai reçu cette erreur : "Injection ARMm non disponible"
image

Je me suis dis que ça valait le coup de te partager l'info. Après toi seul peux juger si c'est utile de faire une update ou non :)
En l'état, ça aide déjà énormément de gens donc merci encore !

Bonne journée !
EDIT : si tu as besoin de plus d'infos ou quoique ce soit d'autre, n'hésite pas à me dire 👍

Utiliser l'API interne de Doctolib

Pour améliorer la stabilité de l'extension, il est proposé d'utiliser l'API interne de Doctolib.

Voici une documentation rapide du truc :

{urlCompleteDuCentre}.json

Permet d'obtenir des métadonnées qui peuvent être utilises mais pas essentielles

Exemple : https://www.doctolib.fr/pharmacie/paris/pharmacie-faidherbe.json

Exemple de réponse :

{
    "data": {
        "profile": {
            "is_directory": false,
            "organization": true,
            "subtitle": "Pharmacie",
            "id": 237135,
            "name": "Pharmacie Faidherbe ",
            "name_with_title": "Pharmacie Faidherbe",
            "name_with_title_and_determiner": "Pharmacie Faidherbe",
            "bio": "Votre pharmacie vous propose des TESTS antigéniques pour le Covid19 sur RDV\n\nLes tests antigéniques peuvent réalisés sur toutes les personnes asymptomatiques, \nsi personnes asymptomatiques de moins de 4 jours et ayant entre 18 et 65 ans",
            "website_url": "",
            "country": "fr",
            "covid_profile_message": null,
            "freemium": false,
            "pictures": [{
                "public_id": "mlrbb0iffkl24xsgttip"
            }, {
                "public_id": "vihwppoa1dowxloacfxv"
            }, {
                "public_id": "pwlol0e5a2ebmbhgmfp5"
            }],
            "cover_picture": {
                "public_id": "vihwppoa1dowxloacfxv"
            },
            "avatar_picture": {
                "public_id": "mlrbb0iffkl24xsgttip"
            },
            "agendas_with_covid_vaccination_for_general_practitioners": [],
            "vaccination_or_gp_speciality": false,
            "all_organizations_without_vaccination_feature": true,
            "vaccination_center_with_pfizer_moderna": false
        },
        "details": [{
            "insurance_card": null,
            "practice_id": 159640,
            "regulation_sector": null,
            "third_party_payer": null,
            "display_payment_means": false,
            "payment_means": {
                "cash": false,
                "check": false,
                "credit_card": false
            }
        }],
        "practitioners": [],
        "fees": [],
        "places": [{
            "id": "practice-159640",
            "address": "43 Rue Faidherbe",
            "zipcode": "75011",
            "city": "Paris",
            "floor": null,
            "latitude": 48.8537132,
            "longitude": 2.3821604,
            "elevator": false,
            "handicap": false,
            "formal_name": "Pharmacie Faidherbe",
            "reception_info": null,
            "full_address": "43 Rue Faidherbe, 75011 Paris",
            "opening_hours": [{
                "day": 1,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 2,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 3,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 4,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 5,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 6,
                "ranges": [["09:30", "19:30"]],
                "enabled": true
            }],
            "practice_ids": [159640],
            "is_aphp": false,
            "aphp_url": "http://www.aphp.fr/contenu/combien-ca-coute",
            "name": "Pharmacie Faidherbe",
            "short_name": null,
            "parking": {
                "name": "Ledru Rollin Parking SA",
                "full_address": "121 Avenue Ledru-Rollin, Paris"
            },
            "emergency_number_details": {
                "number": "15",
                "type": "Samu",
                "display_title": false
            },
            "stations": [{
                "transport_type": "metro",
                "lines": ["9"],
                "name": "Charonne"
            }, {
                "transport_type": "rer",
                "lines": ["A", "D"],
                "name": "Paris - Gare De Lyon"
            }, {
                "transport_type": "rer",
                "lines": ["A"],
                "name": "Nation"
            }]
        }]
    },
    "jsonld": {
        "profile": {
            "@context": "http://schema.org/",
            "@type": "Hospital",
            "name": "Pharmacie Faidherbe ",
            "description": "Votre pharmacie vous propose des TESTS antigéniques pour le Covid19 sur RDV\n\nLes tests antigéniques peuvent réalisés sur toutes les personnes asymptomatiques, \nsi personnes asymptomatiques de moins de 4 jours et ayant entre 18 et 65 ans",
            "medicalSpecialty": "Pharmacie",
            "legalName": null,
            "url": "/pharmacie/paris/pharmacie-faidherbe",
            "image": "//res.cloudinary.com/doctolib/image/upload/q_auto:eco,f_auto/mlrbb0iffkl24xsgttip.jpg",
            "address": {
                "@type": "PostalAddress",
                "name": "Pharmacie Faidherbe",
                "streetAddress": "43 Rue Faidherbe",
                "postalCode": "75011",
                "addressLocality": "Paris"
            },
            "paymentAccepted": "",
            "availableService": [],
            "telephone": null,
            "openingHours": ["Mo 09:00-20:00", "Tu 09:00-20:00", "We 09:00-20:00", "Th 09:00-20:00", "Fr 09:00-20:00", "Sa 09:30-19:30"]
        },
        "breadcrumbs": {
            "@context": "http://schema.org/",
            "@type": "BreadcrumbList",
            "itemListElement": [{
                "@type": "ListItem",
                "position": 1,
                "item": {
                    "@type": "Thing",
                    "name": "Doctolib",
                    "id": "Doctolib",
                    "url": null
                }
            }, {
                "@type": "ListItem",
                "position": 2,
                "item": {
                    "@type": "Thing",
                    "name": "Pharmacie",
                    "id": "Pharmacie",
                    "url": "/pharmacie"
                }
            }, {
                "@type": "ListItem",
                "position": 3,
                "item": {
                    "@type": "Thing",
                    "name": "Paris",
                    "id": "Paris",
                    "url": "/pharmacie/ile-de-france-departement-de-paris-paris"
                }
            }]
        }
    },
    "meta": {
        "title": "Pharmacie Faidherbe, Pharmacie à Paris : Prenez rendez-vous en ligne",
        "description": "Prenez RDV en ligne avec Pharmacie Faidherbe: Pharmacie. Adresse : 43 Rue Faidherbe, 75011 Paris.\n",
        "page_type": "establishmentsProfiles"
    },
    "seo": {
        "about_doctolib": {
            "title": "À propos de Doctolib",
            "links": [{
                "name": "Vaccination COVID-19",
                "url": "/vaccination-covid-19",
                "encoded": false,
                "target": "_blank",
                "hidden": false,
                "key": "vaccination_covid"
            }, {
                "name": "Test COVID - Depistage",
                "url": "/centre-depistage-covid",
                "encoded": false,
                "target": "_blank",
                "hidden": false,
                "key": "test_covid"
            }, {
                "name": "Test PCR",
                "url": "/depistage-covid-19-pcr-prelevement-naso-pharynge",
                "encoded": false,
                "target": "_blank",
                "hidden": false,
                "key": "test_pcr"
            }, {
                "name": "Consultation vidéo - Téléconsultation",
                "url": "/video_consultation",
                "encoded": false,
                "target": "_blank",
                "key": "video_consultation"
            }, {
                "name": "À propos de nous",
                "url": "https://about.doctolib.fr",
                "target": "_self",
                "encoded": true,
                "key": "about_us"
            }, {
                "name": "Carrières",
                "url": "https://careers.doctolib.fr?origin=footer",
                "target": "_blank",
                "encoded": true,
                "key": "jobs"
            }, {
                "name": "Presse",
                "url": "https://about.doctolib.fr/presse",
                "target": "_self",
                "encoded": true,
                "key": "press"
            }, {
                "name": "Besoin d'aide ?",
                "url": "/help?origin=help-desktop",
                "target": "_self",
                "encoded": true,
                "key": "help"
            }, {
                "name": "Notifications frauduleuses (tentatives de phishing)",
                "url": "/help?origin=help-desktop#section=6\u0026article=4",
                "target": "_self",
                "encoded": false,
                "key": "phishing"
            }, {
                "name": "Doctolib Deutschland",
                "url": "https://www.doctolib.de",
                "target": "_self",
                "encoded": true,
                "key": "doctolib_de"
            }]
        },
        "about_doctolib_pro": {
            "title": "Pour les professionnels de santé",
            "links": [{
                "name": "Logiciel de gestion Doctolib Pro",
                "url": "https://info.doctolib.fr?origin=home-footer\u0026utm_button=footer\u0026utm_content-group=other\u0026utm_page-url=https%3A%2F%2Fwww.doctolib.fr%2Fpharmacie%2Fparis%2Fpharmacie-faidherbe.json\u0026utm_website=doctolib_patients",
                "target": "_blank",
                "encoded": true,
                "key": "bms"
            }, {
                "name": "Doctolib Community",
                "url": "https://community.doctolib.com/",
                "target": "_blank",
                "encoded": true,
                "key": "community"
            }]
        },
        "popular_links": {
            "title": "Recherches fréquentes",
            "links": [{
                "name": "Cabinet médical Paris",
                "url": "/cabinet-medical/paris"
            }, {
                "name": "Cabinet dentaire Paris",
                "url": "/cabinet-dentaire/paris"
            }, {
                "name": "Centre de santé Paris",
                "url": "/centre-de-sante/paris"
            }, {
                "name": "Clinique privée Paris",
                "url": "/clinique-privee/paris"
            }, {
                "name": "Hôpital public Paris",
                "url": "/hopital-public/paris"
            }, {
                "name": "Établissement de Santé Privé d'Intérêt Collectif (ESPIC) Paris",
                "url": "/espic-etablissement-de-sante-prive-d-interet-collectif/paris"
            }, {
                "name": "Centre médical et dentaire Paris",
                "url": "/centre-medical-et-dentaire/paris"
            }, {
                "name": "Maison de santé Paris",
                "url": "/maison-de-sante/paris"
            }, {
                "name": "Cabinet paramédical Paris",
                "url": "/cabinet-paramedical/paris"
            }, {
                "name": "Centre laser et esthétique Paris",
                "url": "/centre-laser-et-esthetique/paris"
            }]
        },
        "similar_links": {
            "title": "Recherches associées",
            "links": [{
                "name": "Pharmacie Saint-Mandé",
                "url": "/pharmacie/saint-mande"
            }, {
                "name": "Pharmacie Le Kremlin-Bicêtre",
                "url": "/pharmacie/le-kremlin-bicetre"
            }, {
                "name": "Pharmacie Bagnolet",
                "url": "/pharmacie/bagnolet"
            }, {
                "name": "Pharmacie Ivry-sur-Seine",
                "url": "/pharmacie/ivry-sur-seine"
            }, {
                "name": "Pharmacie Levallois-Perret",
                "url": "/pharmacie/levallois-perret"
            }, {
                "name": "Pharmacie Vincennes",
                "url": "/pharmacie/vincennes"
            }, {
                "name": "Pharmacie Aubervilliers",
                "url": "/pharmacie/aubervilliers"
            }, {
                "name": "Pharmacie Issy-les-Moulineaux",
                "url": "/pharmacie/issy-les-moulineaux"
            }, {
                "name": "Pharmacie Montreuil",
                "url": "/pharmacie/montreuil"
            }, {
                "name": "Pharmacie Paris",
                "url": "/pharmacie/paris"
            }]
        }
    }
}

/booking/{urlUnique}.json ou /booking/{id}.json

Permet d'obtenir les spécifications d'un centre

Exemple de réponse :

{
    "data": {
        "profile": {
            "id": 237135,
            "name_with_title_and_determiner": "Pharmacie Faidherbe",
            "name_with_title": "Pharmacie Faidherbe",
            "speciality": null,
            "organization": true,
            "redirect_url": null,
            "language_list": "Français"
        },
        "specialities": [{
            "id": 3097,
            "name": "Pharmacien",
            "kind": "medical"
        }],
        "visit_motive_categories": [],
        "visit_motives": [{
            "id": 2607211,
            "name": "Dépistage COVID-19 test antigénique (prélèvement naso-pharyngé)",
            "visit_motive_category_id": null,
            "organization_id": 128541,
            "speciality_id": 3097,
            "ref_visit_motive_id": 6236,
            "position": 2,
            "telehealth": false,
            "vaccination_days_range": 0,
            "vaccination_motive": false,
            "covid_vaccination_set_appointment_organization": false,
            "first_shot_motive": false,
            "allow_new_patients": true,
            "allow_new_patients_on_insurance_sector": null,
            "configurations": null
        }, {
            "id": 2764585,
            "name": "1ère injection vaccin COVID-19 (AstraZeneca)",
            "visit_motive_category_id": null,
            "organization_id": 128541,
            "speciality_id": 3097,
            "ref_visit_motive_id": 7107,
            "position": 3,
            "telehealth": false,
            "vaccination_days_range": 80,
            "vaccination_motive": true,
            "covid_vaccination_set_appointment_organization": false,
            "first_shot_motive": false,
            "allow_new_patients": true,
            "allow_new_patients_on_insurance_sector": null,
            "configurations": null
        }, {
            "id": 2848143,
            "name": "2de injection vaccin COVID-19 (AstraZeneca)",
            "visit_motive_category_id": null,
            "organization_id": 128541,
            "speciality_id": 3097,
            "ref_visit_motive_id": 7108,
            "position": 4,
            "telehealth": false,
            "vaccination_days_range": 0,
            "vaccination_motive": true,
            "covid_vaccination_set_appointment_organization": false,
            "first_shot_motive": false,
            "allow_new_patients": true,
            "allow_new_patients_on_insurance_sector": null,
            "configurations": null
        }, {
            "id": 2848144,
            "name": "Injection unique vaccin COVID-19 (Janssen)",
            "visit_motive_category_id": null,
            "organization_id": 128541,
            "speciality_id": 3097,
            "ref_visit_motive_id": 7945,
            "position": 5,
            "telehealth": false,
            "vaccination_days_range": 0,
            "vaccination_motive": true,
            "covid_vaccination_set_appointment_organization": false,
            "first_shot_motive": false,
            "allow_new_patients": true,
            "allow_new_patients_on_insurance_sector": null,
            "configurations": null
        }],
        "agendas": [{
            "id": 400342,
            "booking_disabled": false,
            "booking_temporary_disabled": false,
            "landline_number": "01 43 71 41 40",
            "anonymous": true,
            "organization_id": 128541,
            "visit_motive_ids_by_practice_id": {
                "159640": [2607211, 2764585, 2848143, 2848144]
            },
            "visit_motive_ids": [2607211, 2764585, 2848143, 2848144],
            "visit_motive_ids_only_for_doctors": null,
            "practice_id": 159640,
            "speciality_id": 3097,
            "practitioner_id": null,
            "insurance_sector_enabled": false,
            "equipment_agendas_required": false
        }],
        "places": [{
            "id": "practice-159640",
            "address": "43 Rue Faidherbe",
            "zipcode": "75011",
            "city": "Paris",
            "floor": null,
            "latitude": 48.8537132,
            "longitude": 2.3821604,
            "elevator": false,
            "handicap": false,
            "formal_name": "Pharmacie Faidherbe",
            "reception_info": null,
            "full_address": "43 Rue Faidherbe, 75011 Paris",
            "opening_hours": [{
                "day": 1,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 2,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 3,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 4,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 5,
                "ranges": [["09:00", "20:00"]],
                "enabled": true
            }, {
                "day": 6,
                "ranges": [["09:30", "19:30"]],
                "enabled": true
            }, {
                "day": 0,
                "ranges": [["09:00", "13:00"]],
                "enabled": false
            }],
            "name": "Pharmacie Faidherbe",
            "practice_ids": [159640],
            "is_aphp": false,
            "aphp_url": "http://www.aphp.fr/contenu/combien-ca-coute",
            "payment_means": null,
            "regulation_sector": null,
            "insurance_card": null
        }],
        "practitioners": [],
        "availabilities_preview_compatible": false,
        "vaccination_center": false,
        "number_future_vaccinations": 0,
        "has_new_patient_rule": false
    }
}

availabilities.json?start_date={date}&visit_motive_ids={visit_motive_ids}&agenda_ids={agenda_ids}&practice_ids={practice_ids}

Permet d'obtenir les prochains créneaux disponibles.

  • {date} est la date du jour au format 2021-05-20.
  • {visit_motive_ids} est la liste des visit_motive_id. Attention, il faut sélectionner les visit_motive pour les première injection uniquement. Perso je cherche "1ère injection vaccin COVID-19" || "1re injection vaccin COVID-19" dans le champ data.visit_motives.name du endpoint /booking.
  • {agenda_ids} est la liste de tout les agendas au format {idA}-{id2}-{id3} (parfois il n'y a qu'un agenda mais aprfois plusieurs, dans le doute, je les mets tous).
  • {practice_ids} (je sais plus trop ce que c'est mais en gros je mets la valeur de data.places[0].practice_ids[0] dedans).

Exemple : https://pro.doctolib.fr/availabilities.json?start_date=2021-05-20&visit_motive_ids=2764585&agenda_ids=400342&practice_ids=159640

Exemple de réponse :

{
    "availabilities": [{
        "date": "2021-05-20",
        "slots": [],
        "substitution": null
    }, {
        "date": "2021-05-21",
        "slots": ["2021-05-21T10:35:00.000+02:00", "2021-05-21T12:20:00.000+02:00", "2021-05-21T12:35:00.000+02:00", "2021-05-21T12:50:00.000+02:00", "2021-05-21T13:35:00.000+02:00", "2021-05-21T14:35:00.000+02:00", "2021-05-21T14:50:00.000+02:00", "2021-05-21T15:20:00.000+02:00", "2021-05-21T15:35:00.000+02:00", "2021-05-21T15:50:00.000+02:00", "2021-05-21T16:20:00.000+02:00", "2021-05-21T16:50:00.000+02:00", "2021-05-21T17:05:00.000+02:00", "2021-05-21T17:20:00.000+02:00", "2021-05-21T17:35:00.000+02:00"],
        "substitution": null
    }],
    "total": 15
}

Il y a d'autres trucs mais c'est déjà un bon début… :)

Erreur Unchecked lastError value: Error: sender.tab is undefined

Bonjour,

J'ai l'impression que l'extension ne marche pas chez moi. En suivant la procédure pour le debuggage, je vois l'erreur suivante arriver en nombre toutes les 3 minutes : "Unchecked lastError value: Error: sender.tab is undefined". Voilà ce qui me semble correspondre à l'ensemble des erreurs d'une tentative de vaccin.click dans la console :

Certains cookies utilisent incorrectement l’attribut recommandé « SameSite » 2
Le cookie « cookies.js » sera bientôt rejeté car son attribut « SameSite » est défini sur « None » ou une valeur invalide et il n’a pas l’attribut « secure ». Pour en savoir plus sur l’attribut « SameSite », consultez https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite patient-desktop-c4429a3bd0a6b3129e0c.js:2:338828
Le cookie « cookies.js » sera bientôt rejeté car son attribut « SameSite » est défini sur « None » ou une valeur invalide et il n’a pas l’attribut « secure ». Pour en savoir plus sur l’attribut « SameSite », consultez https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite patient-desktop-c4429a3bd0a6b3129e0c.js:2:338828
Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://o38419.ingest.sentry.io/api/93781/envelope/?sentry_key=5e227d5a9db847db9597d931c0ea0774&sentry_version=7. Raison : échec de la requête CORS.

Unchecked lastError value: Error: sender.tab is undefined collapser.js:45
Unchecked lastError value: Error: sender.tab is undefined socialwidgets.js:692
Unchecked lastError value: Error: sender.tab is undefined supercookie.js:125
Unchecked lastError value: Error: sender.tab is undefined clobbercookie.js:35
Unchecked lastError value: Error: sender.tab is undefined clobberlocalstorage.js:35
Unchecked lastError value: Error: sender.tab is undefined dnt.js:64
Unchecked lastError value: Error: sender.tab is undefined fingerprinting.js:342
Unchecked lastError value: Error: sender.tab is undefined collapser.js:45
Unchecked lastError value: Error: sender.tab is undefined socialwidgets.js:692
Unchecked lastError value: Error: sender.tab is undefined supercookie.js:125
Cette page utilise la propriété non standard « zoom ». Envisagez d’utiliser calc() dans les valeurs des propriétés pertinentes ou utilisez « transform » avec « transform-origin: 0 0 ». util.js:23:392
Échec du chargement pour l’élément <script> dont la source est « https://maps.googleapis.com/maps/api/js/QuotaService.RecordEvent?1shttps%3A%2F%2Fwww.doctolib.fr%2Fvaccination-covid-19%2Fparis%2Fcentre-de-vaccination-covid-19-ville-de-paris%3Fhighlight%255Bspeciality_ids%255D%255B%255D%3D5494%26pid%3Dpractice-166459&3sAIzaSyDpnSscoubUpsnOs48Kt1x5LhAXPSr4gU4&7swldodw&9sdesktop-profiles-show&10e1&callback=_xdc_._47tua&key=AIzaSyDpnSscoubUpsnOs48Kt1x5LhAXPSr4gU4&channel=desktop-profiles-show&token=10941 ». centre-de-vaccination-covid-19-ville-de-paris:1:1
Object { type: "error", url: "https://www.doctolib.fr/vaccination-covid-19/paris/centre-de…highlight%5Bspeciality_ids%5D%5B%5D=5494&pid=practice-166459", location: {…}, error: {…} }

Pour information, je suis sous openSUSE Tumbleweed, avec uBlock et Privacy Badger.

English interface / tutorial

Hi !

First of all, thank you so much for this add-on. It just worked for me ! 🥳

Secondly, some of my friends do not speak french. I would like to help with an english translation of the add-on.
Since I did not find how to setup doctolib in english, I was also thinking to add more explanations in the documentation of vaccin.click about where to click on doctolib.

From where can I start ?

Thanks in advance.

En mode "Ouvrir un onglet" l'onglet s'ouvre plusieurs fois

Quand un créneau est disponible et que l'extension est en mode "Ouvrir un onglet", l'onglet du centre de vaccination s'ouvre une première fois comme attendue puis s'ouvre plusieurs fois de manière régulière.

EDIT : Je peux essayer de fixer ça cet après-midi

La réservation ne va pas jusqu'au bout

Chez moi, je n'arrive jamais à aller jusqu'au bout de la réservation.
Je pense que c'est parce qu'il y a un rechargement de page après le "j'accepte" de la modale (on passe à une adresse /appointments/XXX)
et donc on n'exécute jamais le code à partir de

// Pour qui prenez-vous ce rendez-vous ? (moi)
const masterPatientId = await waitForSelector(
'input[name="masterPatientId"]'
);
if (masterPatientId) {
masterPatientId.click();
}

Voyez-vous ça également ? @dunglas @pirquessa

"aucun créneau disponible" n'apparait pas

console vaccin click.txt

Bonjour,

Désolé si je m'y prends mal pour signaler un pb, je débute.
J'ai regardé dans la console pour voir s'il y avait des "aucun créneau disponible", mais je n'en ai vu aucun.
Parmi tous les messages d'erreur, je n'ai pas su lequel vous copier alors j'ai copié l'ensemble de la console dans un bloc note, ci joint.

Merci pour cette extension malgré tout, lorsqu'elle fonctionne ça doit être super :)

Imposible d'ajouter a Firefox

L'extension ne peut pas être ajoutée à Forefox. Le bouton "Ajouter à Firefox" n'est pas activé. J'utilise Firefox 88.1.4. Merci d'avance pour votre support

Recherche seulement toutes les 3 minutes?

je cherche à connaitre la fréquence de recherche.
J'ai vu une référence à "toutes les 3 minutes" dans une issue
Toutes les 3 minutes est à mon sens trop long, dans ce use case on est à l'échelle de la poignée de seconde.
J'ai mis un grand nombre de centres (pour tests), j'ai bien des onglets qui s'ouvrent parfois, mais les créneaux sont irrémédiablement déjà pris. Je soupçonne que le délai soit trop long.

Doctolib se protège avec une file d'attente...

Depuis hier, rien ne se passait avec l'extension... En regardant maintenant, je vois que Doctolib se protège contre notre spam...

Capture

Il faut vraiment limiter le nombre de calls en parallèle j'ai l'impression :(

Pouvoir limiter à des intervalles de dates

Permettre de configurer un interval de date pour la première et (possiblement deuxième injection) serait utile pour que l'on puisse éliminer automatiquement les possibilités qui tombe pendant ces vacances.

La date est déjà parsé donc le test est aisé. Mais je bloque plus sur comment définir une interface simple pour choisir des intervalles de dates possible. Un widget déjà existant?

Motif non trouvé pour le CHU de Caen

Bonjour,

J'ai un souci avec le centre de vaccination https://www.doctolib.fr/vaccination-covid-19/caen/chu-caen-vaccination-covid?highlight%5Bspeciality_ids%5D%5B%5D=5494

j'ai le message d'erreur :
Catégorie de motif non trouvé. Motifs disponibles : Choisissez une catégorie, Personnes de plus de 12 ans, professions prioritaires, Professionnels avec obligation vaccinale

Pourtant, j'ai cliqué sur le centre et choisit les motifs comme montré ci-dessous, mais ces derniers ne sont pas pris en compte:
Capture d’écran de 2021-07-21 09-54-20

Je précise que je suis dans le sud et que j'essaie de réserver dans un CHU en Normandie, est-ce que ça peut jouer ?

On ne devrait pas synchroniser l'état de la "surveillance des RDV"

Je suis en train d'installer une nouvelle machine, et j'ai donc synchronisé mon Firefox.
Et je n'ai pas envie que vaccin.click s'exécute sur les deux machines à la fois, ça me semble contre-productif.

Du coup je pense que l'état de la "surveillance des RDV" devrait être stocké dans le stockage local plutôt que synchronisé. Qu'en penses-tu @dunglas ?

utiliser doctolib à l'étranger?

Salut, merci beaucoup pour ce petit bijou!
Est ce qu'il est facile d'adapter le code pour en faire la même utilisation avec Doctolib à l'étranger? En Allemagne aussi la réservation se fait uniquement avec doctolib mais il est actuellement impossible d'ajouter les centres de vaccination allemands à la liste ou même de les rechercher (doctolib.fr cherche exclusivement en France...)

Ajouter le bouton "ajouter à la liste" dans la page du centre

Aujourd'hui les boutons "ajouter" ne sont que dans les listes de résultat, mais pas sur les pages d'un centre proprement dit. Cela pourrait être plus simple pour tester son développement, car les listes de résultat sur doctolib sont assez changeantes alors qu'avoir des liens directs vers quelques centres est plus stable.

Impossible de cliquer sur le slot avec le titre jeu. 29 juil. 13:25

Hello,

Merci beaucoup pour cette extension, je viens de détecter un bug au moment de la réservation (book.js) lié au format de la date.

image

Dans mon cas, il y a un point après "juil" ce qui fait au final "jeu. 29 juil. 13:25"

Ca a l'air de ne pas passer

// format : lun. 17 mai 08:54
const parts = slot.title.match(/([0-9]+) ([a-z]+) ([0-9]+:[0-9]+)/);

Il faudrait gérer le point juste après le mois dans l'expression régulière

https://github.com/dunglas/vaccin.click/blob/main/content_scripts/doctolib/book.js#LC281

Probleme de prise de RDV auto

Hello !

Tout d'abord, je voudrai vraiment te remercier pour cette extension ! c'est une super initiative !

J'ai essayé de paramétrer l'extension et j'ai pu ajouter les centres de vaccination près de chez moi. Par contre la prise de rendez-vous automatique ne semble pas fonctionner. Voici un fichier log de la console. Je ne sais pas si c'est un bug ou quelque chose que j'aurai mal fait...

Merci encore !
console-export-2021-5-19_12-30-33.txt

Motif non trouvé pour le centre de nogent sur marne

Centre: https://www.doctolib.fr/centre-de-sante/nogent-sur-marne/accueil-ambulatoire-de-recours-ville-de-nogent-sur-marne-adp94?highlight%5Bspeciality_ids%5D%5B%5D=5494

Erreur:
17:15:30 - Centre de vaccination et dépistage Covid-19 - Nogent et le Perreux sur Marne - Echec - Catégorie de motif non trouvé. Motifs disponibles : Choisissez une catégorie, Patient de plus de 18 ans, Patient de 16 ans à 18 ans de très haute priorité (cf. liste HAS) ou proche de personnes immunodéprimées

(pas le temps de traiter maintenant, mais je traque)

Message d'erreur: "Impossible de cliquer sur le slot"

Bonjour,

J'essaie d'utiliser votre extension avec un centre de vaccination sur Lyon et il y a le message d'erreur qui défile en boucle "Impossible de cliquer sur le slot avec le titre jeu. 1 juillet "

Object { type: "error", url: "https://www.doctolib.fr/vaccination-covid-19/lyon/vaccinatio…highlight%5Bspeciality_ids%5D%5B%5D=5494&pid=practice-163661", message: "Impossible de cliquer sur le slot avec le titre jeu. 1 juil. 11:50", location: {…}, error: {…} }

Avez-vous une solution ?
Merci bien d'avance.

Nouvel onglet n'apparrait pas

Bonjour
Tout d'abord, bravo pour l'initiative et ce bel outil.

Je l'ai bien utilisé sur mon compte et ça a bien marché.
Je voulais renouveler l'expérience pour ma compagne, donc je me connecte sur son compte, sélectionne les centre de vaccination et plus rien ne se passe.

J'ai donc effacé toutes les données du modules puis de nouveau sélectionné les centre et rien ne se passe toujours. Testé sur 3 pc différents.

Je suis retourné sur mon compte et toujours pareil, plus rien ne bouge, pas de nouvel onglet.

Je me suis dit, le site doctolib a trouvé un moyen pour bloquer.

Pour le moment je retourne à la bonne vieille méthode, clic manuel :)

Problèmes de mise à jour qui s'arrête

Salut,
j'ai l'impression que parfois les mises à jour s'arrêtent:
Capture d’écran de 2021-05-25 18-44-38

Possible que ce soit parce que j'ai "pausé" puis redémarré? Mais les horaires sont assez différents tout de même.
Une piste possible ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.