UNPKG

airports-json

Version:

A comprehensive dataset of airports, countries, and regions in JSON format, including , with a script to generate data from CSV sources.

42 lines (35 loc) 1.42 kB
const axios = require("axios"); const csvParser = require("csv-parser"); const fs = require("fs"); const airportSourceUrl = "https://davidmegginson.github.io/ourairports-data/airports.csv"; const countrySourceUrl = "https://davidmegginson.github.io/ourairports-data/countries.csv"; const regionSourceUrl = "https://davidmegginson.github.io/ourairports-data/regions.csv"; const airportOutputFile = "./data/airports.json"; const countryOutputFile = "./data/countries.json"; const regionOutputFile = "./data/regions.json"; const allowedTypes = process.argv.includes("--types") ? process.argv[process.argv.indexOf("--types") + 1].split(",") : ["medium_airport", "large_airport"]; const fetchDataAndGenerateJson = async (sourceUrl, outputFile, filterFn) => { const response = await axios.get(sourceUrl, { responseType: "stream" }); const data = response.data.pipe(csvParser()); const parsedData = []; data .on("data", (row) => { if (!filterFn || filterFn(row)) { parsedData.push(row); } }) .on("end", () => { fs.writeFileSync(outputFile, JSON.stringify(parsedData, null, 2)); console.log(`Generated ${outputFile}`); }); }; fetchDataAndGenerateJson(airportSourceUrl, airportOutputFile, (row) => allowedTypes.includes(row.type) ); fetchDataAndGenerateJson(countrySourceUrl, countryOutputFile); fetchDataAndGenerateJson(regionSourceUrl, regionOutputFile);