forked from davidmegginson/ourairports-data
-
Notifications
You must be signed in to change notification settings - Fork 0
/
activeAirports.js
62 lines (56 loc) · 2 KB
/
activeAirports.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
const fs = require('node:fs');
fs.readFile('airports.json', async function(err, data) {
if (err) {
return console.error(err)
}
const airports = await JSON.parse(data);
await matrix(airports)
});
async function matrix(airports){
const activeAirports = {};
const vatsimPilots = await fetch(
"https://vatsat.pages.dev/api/main?source=vatsimPilots",
).then((response) => response.json());
await vatsimPilots.source.data.features.forEach((pilot) => {
if (pilot.properties.flightPlan) {
const flightPlan = JSON.parse(pilot.properties.flightPlan);
if (activeAirports[flightPlan.departure]) {
activeAirports[flightPlan.departure].departures.push(pilot.properties);
} else if (!activeAirports[flightPlan.departure]){
activeAirports[flightPlan.departure] = {
departures: [pilot.properties],
arrivals: [],
};
}
if (activeAirports[flightPlan.arrival]) {
activeAirports[flightPlan.arrival].arrivals.push(pilot.properties);
} else if (!activeAirports[flightPlan.arrival]){
activeAirports[flightPlan.arrival] = {
arrivals: [pilot.properties],
departures: [],
};
}
}
});
/*Object.keys(activeAirports).forEach(icao => {
if(activeAirports[icao].departures === 0 && activeAirports[icao].arrivals === 0) {
delete activeAirports[icao];
}
})*/
await airports.forEach((airport) => {
if (
Object.keys(activeAirports).filter(
(airportICAO) => airportICAO === airport.gps_code,
)[0]
) {
Object.assign(activeAirports[airport.gps_code], airport);
}
});
await writeFile('./activeAirports.json', JSON.stringify(activeAirports))
}
async function writeFile(path, data){
fs.writeFile(path, data, function (err) {
if (err) throw err;
console.log('Saved!');
});
}