[CROUS] Logement, je vous aide à trouver votre chambre
Je sais que beaucoup de kheys cherchent une chambre en résidence CROUS
Je vous montre comment je faisais pour chopper un appartement de roi même quand c'était trop tard
Actuellement, des milliers de jeunes étudiants bombardent le site trouverunlogement.crous.fr pour avoir une chance de vivre le CROUS dream en résidence
Ils comptent sur la chance pour être la au bon moment quand une chambre se libère
Cependant vous pouvez contrôler cette chance en étant au courant des disponibilités avant TOUT le monde
Donc ici, je vous montre comment utiliser l'API (pas protégée) du CROUS pour faire des requêtes sur les logements disponibles dans une zone géographique donnée
Il suffit simplement de faire une requête HTTP à l'adresse suivante :
https://trouverunlogement.lescrous.fr/api/fr/search/26
Avec une la method POST et les headers suivants :
Content-Type: "application/json"
Accept: "application/ld+json, application/json"
Bien sûr, il faut lui donner des paramètres en mettant dans le body du JSON :
{"precision":5,"need_aggregation":true,"page":1,"pageSize":100,"sector":null,"idTool":26,"occupationModes":["alone"],"equipment":[],"price":{"min":0,"max":null},"location":[{"lon":3.2323,"lat":51.32323},{"lon": 3.7898,"lat":51.23944}]};
En remplacent les champs lat et lon de location vous pouvez définir le 'rectangle' définit à partir de ces deux coordonnées, qui correspond à l'endroit où vous faites votre recherche
La requête vous renvoie du JSON. Un exemple de retour :
{"results":{"total":13,"page":0,"pageSize":24,"items":[{"id":1877,"medias":[],"area":{"min":50,"max":50},"bedCount":2,"bedroomCount":1,"beds":[{"count":2,"type":"mobile"}],"roomCount":2,"bookingData":{"amount":10000,"free":false},"code":26,"occupationModes":[{"type":"alone","rent":{"min":49436,"max":49636}}],"label":"T2","reference":"5","studyLevel":{"min":null,"max":null},"equipments":[{"id":"d090b6e0-fa0e-11e7-89ed-005056940822","category":"B\u00e2timent","label":"Unit\u00e9 De Vie"},{"id":"d090e186-fa0e-11e7-89ed-005056940822","category":"B\u00e2timent","label":"WC"},{"id":"d0910683-fa0e-11e7-89ed-005056940822","category":"B\u00e2timent","label":"Douche"},{"id":"d0912861-fa0e-11e7-89ed-005056940822","category":"B\u00e2timent","label":"Evier + plaque"},{"id":"d0914ae7-fa0e-11e7-89ed-005056940822","category":"B\u00e2timent","label":"Frigo"}],"residence":{"id":"273ca685-011b-11e8-89ed-005056940822","label":"RESIDENCE PARC KENNEDY","address":"42 RUE MATHEAS 60000 BEAUVAIS","code":4,"medias":[{"src":"273ca685-011b-11e8-89ed-005056940822\/5b0531e260736-Beauvais_res_ParcKennedy_ext.jpg","description":null},{"src":"273ca685-011b-11e8-89ed-005056940822\/5b0532dd2a1af-Beauvais_res_ParcKennedy_Parking.jpg","description":null},{"src":"273ca...
Le 09 septembre 2022 à 00:19:28 :
J'ai pas tout pigé mais je up pour l'effort, si ça peux aider des kheys je dis alonzykoi
La partie la plus difficile à trouver, c'est ce que je viens de décrire, personne ne cherche ce genre d'information
Avec ça, les kheys qui savent un peu coder peuvent automatiser et avoir les logements en premiers
Merci pour le up khey
Bon, voilà un script nodejs qui permet d'utiliser les informations que je vous donne :
const fetch = require("node-fetch");
var ovh = require('ovh')({
endpoint: 'ovh-eu',
appKey: '',
appSecret: '',
consumerKey: ''
});
// Paramètres
const x = { lon: 3.0921, lat: 50.6499},
y = { lon: 3.1745, lat: 50.5946};
const numeroTelephone = '00XXXXXXXX';
// Filtres de recherche de logement CROUS
const body = {"precision":5,"need_aggregation":true,"page":1,"pageSize":100,"sector":null,"idTool":26,"occupationModes":["alone"],"equipment":[],"price":{"min":0,"max":null},"location":[{"lon":x.lon,"lat":x.lat},{"lon":y.lon,"lat":y.lat}]};
var oldItems = [];
initialize();
var interval = setInterval(process, 5000);
function initialize(){
fetchItems(setOldItems);
}
function setOldItems(items){
oldItems = items;
}
function process(){
fetchItems(checkItems);
}
function fetchItems(func){
// Requête vers l'api cachée de trouverunlogement.lescrous.fr
fetch("https://trouverunlogement.lescrous.fr/api/fr/search/26", {
method: "POST",
body: JSON.stringify(body),
headers: { "Content-Type": "application/json", "Accept": "application/ld+json, application/json"}
})
.then(res => res.json())
.then(json => func(json.results.items))
.catch(err => console.log(err));
}
function checkItems(items){
let newItems = [];
console.log(items.length);
items.forEach(function(it, id, arr){
if(itemIsNew(it))
newItems.push(it);
});
if(newItems.length != 0){
sendSMS(numeroTelephone, buildMessageFor(newItems));
}
updateOldItems(items);
}
function sendSMS(number, message){
ovh.request('POST', '/sms/sms-fl97930-1/jobs', {
sender: 'LaFleurBOT',
message: message,
senderForResponse: false,
noStopClause: true,
receivers: [number]
}, function (errsend, result) {
console.log(errsend, result);
});
}
function buildMessageFor(items){
let message = ''+ items.length + ' nouveau(x) logement(s) disponible(s) :\r\n';
for (item of items){
message += '- ' + item.label +' dans ' + item.residence.label + '\r\n';
}
return message;
}
function idFor(item){
return item.id + item.label + item.residence.label;
}
function itemIsNew(item){
for(i of oldItems){
if(idFor(i) == idFor(item))
return false;
}
oldItems.push(item);
return true;
}
function updateOldItems(items){
let newOldItems = [];
for(i of oldItems){
if(itemIsIn(i, items)){
newOldItems.push(i);
}
}
oldItems = newOldItems;
}
function itemIsIn(i, is){
for(j of is){
if(idFor(i) == idFor(j))
return true;
}
return false;
}
Ça va pas me servir personnellement mais c'est lourd
Données du topic
- Auteur
- LeRoiSalomon
- Date de création
- 9 septembre 2022 à 00:15:19
- Nb. messages archivés
- 51
- Nb. messages JVC
- 47