logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 23-02-2024 00:48:02

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

[probablement résolu]Extraire les rdv du don du sang

Yop,
dans l'idée d'envoyer sur mobilizon les collectes mobiles de don du sang (y devrait pas y en avoir trop, la plupart listés sont des points fixe), j'ai besoin de "crawler" leur site pour trouver tous les lieux de collecte français & leur date d'ouverture.
https://dondesang.efs.sante.fr/trouver-une-collecte

Le truc c'est que leur interface est... Ce qu'elle est. Ça propose une carte et une liste qui n'affiche... Que ce qui est affiché sur la carte.
Chaque mouvement de carte envoie un GET pour re-charger les données de la liste (et des points de la carte) ça donne ce truc :

https://dondesang.efs.sante.fr/get-collects-ajax?NorthEastLongitude=-3.5049327354615216&NorthEastLatitude=47.87991528030902&SouthWestLongitude=-3.577070410986894&SouthWestLatitude=47.859624990487134&CenterLongitude=-3.5410015732242077&CenterLatitude=47.86977013539808&wmap=1109&hmap=485



Alors moi pas con "hey suffit de dézoomer et tu chopes tous les points". Ben non. Les points locaux (bleus) sont cachés quand on prend une trop grande surface. Or c'est ceux là que je veux >_>

Je sèche kernal_panic.gif
Seul moyen que je vois à ce point c'est de bruteforce toute la france en faisant des petits rectangles géographique jusqu'à couvrir toute la surface en quelques centaines de requêtes (granularité des rectangles en question à définir).

y aurait une solution auquel j'ai pas pensé ?

Dernière modification par otyugh (24-02-2024 19:02:35)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#2 23-02-2024 08:31:39

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [probablement résolu]Extraire les rdv du don du sang

hello
peut être plus simple en passant par la wink
https://www.data.gouv.fr/fr/datasets/do … /resources
ressources au format xlsx ou csv

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#3 23-02-2024 09:27:13

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [probablement résolu]Extraire les rdv du don du sang

Génial, je regarde ça merci.gif
EDIT : un gros défaut de ce jeu de donné c'est qu'il y a pas "quand ça a été publié". C'est con mais c'est un peu important quand on veut pas re-publier un contenu existant. Mon seul moyen d'éviter de renvoyer dix fois la même c'est de faire une "marque" "coordonnées gps + date" et de la stocker pour pas la renvoyer à chaque export. Alors qu'avec la date d'envoi de l'évènement il suffirait d'envoyer que les nouveaux évènements.
M'enfin à ce niveau j'aurai dû faire pareil en bien pire avec la carte roll.

Il manque aussi les URL du site pour prendre rendez-vous, ce qui serait quand même super important. Mais y a ptéte moyen d'inférer.

Dernière modification par otyugh (23-02-2024 09:39:28)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#4 23-02-2024 20:08:18

lann
Membre
Lieu : Bretagne
Distrib. : Debian Bookworm
Noyau : Linux 6.1.0-10-amd64
(G)UI : XFCE
Inscription : 28-04-2015

Re : [probablement résolu]Extraire les rdv du don du sang

J'ai l'impression que ces données ne sont pas à jour : 24/05/2023

Hors ligne

#5 23-02-2024 20:50:43

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [probablement résolu]Extraire les rdv du don du sang

Idéalement je ferai les requête directement sur l'api de l'EFS. https://oudonner.api.efs.sante.fr/carto … index.html

virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#6 24-02-2024 18:26:19

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [probablement résolu]Extraire les rdv du don du sang

[probablement résolu]Extraire les rdv du don su sang



ta pas mis

su -

out.gif


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#7 24-02-2024 20:48:44

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [probablement résolu]Extraire les rdv du don du sang

skree.jpg

virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#8 25-02-2024 14:12:32

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [probablement résolu]Extraire les rdv du don du sang

Du coup je pense que je vais marteler /carto-api/v3/samplingcollection/searchbyfilenumber en partant de 1 jusqu'à ce que ça s'arrête.
J'ai pas trop trouvé d'alternative sinon de trouver une liste de toutes les villes de france ou de tous les code postaux. Vu que c'est pas fourni.

Edit : nah mauvaise idée : y en a au moins 1000000004 (j'ai tenté au pif de monter jusqu'à ce que ça marche plus).

Dernière modification par otyugh (25-02-2024 15:02:03)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#9 25-02-2024 15:07:05

--gilles--
Membre
Lieu : Orléans - La Source
Distrib. : Debian 12
Noyau : Linux 6.1.0-18-amd64
(G)UI : Gnome - mutter 43.8-0+deb12u1
Inscription : 15-02-2016

Re : [probablement résolu]Extraire les rdv du don du sang

Bonjour Otyugh, l'INSEE fait des fichiers et des API sur les communes, cantons, départements etc :

https://www.insee.fr/fr/information/2560452

Si tout le monde pense pareil, c'est qu'aucune personne ne pense beaucoup.
 Intel® Core™2 Duo E8500  × 2
4,0 Gio DDR3 - 1333 MHz
Et si vous cherchiez votre solution dans le wiki => https://debian-facile.org/accueil palestine.png

Hors ligne

#10 27-02-2024 02:19:21

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [probablement résolu]Extraire les rdv du don du sang

Du coup l'approche par codepostal était un fiasco, y en a bien trop.

L'approche finalement la plus économe était géographique. Je fais une rectangle sur la france. Puis je fais une fonction recursive et pour chaque niveau de zoom je découpe en "4" la zone (parce que tout prendre en une fois ne peut pas marcher : y a une limite de résultats, et les évènements locaux sont cachés si on zoom pas jusqu'à un certain point).

//select france
$nela=51;
$nelo=9;
$swla=42;
$swlo=-5;

$i=0;
function scout($nela,$nelo,$swla,$swlo){
  global $i;
  $i++;
  $r=json_decode(curl('https://oudonner.api.efs.sante.fr/carto-api/v3/samplingcollection/searchinsquare?NorthEastLatitude='.$nela.'&NorthEastLongitude='.$nelo.'&SouthWestLatitude='.$swla.'&SouthWestLongitude='.$swlo.'&UserLatitude=0&UserLongitude=0'));
  $c=(count($r->samplingLocationCollections)+count($r->samplingLocationEntities_SF));
  if($c>=100){
    echo '-';
    $hla=(($nela+$swla)/2);
    $hlo=(($nelo+$swlo)/2);
    return array_merge(scout($nela,$nelo,$hla,$hlo),scout($hla,$nelo,$swla,$hlo),scout($nela,$hlo,$hla,$swlo),scout($hla,$hlo,$swla,$swlo));
  }else{
    echo '+('.$c.')';
    return $r->samplingLocationCollections;
  }
}

echo count(scout($nela,$nelo,$swla,$swlo)).' '.$i;



Je pensais qu'au bout d'un moment, j'aurai tout en zoomant graduellement. Certes y a un cap de 100 résultat mais l'idée était "si 100 résultats : redivise en 4 les zones" et en évitant le cap, obtenir tous les résultats (en théorie ça se tenait je veux dire >_<).
Résultat :
- Avec un cap de 100, j'obtiens 5 découpage, et 280 collectes en france.
- Avec un cap de 80 (pourquoi pas !), 245 découpages et 5038 collectes !?
- Avec un cap de 40 (perdu pour perdu), 481 découpages et 5172 collectes.

Hypothèse : faut que je force un niveau minimum de zoom. Normalement si je fais confiance à l'API le cap de 100 est le bon tout de même - mais peut-être que des points sont cachés si je demande une zone trop large à la fois ?

Edit : Gaaah, non plus. Même en forçant un découpage très fin, je trouve encore des collectes ninjas. En fait le rendement est encore plus mauvais qu'en se basant juste sur la quantité des évènements pour re-diviser : 1369 découpages => 5158

Hypothèse 2 : y a des évènements de collecte qui "pèsent" plusieurs évènements et qui sont coupés. Peut-être. Genre plusieurs collectes au même endroit. Et du coup que je manque bêtement.

Edit : ...La table {collections} était sexy, mais déjà ça me fait dépasser des 100 resultat/requête (et donc c'est pas raccord avec le doc).
- cap 80 : 249 découpage 5075 résultats
- cap 40 : 409 découpage 5171 résultats
Je me rapproche (ou pas ,400 requêtes ça reste absurde) mais je rate décidément un truc >_>

Cela dit je pense que je vais abandonner là, on va dire "assez bon" un moment ! (j'vais juste faire une fois une demande ultra découpée de la carte voir jusqu'à combien d'évènement je rate - mine de rien ça me frustre cette histoire - et pour ceux que ça inquiète : oui j'utilise un cache derrière curl pour pas ddoser leur site avec mes essais tongue)
-cap 20 : 989 découpages 5208 résultats. Demain si j'ai le courage je fais un diff entre ça et mon autre et j'essaye de comprendre pourquoi les résultats sont cachés >_>

Dernière modification par otyugh (27-02-2024 03:23:51)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#11 27-02-2024 20:09:16

lann
Membre
Lieu : Bretagne
Distrib. : Debian Bookworm
Noyau : Linux 6.1.0-10-amd64
(G)UI : XFCE
Inscription : 28-04-2015

Re : [probablement résolu]Extraire les rdv du don du sang

Tu pourrais essayer une petite zone ou il y a quelques évènements que tu pourras zoomer à fond pour savoir à quel cap tu auras tous ces évènements

Hors ligne

#12 27-02-2024 22:17:24

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [probablement résolu]Extraire les rdv du don du sang

Ben apparemment le niveau varie, mais j'en comprends pas les critères. Quand j'utilisai la carte ça semblait assez intuitif : à un certain niveau de zoom "zblam" tu as tous les évènements "bleus" de collecte.
(j'aurai bien cherché plus loin mais le boulot me rattrape, pas possible d'y rester 3h comme hier ~ X_X)

En tous cas c'est très rigolo comme problèmes, j'ai l'impression d'être dans un de ces jeux d'énigmes ^^'


EDIT : Je suis revenu dessus, y avait un critère "UserLatitude/UserLongitude" je l'ai mis au milieu de chaque requête et les résultats semblent s'améliorer. En moins de 300 clip j'ai tous les évènements de france à priori (5295). J'ai tenté de redécouper de plusieurs manières et j'obtiens pas plus de résultat. Donc on dirait que j'ai ma "meilleur recette" ; même si je comprends pas trop comment ça marche derrière >_<

EDIT : oh et y a un critère 'Limit' dans l'API qui est super prometteur. Sauf que les requêtes sont ultra ralenties quand on y touche. Du coup pas utilisable.

Dernière modification par otyugh (28-02-2024 23:03:34)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

#13 12-03-2024 04:17:01

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [probablement résolu]Extraire les rdv du don du sang

Résultat : 387b59c5929fbc64.png

Dernière modification par otyugh (12-03-2024 04:17:13)


virtue_signaling.pngpalestine.png
~1821942.svg

Hors ligne

Pied de page des forums