//javascript plugin can't read images from local directory so we send a request to local server to read the image file and send it back to plugin as image string base64 async function getInitImage(init_image_name) { console.log('getInitImage(): get Init Image from the server :') const payload = { init_image_name: init_image_name, } const full_url = 'http://127.0.0.1:8000/getInitImage/' console.log(full_url) console.log('getInitImage payload:', payload) let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), // "body": payload }) let json = await request.json() console.log('json:') console.dir(json) base64data = json.init_image_str image_src = `data:image/png;base64, ${base64data}` return image_src // console.log(img.src) // let img_blob = await (await fetch(img.src)).blob() // console.log("img_blob:") // console.dir(img_blob) } async function requestSavePng(base64_image, image_name) { try { console.log('requestSavePng():') payload = { base64: base64_image, image_name: image_name } const full_url = 'http://127.0.0.1:8000/save/png/' console.log(full_url) console.log('payload:', payload) let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), // "body": payload }) let json = await request.json() console.log('requestSavePng json:', json) return json } catch (e) { console.warn(e) return {} } } async function requestTxt2Img(payload) { try { console.log('requestTxt2Img(): about to send a fetch request') const full_url = 'http://127.0.0.1:8000/txt2img/' console.log(full_url) let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), // "body": payload }) let json = await request.json() console.log('requestTxt2Img json:', json) return json } catch (e) { console.warn(e) return {} } } async function requestImg2Img(payload) { console.log('requestImg2Img(): about to send a fetch request') try { const full_url = 'http://127.0.0.1:8000/img2img/' console.log(full_url) console.log('requestImg2Img payload is: ', payload) let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), // "body": payload }) let json = await request.json() console.log('requestImg2Img json:') console.dir(json) return json } catch (e) { console.warn(e) return {} } } async function requestProgress() { console.log('requestProgress: ') const full_url = 'http://127.0.0.1:8000/sdapi/v1/progress?skip_current_image=false' let request = await fetch(full_url) let json = await request.json() console.log('progress json:') console.dir(json) return json } async function requestGetModels() { console.log('requestGetModels: ') let json = [] const full_url = 'http://127.0.0.1:8000/sdapi/v1/sd-models' try { let request = await fetch(full_url) json = await request.json() console.log('models json:') console.dir(json) } catch (e) { console.warn(`issues requesting from ${full_url}`, e) } return json } async function requestGetSamplers() { console.log('requestGetSamplers: ') const full_url = 'http://127.0.0.1:8000/sdapi/v1/samplers' let request = await fetch(full_url) let json = await request.json() console.log('samplers json:') console.dir(json) return json } async function requestSwapModel(model_title) { console.log('requestSwapModel: ') // const full_url = 'http://127.0.0.1:8000/swapModel' const full_url = 'http://127.0.0.1:8000/sdapi/v1/options' payload = { sd_model_checkpoint: model_title, } let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), // "body": payload }) let json = await request.json() console.log('models json:') console.dir(json) return json } async function requestInterrupt(model_title) { const full_url = 'http://127.0.0.1:8000/sdapi/v1/interrupt' try { console.log('requestInterrupt: ') // const full_url = 'http://127.0.0.1:8000/swapModel' // payload = { // sd_model_checkpoint: model_title // } payload = '' let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, // body: JSON.stringify(payload) // "body": payload }) console.log('interrupt request:', request) let json = await request.json() console.log('interrupt json:') console.dir(json) return json } catch (e) { console.warn(e) } } async function getVersionRequest() { // version = "v0.0.0" console.log('requestGetSamplers: ') try { const full_url = 'http://127.0.0.1:8000/version' let request = await fetch(full_url) let json = await request.json() console.log('version json:', json) version = json['version'] return version } catch (e) { console.warn(e) version = 'v0.0.0' return version } } async function changeSdUrl(new_sd_url) { // version = "v0.0.0" console.log('changeSdUrl: new_sd_url:', new_sd_url) try { payload = { sd_url: new_sd_url, } const full_url = 'http://127.0.0.1:8000/sd_url/' console.log('changeSdUrl: payload: ', payload) let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }) // let json = await request.json() // console.log('changeSdUrl:',json) console.log('changeSdUrl: request: ', request) } catch (e) { console.warn(e) } } // function printTheJSONInPrettyFormat(json) { // // var badJSON = document.getElementById('prettyJSONFormat').value; // // var parseJSON = JSON.parse(badJSON); // // var JSONInPrettyFormat = JSON.stringify(json, undefined, 4); // // return // } async function loadHistory(uniqueDocumentId) { let json = {} try { payload = { uniqueDocumentId: uniqueDocumentId, } const full_url = 'http://127.0.0.1:8000/history/load' let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }) json = await request.json() console.log('loadHistory:', json) // console.log('loadPromptShortcut: request: ',request) } catch (e) { console.warn(e) } return [json['image_paths'], json['metadata_jsons'], json['base64_images']] } async function loadPromptShortcut() { // console.log('loadPromptShortcut:') let json = {} try { payload = {} const full_url = 'http://127.0.0.1:8000/prompt_shortcut/load' let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }) json = await request.json() console.log('loadPromptShortcut:', json) // console.log('loadPromptShortcut: request: ',request) } catch (e) { console.warn(e) } return json['prompt_shortcut'] } async function savePromptShortcut(prompt_shortcut) { // console.log('loadPromptShortcut:') let json = {} try { payload = { prompt_shortcut: prompt_shortcut } const full_url = 'http://127.0.0.1:8000/prompt_shortcut/save' let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }) json = await request.json() console.log('savePromptShortcut:', json) // console.log('loadPromptShortcut: request: ',request) } catch (e) { console.warn(e) } return json['prompt_shortcut'] } async function setInpaintMaskWeight(value) { const full_url = 'http://127.0.0.1:8000/sdapi/v1/options' try { payload = { inpainting_mask_weight: value, } await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }) } catch (e) { console.warn(e) } } async function requestGetConfig() { console.log('requestGetConfig: ') let json = [] const full_url = 'http://127.0.0.1:8000/config' try { let request = await fetch(full_url) json = await request.json() console.log('models json:') console.dir(json) } catch (e) { console.warn(`issues requesting from ${full_url}`, e) } return json } async function requestGetOptions() { console.log('requestGetOptions: ') let json = [] const full_url = 'http://127.0.0.1:8000/sdapi/v1/options' try { let request = await fetch(full_url) json = await request.json() console.log('models json:') console.dir(json) } catch (e) { console.warn(`issues requesting from ${full_url}`, e) } return json } async function imageSearch(keywords) { let json = {} const full_url = 'http://127.0.0.1:8000/search/image/' try { payload = { keywords: keywords, } let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }) json = await request.json() console.log('imageSearch:', json) return json['images'] } catch (e) { console.warn(e) } return [] } async function requestHorde(payload) { payload = { prompt: 'string', params: { sampler_name: 'k_lms', toggles: [1, 4], cfg_scale: 5, denoising_strength: 0.75, seed: 'string', height: 512, width: 512, seed_variation: 1, post_processing: ['GFPGAN'], karras: false, tiling: false, steps: 30, n: 1, }, nsfw: false, trusted_workers: true, censor_nsfw: false, workers: ['4c79ab19-8e6c-4054-83b3-773b7ce71ece'], models: ['stable_diffusion'], // source_image: 'string', // source_processing: 'img2img', // source_mask: 'string', r2: true, shared: false, } try { console.log('requestHorde():') const full_url = 'https://stablehorde.net/api/v2/generate/async' // const full_url = 'https://stablehorde.net/api/v2/generate/sync' console.log(full_url) let request = await fetch(full_url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', apikey: '0000000000', // 'Client-Agent': '4c79ab19-8e6c-4054-83b3-773b7ce71ece', 'Client-Agent': 'unknown:0:unknown', }, body: JSON.stringify(payload), }) let json = await request.json() console.log('requestHorde json:', json) return json } catch (e) { console.warn(e) return {} } } async function requestHordeCheck(id) { try { console.log('requestHordeCheck():') const base_url = 'https://stablehorde.net/api/v2/generate/check' const full_url = `${base_url}/${id}` // const full_url = 'https://stablehorde.net/api/v2/generate/sync' console.log(full_url) const payload = {} let request = await fetch(full_url, { method: 'GET', headers: { Accept: 'application/json', 'Content-Type': 'application/json', // 'Client-Agent': '4c79ab19-8e6c-4054-83b3-773b7ce71ece', 'Client-Agent': 'unknown:0:unknown', }, }) let json = await request.json() console.log('requestHordeCheck json:', json) return json } catch (e) { console.warn(e) return {} } } async function requestHordeStatus(id) { try { console.log('requestHordeStatus():') const base_url = 'https://stablehorde.net/api/v2/generate/status' const full_url = `${base_url}/${id}` // const full_url = 'https://stablehorde.net/api/v2/generate/sync' console.log(full_url) const payload = {} let request = await fetch(full_url, { method: 'GET', headers: { Accept: 'application/json', 'Content-Type': 'application/json', // 'Client-Agent': '4c79ab19-8e6c-4054-83b3-773b7ce71ece', 'Client-Agent': 'unknown:0:unknown', }, }) let json = await request.json() console.log('requestHordeStatus json:', json) return json } catch (e) { console.warn(e) return {} } } module.exports = { requestTxt2Img, requestImg2Img, getInitImage, requestProgress, requestGetModels, requestSwapModel, requestInterrupt, requestGetSamplers, getVersionRequest, changeSdUrl, loadPromptShortcut, savePromptShortcut, loadHistory, setInpaintMaskWeight, requestGetConfig, requestGetOptions, imageSearch, requestSavePng, requestHorde, requestHordeCheck, requestHordeStatus, }