diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte index af5bed90..012be298 100644 --- a/src/lib/SideBars/Sidebar.svelte +++ b/src/lib/SideBars/Sidebar.svelte @@ -54,7 +54,7 @@ } async function createImport() { reseter(); - const cid = await importCharacter(); + await importCharacter(); selectedCharID.set(-1); } diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index 5ff57061..0bc99875 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -1,7 +1,7 @@ import { get } from "svelte/store" import { alertConfirm, alertError, alertNormal, alertSelect, alertStore } from "./alert" import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook } from "./database" -import { checkNullish, selectSingleFile, sleep } from "./util" +import { checkNullish, selectMultipleFile, selectSingleFile, sleep } from "./util" import { language } from "src/lang" import { encode as encodeMsgpack, decode as decodeMsgpack } from "@msgpack/msgpack"; import { v4 as uuidv4 } from 'uuid'; @@ -14,96 +14,13 @@ import { cloneDeep } from "lodash" export async function importCharacter() { try { - const f = await selectSingleFile(['png', 'json']) - if(!f){ + const files = await selectMultipleFile(['png', 'json']) + if(!files){ return } - if(f.name.endsWith('json')){ - const da = JSON.parse(Buffer.from(f.data).toString('utf-8')) - if(await importSpecv2(da)){ - let db = get(DataBase) - return db.characters.length - 1 - } - if((da.char_name || da.name) && (da.char_persona || da.description) && (da.char_greeting || da.first_mes)){ - let db = get(DataBase) - db.characters.push(convertOldTavernAndJSON(da)) - DataBase.set(db) - alertNormal(language.importedCharacter) - return - } - else{ - alertError(language.errors.noData) - return - } - } - alertStore.set({ - type: 'wait', - msg: 'Loading... (Reading)' - }) - await sleep(10) - const img = f.data - const readed = (await exifr.parse(img, true)) - if(readed.chara){ - // standard spec v2 imports - const charaData:CharacterCardV2 = JSON.parse(Buffer.from(readed.chara, 'base64').toString('utf-8')) - if(await importSpecv2(charaData, img)){ - let db = get(DataBase) - return db.characters.length - 1 - } - } - if(readed.risuai){ - // old risu imports - await sleep(10) - const va = decodeMsgpack(Buffer.from(readed.risuai, 'base64')) as any - if(va.type !== 101){ - alertError(language.errors.noData) - return - } - let char:character = va.data - let db = get(DataBase) - if(char.emotionImages && char.emotionImages.length > 0){ - for(let i=0;i 0){ + for(let i=0;i