code to compile a jsonl file to a complete FS
This commit is contained in:
parent
afabae41d6
commit
a7e6424882
91
gendictionary.js
Normal file
91
gendictionary.js
Normal file
@ -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));
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user