jonbrain
Version:
Just a brain-work
87 lines • 3.4 kB
JavaScript
const fs = require('fs');
let JonDB={};
if(fs.existsSync('./src/s.json')) try {JonDB=JSON.parse(fs.readFileSync('./src/s.json'));}catch(err){console.log(err);JonDB={};}
let JonTimeout=null;
if(!JonDB['convo']) JonDB['convo']={};
if(!JonDB['followups']) JonDB['followups']={};
async function net() {
return console.log("https://JonTV.me");
}
net.train = function(data, callback) {
let result="";
if(!data) data = [null,null,"content"];
if(!data[2]) data[2]='content';
if(data[0]) {
if(!JonDB[data[2]]) JonDB[data[2]]={};
JonDB[data[2]][data[0]] = data[1];
result = JonDB[data[2]][data[0]];
}
if(callback) callback(result);
net.saveAll();
return result;
}
net.search = function(data, cb) {
if(!data) return null;
if(typeof data != 'object') data=[data, 1, 'content', null, null, null, 0, null];
for(var i=2;i<7;i++){data[i]=null;}
if(!data[2]) data[2]='content';
if(data[0]){
if(!JonDB[data[2]])JonDB[data[2]]={};
data[3] = data[0].split(' ');
data[4]=[];
for(let i=0;i<data[3].length;i++){if(!data[4][i])data[4][i]=[data[3][i],0];data[4][i][1]++;}
data[5]=[];data[6]=0;data[7]=[];
for(var key in JonDB[data[2]]){
data[5]=key.split(' ');data[6]=0;
for(let i=0;i<data[5].length;i++){for(let b=0;b<data[4].length;b++){if(data[5][i]==data[4][b][0])data[6]+=data[4][b][1];if(data[5][i].toLowerCase()==data[4][b][0].toLowerCase())data[6]+=0.5;};}
data[7][data[7].length]=[JonDB[data[2]][key],data[6]];
};
data[7].sort(function(a,b){a=a[1];b=b[1];return a<b?-1:(a>b?1:0);});data[7].reverse();
if(data[1])data[7]=data[7].slice(0,data[1]);
if(cb)cb(data[7]);
return data[7];
}
return false;
}
net.run = function(data, callback, search) {
let result="";
if(!data) data = [null,null,"content",null];
if(!data[2]) data[2]='content';
if(data[0]) {
if(!JonDB[data[2]]) JonDB[data[2]]={};
data[1]=JonDB[data[2]][data[0]];
if(!data[1] && data[2] == 'content') {
data[4] = data[0].split(' ');
data[5] = [];
for(let i=0;i<data[4].length;i++){let elem=data[4][i].trim().trim(".");
if(JonDB['alte'])if(JonDB['alte'][elem]) elem = JonDB['alte'][elem];
if(elem)data[5][data[5].length]=elem;
};
if(data[5]) {
data[0]=data[5].join(' ');
data[1]=JonDB[data[2]][data[0]];
}
}
if(data[3]) {
if(JonDB['convo'][data[3]]){
JonDB['convo'][data[3]][JonDB['convo'][data[3]].length]=data[0];
if(JonDB['followups'][JonDB['convo'][data[3]][JonDB['convo'][data[3]].length-1]]){
if(JonDB['followups'][JonDB['convo'][data[3]][JonDB['convo'][data[3]].length-1]][data[0]]){
data[1]=JonDB['followups'][JonDB['convo'][data[3]][JonDB['convo'][data[3]].length-1]][data[0]];
}
}
/* else {
JonDB['followups'][JonDB['convo'][data.id][JonDB['convo'][data.id].length -1]]={};
}
[JonDB['convo'][data.id][JonDB['convo'][data.id].length]]*/
}else{
JonDB['convo'][data[3]] = [data[0]];
}
}
}
result = data[1];if(!result&&search){let response=net.search(data);if(response)result=response[0][0];}
if(callback) callback(result);
return result;
}
net.saveAll=function(){if(!JonTimeout){JonTimeout=setTimeout(function(){if(!fs.existsSync('./src/'))fs.mkdirSync('./src/');fs.writeFile("./src/s.json",JSON.stringify(JonDB),(err)=>{if(err)throw err;});clearTimeout(JonTimeout);JonTimeout=null;},5000);}}
module.exports=net;