|
async function requestModelsHorde() { |
|
|
|
|
|
|
|
console.log('requestModelsHorde: ') |
|
|
|
const full_url = 'https://stablehorde.net/api/v2/status/models' |
|
let request = await fetch(full_url) |
|
let json = await request.json() |
|
console.log('hordes models json:') |
|
console.dir(json) |
|
|
|
return json |
|
} |
|
|
|
function addHordeModelMenuItem(model_title, model_name) { |
|
|
|
const menu_item_element = document.createElement('sp-menu-item') |
|
menu_item_element.className = 'mModelMenuItemHorde' |
|
menu_item_element.innerHTML = model_title |
|
|
|
menu_item_element.dataset.name = model_name |
|
return menu_item_element |
|
} |
|
|
|
async function refreshModelsHorde() { |
|
try { |
|
let g_models_horde = await requestModelsHorde() |
|
|
|
|
|
|
|
|
|
g_models_horde.sort(function (a, b) { |
|
return b.count - a.count |
|
}) |
|
|
|
document.getElementById('mModelsMenuHorde').innerHTML = '' |
|
let model_item_random = addHordeModelMenuItem('Random', 'Random') |
|
|
|
document |
|
.getElementById('mModelsMenuHorde') |
|
.appendChild(model_item_random) |
|
for (let model of g_models_horde) { |
|
|
|
const model_html_tile = `${model.name}: ${model.count}` |
|
const model_item_element = addHordeModelMenuItem( |
|
model_html_tile, |
|
model.name |
|
) |
|
if (model.name === 'stable_diffusion') { |
|
|
|
|
|
|
|
model_item_element.selected = true |
|
} |
|
document |
|
.getElementById('mModelsMenuHorde') |
|
.appendChild(model_item_element) |
|
} |
|
} catch (e) { |
|
console.warn(e) |
|
} |
|
} |
|
function getModelHorde() { |
|
return [...document.getElementsByClassName('mModelMenuItemHorde')].filter( |
|
(e) => e.selected == true |
|
)[0].dataset.name |
|
} |
|
|
|
function getScriptArgs() { |
|
const model = getModelHorde() |
|
const b_nsfw = document.getElementById('chUseNSFW').checked |
|
const b_shared_laion = document.getElementById('chUseSharedLaion').checked |
|
|
|
let seed_variation = document.getElementById('slSeedVariation').value |
|
seed_variation = parseInt(seed_variation) |
|
const script_args_json = { |
|
model: model, |
|
nsfw: b_nsfw, |
|
shared_laion: b_shared_laion, |
|
seed_variation: seed_variation, |
|
post_processing_1: 'None', |
|
post_processing_2: 'None', |
|
post_processing_3: 'None', |
|
} |
|
const script_args = Object.values(script_args_json) |
|
return script_args |
|
} |
|
|
|
document |
|
.getElementById('btnRefreshModelsHorde') |
|
.addEventListener('click', async () => { |
|
await refreshModelsHorde() |
|
}) |
|
|
|
const script_name = 'Run on Stable Horde' |
|
|
|
refreshModelsHorde() |
|
|
|
module.exports = { |
|
requestModelsHorde, |
|
refreshModelsHorde, |
|
getModelHorde, |
|
|
|
getScriptArgs, |
|
script_name, |
|
} |
|
|