Merge branch 'release' into staging
This commit is contained in:
commit
ca73a3a7b7
91
server.js
91
server.js
|
@ -726,7 +726,7 @@ app.post("/getchat", jsonParser, function (request, response) {
|
|||
const lines = data.split('\n');
|
||||
|
||||
// Iterate through the array of strings and parse each line as JSON
|
||||
const jsonData = lines.map(tryParse).filter(x => x);
|
||||
const jsonData = lines.map((l) => { try { return JSON.parse(l); } catch (_) { } }).filter(x => x);
|
||||
return response.send(jsonData);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
@ -1841,37 +1841,27 @@ function getImages(path) {
|
|||
.sort(Intl.Collator().compare);
|
||||
}
|
||||
|
||||
app.post("/getallchatsofcharacter", jsonParser, function (request, response) {
|
||||
app.post("/getallchatsofcharacter", jsonParser, async function (request, response) {
|
||||
if (!request.body) return response.sendStatus(400);
|
||||
|
||||
var char_dir = (request.body.avatar_url).replace('.png', '')
|
||||
fs.readdir(chatsPath + char_dir, (err, files) => {
|
||||
if (err) {
|
||||
console.log('found error in history loading');
|
||||
console.error(err);
|
||||
const characterDirectory = (request.body.avatar_url).replace('.png', '');
|
||||
|
||||
try {
|
||||
const chatsDirectory = path.join(chatsPath, characterDirectory);
|
||||
const files = fs.readdirSync(chatsDirectory);
|
||||
const jsonFiles = files.filter(file => path.extname(file) === '.jsonl');
|
||||
|
||||
if (jsonFiles.length === 0) {
|
||||
response.send({ error: true });
|
||||
return;
|
||||
}
|
||||
|
||||
// filter for JSON files
|
||||
const jsonFiles = files.filter(file => path.extname(file) === '.jsonl');
|
||||
|
||||
// sort the files by name
|
||||
//jsonFiles.sort().reverse();
|
||||
// print the sorted file names
|
||||
var chatData = {};
|
||||
let ii = jsonFiles.length; //this is the number of files belonging to the character
|
||||
if (ii !== 0) {
|
||||
//console.log('found '+ii+' chat logs to load');
|
||||
for (let i = jsonFiles.length - 1; i >= 0; i--) {
|
||||
const file = jsonFiles[i];
|
||||
const fileStream = fs.createReadStream(chatsPath + char_dir + '/' + file);
|
||||
|
||||
const fullPathAndFile = chatsPath + char_dir + '/' + file
|
||||
const stats = fs.statSync(fullPathAndFile);
|
||||
const fileSizeInKB = (stats.size / 1024).toFixed(2) + "kb";
|
||||
|
||||
//console.log(fileSizeInKB);
|
||||
const jsonFilesPromise = jsonFiles.map((file) => {
|
||||
return new Promise(async (res) => {
|
||||
const pathToFile = path.join(chatsPath, characterDirectory, file);
|
||||
const fileStream = fs.createReadStream(pathToFile);
|
||||
const stats = fs.statSync(pathToFile);
|
||||
const fileSizeInKB = `${(stats.size / 1024).toFixed(2)}kb`;
|
||||
|
||||
const rl = readline.createInterface({
|
||||
input: fileStream,
|
||||
|
@ -1885,34 +1875,37 @@ app.post("/getallchatsofcharacter", jsonParser, function (request, response) {
|
|||
lastLine = line;
|
||||
});
|
||||
rl.on('close', () => {
|
||||
ii--;
|
||||
if (lastLine) {
|
||||
rl.close();
|
||||
|
||||
let jsonData = tryParse(lastLine);
|
||||
if (jsonData && (jsonData.name !== undefined || jsonData.character_name !== undefined)) {
|
||||
chatData[i] = {};
|
||||
chatData[i]['file_name'] = file;
|
||||
chatData[i]['file_size'] = fileSizeInKB;
|
||||
chatData[i]['chat_items'] = itemCounter - 1;
|
||||
chatData[i]['mes'] = jsonData['mes'] || '[The chat is empty]';
|
||||
chatData[i]['last_mes'] = jsonData['send_date'] || Date.now();
|
||||
if (lastLine) {
|
||||
const jsonData = tryParse(lastLine);
|
||||
if (jsonData && (jsonData.name || jsonData.character_name)) {
|
||||
const chatData = {};
|
||||
|
||||
chatData['file_name'] = file;
|
||||
chatData['file_size'] = fileSizeInKB;
|
||||
chatData['chat_items'] = itemCounter - 1;
|
||||
chatData['mes'] = jsonData['mes'] || '[The chat is empty]';
|
||||
chatData['last_mes'] = jsonData['send_date'] || Date.now();
|
||||
|
||||
res(chatData);
|
||||
} else {
|
||||
console.log('Found an invalid or corrupted chat file: ' + fullPathAndFile);
|
||||
console.log('Found an invalid or corrupted chat file:', pathToFile);
|
||||
res({});
|
||||
}
|
||||
}
|
||||
if (ii === 0) {
|
||||
//console.log('ii count went to zero, responding with chatData');
|
||||
response.send(chatData);
|
||||
}
|
||||
//console.log('successfully closing getallchatsofcharacter');
|
||||
rl.close();
|
||||
});
|
||||
};
|
||||
} else {
|
||||
//console.log('Found No Chats. Exiting Load Routine.');
|
||||
response.send({ error: true });
|
||||
};
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
const chatData = await Promise.all(jsonFilesPromise);
|
||||
const validFiles = chatData.filter(i => i.file_name);
|
||||
|
||||
return response.send(validFiles);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
return response.send({ error: true });
|
||||
}
|
||||
});
|
||||
|
||||
function getPngName(file) {
|
||||
|
|
Loading…
Reference in New Issue