104 lines
3.0 KiB
JavaScript
104 lines
3.0 KiB
JavaScript
async function requestModelsHorde() {
|
|
//get the models list from url
|
|
// https://stablehorde.net/api/v2/status/models
|
|
|
|
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) {
|
|
// console.log(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()
|
|
// const models_menu_element = document.getElementById('mModelsMenu')
|
|
// models_menu_element.value = ""
|
|
//(optional): sort the models
|
|
|
|
g_models_horde.sort(function (a, b) {
|
|
return b.count - a.count
|
|
})
|
|
// g_models_horde = g_models_horde.sort( compareModelCounts );
|
|
document.getElementById("mModelsMenuHorde").innerHTML = ""
|
|
let model_item_random = addHordeModelMenuItem("Random", "Random")
|
|
model_item_random.selected = true
|
|
document.getElementById("mModelsMenuHorde").appendChild(model_item_random)
|
|
for (let model of g_models_horde) {
|
|
console.log(model.name, model.count)
|
|
const model_html_tile = `${model.name}: ${model.count}`
|
|
const model_item_element = addHordeModelMenuItem(
|
|
model_html_tile,
|
|
model.name
|
|
)
|
|
|
|
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 getUseHorde() {
|
|
const isChecked = document.getElementById("chUseHorde").checked
|
|
return isChecked
|
|
}
|
|
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() //refresh the model when importing the script
|
|
|
|
module.exports = {
|
|
requestModelsHorde,
|
|
refreshModelsHorde,
|
|
getModelHorde,
|
|
getUseHorde,
|
|
getScriptArgs,
|
|
script_name,
|
|
}
|