update js to check no null value

pull/39/head
butaixianran 2023-03-08 20:08:19 +08:00
parent ff5ef8977d
commit 0b51381b34
5 changed files with 132 additions and 12 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
scripts/__pycache__/
scripts/lib/__pycache__/

View File

@ -212,15 +212,14 @@ onUiLoaded(() => {
extra_network_node = gradioApp().getElementById(extra_network_id);
// check if extr network is under thumbnail mode
is_thumb_mode = false
if (extra_network_node.className.indexOf("extra-network-thumbs") != -1) {
console.log(extra_network_id + " is in thumbnail mode");
is_thumb_mode = true;
// won't work good in thumb mode, skip it for now
continue;
}
if (!extra_network_node) {
if (extra_network_node) {
if (extra_network_node.className == "extra-network-thumbs") {
console.log(extra_network_id + " is in thumbnail mode");
is_thumb_mode = true;
// won't work good in thumb mode, skip it for now
continue;
}
} else {
console.log("can not find extra_network_node: " + extra_network_id);
continue;
}

View File

@ -13,7 +13,7 @@ from . import msg
# scan model to generate SHA256, then use this SHA256 to get model info from civitai
def scan_model(low_memory_sha, max_size_preview, readable_model_info, skip_nsfw_preview):
def scan_model(low_memory_sha, max_size_preview, skip_nsfw_preview):
util.printD("Start scan_model")
model_count = 0

View File

@ -13,7 +13,6 @@ data = {
"model":{
"low_memory_sha": True,
"max_size_preview": True,
"readable_model_info": True,
"skip_nsfw_preview": False
},
"general":{
@ -71,4 +70,36 @@ def load():
data = json_data
return
return
# save setting from parameter
def save_from_input(low_memory_sha, max_size_preview, skip_nsfw_preview, open_url_with_js, check_model_version_at_startup):
global data
data = {
"model":{
"low_memory_sha": low_memory_sha,
"max_size_preview": max_size_preview,
"skip_nsfw_preview": skip_nsfw_preview
},
"general":{
"open_url_with_js": open_url_with_js,
"check_model_version_at_startup": check_model_version_at_startup,
},
"tool":{
}
}
save()
# load to output
def load_to_output():
load()
low_memory_sha = data["model"]["low_memory_sha"]
max_size_preview = data["model"]["max_size_preview"]
skip_nsfw_preview = data["model"]["skip_nsfw_preview"]
open_url_with_js = data["general"]["open_url_with_js"]
check_model_version_at_startup = data["general"]["check_model_version_at_startup"]
return [low_memory_sha, max_size_preview, skip_nsfw_preview, open_url_with_js, check_model_version_at_startup]

89
scripts/ui.py Normal file
View File

@ -0,0 +1,89 @@
# -*- coding: UTF-8 -*-
# This extension can help you manage your models from civitai. It can download preview, add trigger words, open model page and use the prompt from preview image
# repo: https://github.com/butaixianran/
import modules.scripts as scripts
import gradio as gr
import os
import webbrowser
import requests
import random
import hashlib
import json
import shutil
import re
import modules
from modules import script_callbacks
from modules import shared
from scripts.lib import operator
from scripts.lib import setting
# load setting
setting.load()
def on_ui_tabs():
# init
# get prompt textarea
# UI structure
# check modules/ui.py, search for txt2img_paste_fields
# Negative prompt is the second element
txt2img_prompt = modules.ui.txt2img_paste_fields[0][0]
txt2img_neg_prompt = modules.ui.txt2img_paste_fields[1][0]
img2img_prompt = modules.ui.img2img_paste_fields[0][0]
img2img_neg_prompt = modules.ui.img2img_paste_fields[1][0]
# ====UI====
# with gr.Blocks(analytics_enabled=False) as civitai_helper:
with gr.Blocks() as civitai_helper:
# init
low_memory_sha = setting.data["model"]["low_memory_sha"]
max_size_preview = setting.data["model"]["max_size_preview"]
skip_nsfw_preview = setting.data["model"]["skip_nsfw_preview"]
open_url_with_js = setting.data["general"]["open_url_with_js"]
check_model_version_at_startup = setting.data["general"]["check_model_version_at_startup"]
# UI will have 3 tabs:
# Model Info: Scan model or force a model link to civitai model info by model id or url
# Settging: Setting for general use, also can save setting for all tabs
# Tool: handy functions, like making all model info readable.
with gr.Tab("Model"):
with gr.Row():
low_memory_sha_ckb = gr.Checkbox(label="Memory Optimised SHA256", value=low_memory_sha, elem_id="ch_low_memory_sha_ckb")
max_size_preview_ckb = gr.Checkbox(label="Download Max Size Preview", value=max_size_preview, elem_id="ch_max_size_preview_ckb")
skip_nsfw_preview_ckb = gr.Checkbox(label="SKip NSFW Preview images", value=skip_nsfw_preview, elem_id="ch_skip_nsfw_preview_ckb")
scan_model_btn = gr.Button(value="Scan model", elem_id="ch_scan_model_btn")
gr.Markdown("Check console log window for detail, after clicking Scan button")
# with gr.Tab("Settging"):
# with gr.Tab("Tool"):
# hidden component for js, not in any tab
js_msg_txtbox = gr.Textbox(label="Request Msg From Js", visible=False, lines=1, value="", elem_id="ch_js_msg_txtbox")
py_msg_txtbox = gr.Textbox(label="Response Msg From Python", visible=False, lines=1, value="", elem_id="ch_py_msg_txtbox")
js_open_url_btn = gr.Button(value="Open Model Url", visible=False, elem_id="ch_js_open_url_btn")
js_add_trigger_words_btn = gr.Button(value="Add Trigger Words", visible=False, elem_id="ch_js_add_trigger_words_btn")
js_use_preview_prompt_btn = gr.Button(value="Use Prompt from Preview Image", visible=False, elem_id="ch_js_use_preview_prompt_btn")
# ====events====
scan_model_btn.click(operator.scan_model, inputs=[low_memory_sha_ckb, max_size_preview_ckb, skip_nsfw_preview_ckb])
js_open_url_btn.click(operator.open_model_url, inputs=[js_msg_txtbox])
js_add_trigger_words_btn.click(operator.add_trigger_words, inputs=[js_msg_txtbox], outputs=[txt2img_prompt, img2img_prompt])
js_use_preview_prompt_btn.click(operator.use_preview_image_prompt, inputs=[js_msg_txtbox], outputs=[txt2img_prompt, txt2img_neg_prompt, img2img_prompt, img2img_neg_prompt])
# the third parameter is the element id on html, with a "tab_" as prefix
return (civitai_helper , "Civitai Helper", "civitai_helper"),
script_callbacks.on_ui_tabs(on_ui_tabs)