schat2-clive/assets/curate-jeopardy.js

37 lines
1.1 KiB
JavaScript
Executable File

'use strict';
const fs = require('fs').promises;
const linkify = require('linkify-it')();
const questions = require('./jeopardy_raw.json');
async function init() {
const curatedQuestions = await Promise.all(questions.map(async (question) => {
const links = linkify.match(question.question);
if (links?.length > 0 || /\[jpe?g\]|seen here/i.test(question.question)) {
return null;
}
return {
...question,
question: question.question.replace(/^'|'$/g, ''),
answer: question.answer
.replace(/"|\\/g, '') // strip off quotes and backslashes first, to make sure they don't get in the way of stripping off articles from the beginning of a string
.replace(/^(the|an|a)\b(?!-)\s*|\(.*?\)\s*/gi, '')
.trim(),
fullAnswer: question.answer.replace(/\\/g, ''),
value: Number('$3,800'.match(/\d+/g).join('')),
};
}));
const filteredQuestions = curatedQuestions.filter(Boolean);
await fs.writeFile('assets/jeopardy.json', JSON.stringify(filteredQuestions, null, 4));
console.log(curatedQuestions);
console.log(`Saved ${filteredQuestions.length} questions, discarded ${questions.length - filteredQuestions.length}`);
}
init();