dikdimon's picture
Upload extensions using SD-Hub extension
3dabe4a verified
raw
history blame
9 kB
from modules.ui_components import FormRow, FormColumn
from modules import script_callbacks
import gradio as gr
from sd_hub.markdown import dl_md, upl_md, arc_md1, arc_md2
from sd_hub.tokenizer import load_token, save_token
from sd_hub.downloader import downloader, read_txt
from sd_hub.archiver import archive, extract
from sd_hub.uploader import uploader
from sd_hub.paths import path_path
from sd_hub.scraper import scraper
from sd_hub.version import version
token1, token2, token3, _, _ = load_token()
def on_ui_tabs():
with gr.Blocks(analytics_enabled=False) as hub, gr.Tabs():
with gr.TabItem("Downloader", elem_id="hub-dl"):
gr.Markdown("""<div style='text-align: center;'><h3 style='font-size: 18px;'>🔽 Download Command Center</h3></div>""")
with FormRow():
with FormColumn(scale=7):
gr.Markdown(f"{dl_md}")
with FormColumn(scale=3, variant="panel"):
dl_token1 = gr.Textbox(value=token2, label="Huggingface Token (READ)", max_lines=1,
placeholder="Your Huggingface Token here (role = READ)", interactive=True)
dl_token2 = gr.Textbox(value=token3, label="Civitai API Key", max_lines=1,
placeholder="Your Civitai API Key here", interactive=True)
with FormRow(scale=1):
dl_save = gr.Button(value="SAVE", variant="primary", min_width=0)
dl_load = gr.Button(value="LOAD", variant="primary", min_width=0)
dl_input = gr.Textbox(label="Input", lines=5, placeholder="$tag\nURL", elem_classes="dl-input")
with FormRow():
with FormColumn(scale=1):
dl_dl = gr.Button("DOWNLOAD", variant="primary")
with FormColumn(scale=1), FormRow(scale=1, variant="compact"):
dl_scrape = gr.Button("Scrape", variant="secondary", min_width=0)
dl_txt = gr.UploadButton(label="Insert TXT", variant="secondary",
file_count="single", file_types=[".txt"], min_width=0)
with FormColumn(scale=2, variant="compact"):
dl_out1 = gr.Textbox(show_label=False, interactive=False, max_lines=1)
dl_out2 = gr.TextArea(show_label=False, interactive=False, lines=5)
dl_load.click(fn=load_token, inputs=[], outputs=[dl_out2, dl_token1, dl_token2, dl_out2])
dl_save.click(fn=lambda token2, token3: save_token(None, token2, token3), inputs=[dl_token1, dl_token2], outputs=dl_out2)
dl_dl.click(fn=downloader, inputs=[dl_input, dl_token1, dl_token2, gr.State()], outputs=[dl_out1, dl_out2])
dl_txt.upload(fn=read_txt, inputs=[dl_txt, dl_input], outputs=dl_input)
dl_scrape.click(fn=scraper, inputs=[dl_input, dl_token1, gr.State()], outputs=[dl_input, dl_out2])
with gr.TabItem("Uploader", elem_id="hub-up"):
gr.Markdown("""<div style='text-align: center;'><h3 style='font-size: 18px;'>🤗 Upload To Huggingface</h3></div>""")
with FormRow():
with FormColumn(scale=7):
gr.Markdown(f"{upl_md}")
with FormColumn(scale=3, variant="panel"):
gr.Textbox(visible=False, max_lines=1)
upl_token = gr.Textbox(value=token1, label="Huggingface Token (WRITE)", max_lines=1,
placeholder="Your Huggingface Token here (role = WRITE)", interactive=True)
with FormRow(scale=1):
upl_save = gr.Button(value="SAVE", variant="primary", min_width=0)
upl_load = gr.Button(value="LOAD", variant="primary", min_width=0)
with FormRow(scale=1):
user_box = gr.Textbox(max_lines=1, placeholder="Username", label="Username", scale=1)
repo_box = gr.Textbox(max_lines=1, placeholder="Repository", label="Repository", scale=1)
branch_box = gr.Textbox(value="main", max_lines=1, placeholder="Branch", label="Branch", elem_classes="up-btn", scale=1)
repo_radio = gr.Radio(["Public", "Private"], value="Private", label="Visibility", interactive=True, scale=1)
gr.Textbox(max_lines=1, show_label=False, scale=2, elem_classes="hide-this")
upl_inputs = gr.Textbox(show_label=False, lines=5, placeholder="Input File Path")
with FormRow():
with FormColumn(scale=1):
upl_btn = gr.Button("UPLOAD", variant="primary")
with FormColumn(scale=1):
gr.Button("hantu", variant="primary", elem_classes="hide-this")
with FormColumn(scale=2, variant="compact"):
upl_output1 = gr.Textbox(show_label=False, interactive=False, max_lines=1)
upl_output2 = gr.Textbox(show_label=False, interactive=False, lines=5)
upl_load.click(fn=load_token,inputs=[], outputs=[upl_token, upl_output2, upl_output2, upl_output2])
upl_save.click(fn=lambda token1: save_token(token1, None, None), inputs=[upl_token], outputs=upl_output2)
upl_btn.click(fn=uploader, inputs=[upl_inputs, user_box, repo_box, branch_box, upl_token, repo_radio, gr.State()],
outputs=[upl_output1, upl_output2])
with gr.TabItem("Archiver", elem_id="hub-arc", elem_classes="tabs"):
with FormRow():
with FormColumn():
gr.Markdown(f"{arc_md1}")
with FormColumn():
gr.Markdown(f"{arc_md2}")
gr.Markdown("""<div><h3 style='font-size: 17px;'>Archive</h3></div>""", scale=1)
arc_format = gr.Radio(["tar.lz4", "tar.gz", "zip"], value="tar.lz4", label="Format", interactive=True)
arc_split = gr.Radio(["None", "2", "3", "4", "5"], value="None", label="Split by", interactive=True)
with FormRow():
arc_name = gr.Textbox(max_lines=1, placeholder="Name", show_label=False)
gr.Textbox("hantu", max_lines=1, show_label=False, elem_classes="hide-this")
with gr.Column(elem_classes="arc-row"):
arc_in = gr.Textbox(max_lines=1, placeholder="Input Path", show_label=False)
arc_out = gr.Textbox(max_lines=1, placeholder="Output Path", show_label=False)
with gr.Row(elem_classes="arc-row"):
with gr.Column():
with gr.Row():
arc_run = gr.Button("Compress", variant="primary")
mkdir_cb1 = gr.Checkbox(label="Create Directory", default=False, elem_classes="cb")
with gr.Column():
arc_output1 = gr.Textbox(show_label=False, interactive=False, max_lines=1)
arc_output2 = gr.Textbox(show_label=False, interactive=False, lines=5)
gr.Markdown("""<div><h3 style='font-size: 17px;'>Extract</h3></div>""")
extr_in = gr.Textbox(max_lines=1, placeholder="Input Path", show_label=False)
extr_out = gr.Textbox(max_lines=1, placeholder="Output Path", show_label=False)
with gr.Row(elem_classes="arc-row"):
with gr.Column():
with gr.Row():
extr_btn = gr.Button("Decompress", variant="primary", elem_classes="arc-btn")
mkdir_cb2 = gr.Checkbox(label="Create Directory", default=False, elem_classes="cb")
with gr.Column():
gr.Textbox(show_label=False, interactive=False, max_lines=1, elem_classes="hide-this")
arc_run.click(fn=archive, inputs=[arc_in, arc_name, arc_out, arc_format, mkdir_cb1, arc_split, gr.State()], outputs=[arc_output1, arc_output2])
extr_btn.click(fn=extract, inputs=[extr_in, extr_out, mkdir_cb2, gr.State()], outputs=[arc_output1, arc_output2])
with gr.Accordion("Tag List", open=False, visible=True):
gr.DataFrame(path_path(), headers=["Tag", "Path"], datatype=["str", "str"], interactive=False)
gr.HTML(f"""<div style="text-align: center; font-size: 12px;">
<h4><a href="https://github.com/gutris1/sd-hub" style="color: gray;">SD-Hub • v{version}</a></h4>""")
hub.load(fn=load_token, inputs=[], outputs=[upl_token, dl_token1, dl_token2, dl_out2, upl_output2], queue=False)
return (hub, "HUB", "hub"),
script_callbacks.on_ui_tabs(on_ui_tabs)
print(f"\033[38;5;208m▶\033[0m SD-Hub: \033[38;5;39mv{version}\033[0m")