stellar-neighbours/simbad4csv2json.js
2023-01-23 16:15:23 +01:00

38 lines
1 KiB
JavaScript

import { parse } from 'csv-parse'
import { readFile, writeFile } from 'fs/promises'
;(async () => {
const content = await readFile('input.csv')
const records = []
const columns = ['id', 'name', 'type', 'coords', 'spectral', 'distance']
const parser = parse(content, {
bom: true,
delimiter: ';',
trim: true,
columns,
})
parser.on('readable', () => {
let record
while ((record = parser.read()) !== null) {
// objects without spectral class are probably not stars
if (record.spectral === '~') continue
const [phi, theta] = record.coords.split(' ').map((n) => parseFloat(n))
records.push({
id: parseInt(record.id),
name: record.name,
type: record.type,
spectral: record.spectral,
radius: parseFloat(record.distance),
phi,
theta,
})
}
})
parser.on('end', async () => {
await writeFile('output.json', JSON.stringify(records))
console.log('wrote', records.length, 'records to output.json')
})
})()