90 lines
3.8 KiB
Python
90 lines
3.8 KiB
Python
# -*- 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)
|
|
|
|
|