You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
903 B
JavaScript

const path = require('path')
const { getMetadata } = require('./getMetadata')
const { parseMetadata } = require('./parseMetadata')
const { mkdirAndWriteFile, dataDir } = require('../paths')
async function main() {
const parsedData = [...parseMetadata(await getMetadata())]
const tsvData = parsedData.map(entryToRow)
mkdirAndWriteFile(
path.join(dataDir, 'PG-meta.json'),
JSON.stringify(parsedData, undefined, 2)
)
mkdirAndWriteFile(path.join(dataDir, 'PG-meta.tsv'), formatTsv(tsvData))
}
function entryToRow(entry) {
return [
entry.id,
(entry.title[0] || '').replace(/[\r\n]+/gm, ''),
entry.author.join('|'),
entry.language.join('|'),
entry.subject.join('|'),
entry.textUris.join('|'),
entry.pictures.join('|')
]
}
function formatTsv(array2D) {
return array2D
.map(row => row.join('\t'))
.join('\n')
.replace(/"/gm, '\\"')
}
main()