From c82fe8cfd1d0f04fdad3edb876eedc03bcc34d76 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Mon, 8 Jun 2020 21:58:58 +0200 Subject: [PATCH] Refactor --- jishoScrape/index.js | 58 ++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/jishoScrape/index.js b/jishoScrape/index.js index 98edbb0..84b62d9 100644 --- a/jishoScrape/index.js +++ b/jishoScrape/index.js @@ -5,36 +5,22 @@ const {fetchKanjiFromTxt, fetchJishoBufferData, fetchKanjiFromJisho} = require(' const {getKanjiTexData} = require('./src/texConversion.js'); const {kanjiTable} = require('./src/kanjiTables.js'); +function log(message, jlptLevel) { + const jlptLevelCaps = jlptLevel.toUpperCase(); + console.log(`${jlptLevelCaps}: ${message}`); +} + /* Encapsulate main process in async function */ async function main(jlptLevel) { - const jlptLevelCaps = jlptLevel.toUpperCase(); + const jishoResults = await fetchJishoResults(jlptLevel); + const kanjiArray = jishoResults.map(result => result.query); - /* Fetch data from buffer if available. - * Else fetch data from txt and jisho requests, - * and make buffer files - */ - if(fs.existsSync(`./data/jisho/${jlptLevel}.json`)) { - var jishoResults = await fetchJishoBufferData(`./data/jisho/${jlptLevel}.json`); - console.log(`${jlptLevelCaps}: Fetched Jisho data from buffer`); - - } else { - const kanjiArray = await fetchKanjiFromTxt(`./data/txt/${jlptLevel}.txt`); - console.log(`${jlptLevelCaps}: Fetched txt`); - - var jishoResults = await fetchKanjiFromJisho(kanjiArray); - console.log(`${jlptLevelCaps}: Fetched Jisho data`); - - fs.writeFile(`./data/jisho/${jlptLevel}.json`, JSON.stringify(jishoResults, null, " "), (err) => {if (err) console.error(err)}); - console.log(`${jlptLevelCaps}: Written Jisho data to buffer`); - } - - const sortedKanjiArray = jishoResults.map(result => result.query); + log('Generating tex pages', jlptLevel); const texData = getKanjiTexData(jishoResults); - console.log(`${jlptLevelCaps}: Processed pages`); - const resultTable = kanjiTable(sortedKanjiArray); - console.log(`${jlptLevelCaps}: Processed table`); + log('Generating chapter table page', jlptLevel); + const resultTable = kanjiTable(kanjiArray); let resultPage = ''; for (kanji of texData) { @@ -50,6 +36,30 @@ async function main(jlptLevel) { fs.writeFile(`./data/pages/${jlptLevel}.tex`, resultPage, (err) => {if (err) console.error(err)}); } + /** Fetch data from buffer if available. + * Else fetch data from txt and jisho requests, + * and make buffer files + */ +async function fetchJishoResults(jlptLevel) { + + const bufferFileExists = fs.existsSync(`./data/jisho/${jlptLevel}.json`); + + if(bufferFileExists) { + log('Fetching Jisho data from buffer', jlptLevel) + return await fetchJishoBufferData(`./data/jisho/${jlptLevel}.json`); + } else { + log('Fetching data from Jisho and writing to buffer', jlptLevel) + return await fetchJishoDataAndWriteToBuffer(jlptLevel); + } +} + +async function fetchJishoDataAndWriteToBuffer(jlptLevel) { + const kanjiArray = await fetchKanjiFromTxt(`./data/txt/${jlptLevel}.txt`); + const jishoResults = await fetchKanjiFromJisho(kanjiArray); + fs.writeFile(`./data/jisho/${jlptLevel}.json`, JSON.stringify(jishoResults, null, " "), (err) => {if (err) console.error(err)}); + return jishoResults; +} + /* Handle args */ async function argWrapper() {