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
38 lines
903 B
JavaScript
5 years ago
|
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()
|