diff --git a/gendictionary.js b/gendictionary.js new file mode 100644 index 0000000..a317b13 --- /dev/null +++ b/gendictionary.js @@ -0,0 +1,91 @@ +const fs = require('fs'); +const rl = require('readline') + +const dictPath = "./dictionary/"; +const language = "en" + +let stream = fs.createReadStream("./kaikki.org-dictionary-English.jsonl", 'utf-8'); + +let reader = rl.createInterface(stream); + +const path = dictPath + language + "/"; + +fs.mkdirSync(path,{recursive:true}); +var iter = 0; +reader.on('line', (line) => { + iter++; + console.log("Iteration Number: "+iter.toString()); + let entry = JSON.parse(line); + let thispath = path + entry.word + "/" + entry.pos + "/"; + console.log(thispath); + if (!fs.existsSync(thispath)) { + initializeDir(thispath); + } + // console.log(entry); + + let defintions = writeDefinitions(thispath, entry); + let sounds = writeSounds(thispath, entry); + let thesaurus = writeThesaurus(thispath, entry); + +}); + +async function writeThesaurus(thispath, entry) { + +} +async function writeSounds(thispath, entry) { + var sounds = JSON.parse(fs.readFileSync(thispath+"sounds.json",'utf-8')); + + if (entry.sounds == null){ + console.log("No sounds key present on entry, skipping sounds def..."); + return; + } + entry.sounds.forEach((ele,idx,arr) => { + if (ele.audio != null) { + sounds.audios.push(ele.ogg_url, ele.mp3_url); + } else if (ele.rhymes != null) { + sounds.rhymes.push(ele.rhymes) + } else if (ele.homophone != null) { + sounds.homophones.push(ele.homophone); + } else { + sounds.pronunciations.push(ele); + } + }); + fs.writeFileSync(thispath+"sounds.json",JSON.stringify(sounds)); +} +async function writeDefinitions(thispath, entry) { + + var definitions = JSON.parse(fs.readFileSync(thispath+"definitions.json",'utf-8')); + + let senses = entry.senses; + if (senses == null){ + console.log("No senses key present on entry, skipping senses def"); + return; + } + + senses.forEach((ele,idx,arr) => { + //add glosses onto defnitions list + definitions.glosses.push(ele.glosses); + }); + fs.writeFileSync(thispath+"definitions.json", JSON.stringify(definitions)); + +} +function initializeDir(path) { + fs.mkdirSync(path, {recursive:true}); + let definitions = { + glosses: [] + } + let sounds = { + pronunciations: [], + audios: [], + rhymes: [], + homophones: [] + } + let thesaurus = { + synonyms: [], + antynoms: [] + } + fs.writeFileSync(path+"definitions.json",JSON.stringify(definitions)); + fs.writeFileSync(path+"sounds.json",JSON.stringify(sounds)); + fs.writeFileSync(path+"thesaurus.json",JSON.stringify(thesaurus)); + +} \ No newline at end of file