Civitai / app.py
SenY's picture
debug
fafdf4e
raw
history blame contribute delete
No virus
2.88 kB
import gradio as gr
import json
from pathlib import Path
import re
from bs4 import BeautifulSoup
import base64
fileid2json = json.loads(Path("fileid2json.json").read_text())
fileid2image = json.loads(Path("fileid2image.json").read_text())
autov22fileid = json.loads(Path("autov22fileid.json").read_text())
filename2fileid = json.loads(Path("filename2fileid.json").read_text())
name2fileid = json.loads(Path("name2fileid.json").read_text())
def fileids2html(fileids, query):
html = BeautifulSoup("<div></div>", "html.parser")
for fileid in sorted(list(fileids), reverse=True, key=lambda x:int(x)):
src = "https://huggingface.co/front/assets/huggingface_logo-noborder.svg"
if fileid in fileid2image:
src = fileid2image[fileid.strip()]
div = html.new_tag("div", style="height:16rem;")
h1 = html.new_tag("h1")
a = html.new_tag("a", target="_blank")
a.append(str(fileid))
h1.append(a)
textarea = html.new_tag("textarea", dir="ltr", style='color:var(--body-text-color);display:inline-block;overflow:auto;width:calc(100% - 256px);height:100%;background:var(--block-background-fill);')
html.append(h1)
html.append(div)
div.append(textarea)
div.append(html.new_tag("img", src=src, style='display:inline-block;max-width:256px;height:100%;vertical-align:initial;'))
if fileid in fileid2json:
j = fileid2json[fileid.strip()]
a["href"] = j["notes"]
textarea.append(json.dumps(j, indent=2, ensure_ascii=False))
j = base64.b64encode(json.dumps(j, indent=2, ensure_ascii=False).encode()).decode()
a2 = html.new_tag("a", download="{}.json".format(query), href="data:application/json;base64,{}".format(j), style="margin-left:3rem;")
a2.append("Save JSON")
h1.append(a2)
html.append(html.new_tag("hr", style="margin-top:1rem;margin-bottom:1rem;"))
return str(html)
def greet(query):
fileids = set()
fileid = query
hit = None
if query.upper() in autov22fileid:
fileid = str(autov22fileid[query.upper()])
fileids.add(fileid)
hit = True
if re.sub(r'\..*$', "", query) in filename2fileid:
fileid = str(filename2fileid[re.sub(r'\..*$', "", query)])
fileids.add(fileid)
hit = True
if query in name2fileid:
fileid = str(name2fileid[query])
fileids.add(fileid)
if hit is not True:
for k, v in [(k.lower(), v) for k, v in name2fileid.items()]:
if re.search(re.compile(query), k):
fileid = str(v)
fileids.add(fileid)
return fileids2html(fileids, query)
iface = gr.Interface(fn=greet, inputs="text", outputs="html", allow_flagging='never', css='#component-4 { max-width: 16rem; }')
iface.launch(server_name="0.0.0.0")