Created
February 14, 2021 14:39
-
-
Save Thomas-X/d59e4061ebb4cdc22d07985eb418860a to your computer and use it in GitHub Desktop.
estimates your non-existant chances of getting a house in the netherlands as a normal, average, adult working person
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fetch = require("node-fetch2") | |
const datefns = require("date-fns"); | |
fetch("https://www.woningnetalmere.nl/webapi/verantwoording/verantwoordingv2?vanaf=10-02-2020", { | |
"headers": { | |
"accept": "*/*", | |
"accept-language": "nl-NL,nl;q=0.9,en-US;q=0.8,en;q=0.7,af;q=0.6", | |
"content-type": "application/json; charset=utf-8", | |
"sec-ch-ua": "\"Chromium\";v=\"88\", \"Google Chrome\";v=\"88\", \";Not A Brand\";v=\"99\"", | |
"sec-ch-ua-mobile": "?0", | |
"sec-fetch-dest": "empty", | |
"sec-fetch-mode": "cors", | |
"sec-fetch-site": "same-origin", | |
"x-requested-with": "XMLHttpRequest", | |
}, | |
"referrer": "https://www.woningnetalmere.nl/Verhuurd", | |
"referrerPolicy": "strict-origin-when-cross-origin", | |
"body": null, | |
"method": "GET", | |
"mode": "cors" | |
}) | |
.then(x => | |
x.json().then(f => { | |
const verantwoordingen = f["Verantwoordingen"] | |
// Woning | |
// { | |
// Adrestekst: 'Wagenmakerbaan 9 -H', | |
// Woonplaats: 'Almere', | |
// Wijk: 'Wijk 02 Almere Stad', | |
// NettoHuur: 633, | |
// VestigingEigenaar: 'De Alliantie Almere', | |
// Eenheiddetailsoort: 'Portiekflat', | |
// Doelgroep: 'Jongeren', | |
// KamersAantal: 2, | |
// AantalReacties: 260, | |
// ToewijzingsDatum: '08-02-2021', | |
// PublicatieBeginddatum: '04-12-2020', | |
// Verantwoording: 'De woning is verhuurd aan de 1e kandidaat (27-07-2011)' | |
// }, | |
const sums = {} | |
const avgs = {} | |
const finishedObj = { | |
verantwoording: [] | |
} | |
for (const woning of verantwoordingen) { | |
sums.reacties = woning.AantalReacties; | |
let str; | |
if (woning.Verantwoording.indexOf(" kandidaat") != -1) { | |
let idx = woning.Verantwoording.indexOf(" kandidaat"); | |
str = woning.Verantwoording.substr(idx - 3, 2); | |
} | |
let type; | |
if (woning.Verantwoording.includes("bemiddeling")) { | |
type = "bemiddeling" | |
} else if (woning.Verantwoording.includes("Loting")) { | |
type = "loting" | |
} else { | |
type = "fair" | |
} | |
finishedObj["verantwoording"].push( | |
{ | |
kandidaat: str === undefined ? 0 : Number(str.trim()), | |
type, | |
dagenTotToewijzing: datefns.differenceInDays( | |
new Date(woning.ToewijzingsDatum.split('-').reverse()), new Date(woning.PublicatieBeginddatum.split('-').reverse()) | |
), | |
AantalReacties: woning.AantalReacties | |
} | |
) | |
} | |
let sumDagenTotToewijzing = 0; | |
let sumBemiddeling = 0; | |
let sumKandidaat = 0; | |
let sumReacties = 0; | |
let sumReactiesLoting = 0; | |
for (const entry of finishedObj["verantwoording"]) { | |
sumKandidaat += entry.kandidaat; | |
if (typeof entry.AantalReacties === "number" && !isNaN(entry.AantalReacties) && entry.type === "fair") { | |
sumReacties += Number(entry.AantalReacties) | |
} else if (typeof entry.AantalReacties === "number" && !isNaN(entry.AantalReacties) && (entry.type === "fair" || entry.type === "loting")){ | |
sumReactiesLoting += Number(entry.AantalReacties) | |
} | |
sumBemiddeling += entry.type === "bemiddeling" ? 1 : 0 | |
if (typeof entry.dagenTotToewijzing === "number" && !isNaN(entry.dagenTotToewijzing)) { | |
sumDagenTotToewijzing += entry.dagenTotToewijzing < 0 ? 0 : entry.dagenTotToewijzing; | |
if (isNaN(sumDagenTotToewijzing)) { | |
throw entry; | |
} | |
} else { | |
console.log(entry) | |
} | |
} | |
let x = (plek) => { | |
let total = 0; | |
for (const entry of finishedObj["verantwoording"]) { | |
if (entry.kandidaat === plek) { | |
total++ | |
} | |
} | |
return total; | |
} | |
let l = finishedObj["verantwoording"].length | |
let o = l - sumBemiddeling; | |
console.log(` | |
Gemiddelde dagen tot toewijzing: ${(sumDagenTotToewijzing / l).toFixed(2)} | |
Aantal bemiddeling (uit ${l}): ${sumBemiddeling} (${((sumBemiddeling / l) * 100).toFixed(2)}%) | |
Gemiddelde kandidaat winnaar (uit ${l - sumBemiddeling}): ${sumKandidaat / (l - sumBemiddeling)} | |
Gemiddeld aantal reacties per woning: ${sumReacties / o} | |
Gemiddeld aantal reacties per woning (inclusief loting): ${sumReactiesLoting / o} | |
1ste plek winnaar kans: ${(( x(1) / o) * 100).toFixed(2)}% | |
2de plek winnaar kans: ${(( x(2) / o) * 100).toFixed(2)}% | |
3de plek winnaar kans: ${(( x(3) / o) * 100).toFixed(2)}% | |
4de plek winnaar kans: ${(( x(4) / o) * 100).toFixed(2)}% | |
5de plek winnaar kans: ${(( x(5) / o) * 100).toFixed(2)}% | |
6de plek winnaar kans: ${(( x(6) / o) * 100).toFixed(2)}% | |
7de plek winnaar kans: ${(( x(7) / o) * 100).toFixed(2)}% | |
8de plek winnaar kans: ${(( x(8) / o) * 100).toFixed(2)}% | |
9de plek winnaar kans: ${(( x(9) / o) * 100).toFixed(2)}% | |
10de plek winnaar kans: ${(( x(10) / o) * 100).toFixed(2)}% | |
11de plek winnaar kans: ${(( x(11) / o) * 100).toFixed(2)}% | |
12de plek winnaar kans: ${(( x(12) / o) * 100).toFixed(2)}% | |
13de plek winnaar kans: ${(( x(13) / o) * 100).toFixed(2)}% | |
14de plek winnaar kans: ${(( x(14) / o) * 100).toFixed(2)}% | |
15de plek winnaar kans: ${(( x(15) / o) * 100).toFixed(2)}% | |
`) | |
}) | |
).catch(err => console.log(err)) |
Nvm heb 'm al :) Leuke code! ben zelf ook bezig met de api
Nvm heb 'm al :) Leuke code! ben zelf ook bezig met de api
@MagicanFury Je kan de code altijd copy-pasten in https://npm.runkit.com/playground en daarin runnen, hoef je niet lokaal packages te installeren ;)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Kun je een console log toevoegen aan de git?