Added cut down script and fixed how data is fetched
This commit is contained in:
122
index.js
122
index.js
@@ -20,7 +20,17 @@ app.use('/rep', async (req, res) => {
|
||||
|
||||
if (!lat || !lon) return
|
||||
|
||||
const f = fs.readFileSync(path.join(__dirname, 'public/circonscriptions-legislatives.json'), 'utf-8')
|
||||
const closestCity = await fetch(
|
||||
`https://geo.api.gouv.fr/communes?lat=${lat}&lon=${lon}`
|
||||
);
|
||||
const body = await closestCity.json();
|
||||
let codeDepartement = String(body[0]?.codeDepartement)
|
||||
|
||||
if (!codeDepartement || codeDepartement === "") return
|
||||
|
||||
codeDepartement = codeDepartement.padStart(3, "0");
|
||||
|
||||
const f = fs.readFileSync(path.join(__dirname, `public/cirs/${codeDepartement}.json`), 'utf-8')
|
||||
const data = JSON.parse(f)
|
||||
|
||||
gl = new GeoJsonGeometriesLookup(data)
|
||||
@@ -42,45 +52,77 @@ app.use('/rep', async (req, res) => {
|
||||
const repFile = fs.readFileSync(path.join(__dirname, `public/reps/${lookupTable[code]}.json`), 'utf-8')
|
||||
|
||||
res.end(repFile)
|
||||
|
||||
/**
|
||||
* GENERATE INITIAL DATA
|
||||
* Basically a bad crawler made in an hour
|
||||
*/
|
||||
|
||||
// const output = {}
|
||||
|
||||
// for (let i = 500; i < lookupTable.length; i++) {
|
||||
// const repId = lookupTable[i]
|
||||
// console.log(repId)
|
||||
|
||||
// const response = await fetch(`https://www.assemblee-nationale.fr/dyn/deputes/${repId}`)
|
||||
// const body = await response.text()
|
||||
|
||||
// const depRegex = new RegExp(/(data-content=\"\/dyn\/carte\/departement\/)([A-Za-z0-9]{2,})/g)
|
||||
// const cirRegex = new RegExp(/(\?circonscriptionNumero=)([A-Za-z0-9]{1,})/g)
|
||||
|
||||
// const depString = body.match(depRegex)?.[0]?.split('departement/')?.[1]
|
||||
// const cirString = body.match(cirRegex)?.[0]?.split('circonscriptionNumero=')?.[1]
|
||||
|
||||
// if (!depString || !cirString) {
|
||||
// output[`WRONG-WRONG`] = repId
|
||||
|
||||
// return
|
||||
// }
|
||||
|
||||
// const depStringPad = String("0000" + depString)
|
||||
// const cirStringPad = String("0000" + cirString)
|
||||
|
||||
// const rep = {
|
||||
// departement: depStringPad.substring(depStringPad.length - 3),
|
||||
// circo: cirStringPad.substring(cirStringPad.length - 2)
|
||||
// }
|
||||
|
||||
// output[`${rep.departement}-${rep.circo}`] = repId
|
||||
// }
|
||||
|
||||
// res.json(output)
|
||||
})
|
||||
|
||||
app.listen(PORT, () => console.log(`Server listening on port: ${PORT}`));
|
||||
|
||||
/**
|
||||
* CUT DOWN CIRCO JSON
|
||||
*/
|
||||
// const f = fs.readFileSync(path.join(__dirname, 'public/circonscriptions-legislatives.json'), 'utf-8')
|
||||
// const data = JSON.parse(f)
|
||||
|
||||
// const features = Object.values(data.features)
|
||||
|
||||
// const departements = groupBy(features, e => e.properties['REF'].substring(0, 3));
|
||||
|
||||
// for (const [key, value] of departements.entries()) {
|
||||
// const output = {
|
||||
// "type": "FeatureCollection",
|
||||
// "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
|
||||
// "features": value
|
||||
// }
|
||||
// fs.writeFileSync(path.join(__dirname, `public/cirs/${key}.json`), JSON.stringify(output))
|
||||
// }
|
||||
|
||||
// function groupBy(list, keyGetter) {
|
||||
// const map = new Map();
|
||||
// list.forEach((item) => {
|
||||
// const key = keyGetter(item);
|
||||
// const collection = map.get(key);
|
||||
// if (!collection) {
|
||||
// map.set(key, [item]);
|
||||
// } else {
|
||||
// collection.push(item);
|
||||
// }
|
||||
// });
|
||||
// return map;
|
||||
// }
|
||||
|
||||
/**
|
||||
* GENERATE INITIAL DATA
|
||||
* Basically a bad crawler made in an hour
|
||||
*/
|
||||
// const output = {}
|
||||
|
||||
// for (let i = 500; i < lookupTable.length; i++) {
|
||||
// const repId = lookupTable[i]
|
||||
// console.log(repId)
|
||||
|
||||
// const response = await fetch(`https://www.assemblee-nationale.fr/dyn/deputes/${repId}`)
|
||||
// const body = await response.text()
|
||||
|
||||
// const depRegex = new RegExp(/(data-content=\"\/dyn\/carte\/departement\/)([A-Za-z0-9]{2,})/g)
|
||||
// const cirRegex = new RegExp(/(\?circonscriptionNumero=)([A-Za-z0-9]{1,})/g)
|
||||
|
||||
// const depString = body.match(depRegex)?.[0]?.split('departement/')?.[1]
|
||||
// const cirString = body.match(cirRegex)?.[0]?.split('circonscriptionNumero=')?.[1]
|
||||
|
||||
// if (!depString || !cirString) {
|
||||
// output[`WRONG-WRONG`] = repId
|
||||
|
||||
// return
|
||||
// }
|
||||
|
||||
// const depStringPad = String("0000" + depString)
|
||||
// const cirStringPad = String("0000" + cirString)
|
||||
|
||||
// const rep = {
|
||||
// departement: depStringPad.substring(depStringPad.length - 3),
|
||||
// circo: cirStringPad.substring(cirStringPad.length - 2)
|
||||
// }
|
||||
|
||||
// output[`${rep.departement}-${rep.circo}`] = repId
|
||||
// }
|
||||
|
||||
// res.json(output)
|
||||
Reference in New Issue
Block a user