From 8a027c08d96b26ba43f14c43149a1b6effff53b2 Mon Sep 17 00:00:00 2001 From: somebody Date: Fri, 25 Nov 2022 12:37:04 -0600 Subject: [PATCH] Add images to lorecards --- static/koboldai.js | 96 +++++++++++++++++++++++++++++++--------------- 1 file changed, 65 insertions(+), 31 deletions(-) diff --git a/static/koboldai.js b/static/koboldai.js index c2805a15..c73a3ec8 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -4466,11 +4466,14 @@ async function postWI(wiData) { } } -async function loadNAILorebook(data, filename) { +async function loadNAILorebook(data, filename, image=null) { let lorebookVersion = data.lorebookVersion; let wi_data = {folders: {[filename]: []}, entries: {}}; console.log(`Loading NAI lorebook version ${lorebookVersion}`); + let base = Math.max(...Object.keys(world_info_data).map(Number)) + 1; + if (base < 0) base = 0; + let i = 0; for (const entry of data.entries) { // contextConfig: Object { suffix: "\n", tokenBudget: 2048, reservedTokens: 0, … } @@ -4499,10 +4502,25 @@ async function loadNAILorebook(data, filename) { }; wi_data.folders[filename].push(i); + i++; } await postWI(wi_data); + + if (image) { + for (let offset=0;offset resolve(reader.result); + reader.onerror = error => reject(error); + }); +} + +async function blob2ArrayBuffer(blob) { + return new Promise(function(resolve, reject) { + const reader = new FileReader(); + reader.readAsArrayBuffer(blob); + reader.onload = () => resolve(reader.result); + reader.onerror = error => reject(error); + }); +} + +async function readLoreCard(file) { // "naidata" const magicNumber = new Uint8Array([0x6e, 0x61, 0x69, 0x64, 0x61, 0x74, 0x61]); let filename = file.name; let reader = new FileReader(); - reader.readAsArrayBuffer(file); - reader.addEventListener("load", function() { - let bin = new Uint8Array(reader.result); + let bin = new Uint8Array(await blob2ArrayBuffer(file)) - // naidata is prefixed with magic number - let offset = bin.findIndex(function(item, possibleIndex, array) { - for (let i=0;i