import gradio as gr
load_js1 = """
async () => {
const script = document.createElement("script");
script.onload = () => console.log("module loaded") ;
script.type="module";
script.src = "https://ajax.googleapis.com/ajax/libs/model-viewer/3.1.1/model-viewer.min.js";
document.head.appendChild(script)
}"""
load_js2 = """
function(text_input, url_params) {
console.log(text_input, url_params);
const params = new URLSearchParams(window.location.search);
url_params = Object.fromEntries(params);
return [text_input, url_params]
}
"""
def predict(text, url_params):
mod_url=""
mod=gr.HTML("")
out = None
valid=gr.update(visible=False)
try:
mod_url = url_params.get('url')
if mod_url != None:
#print (mod_url)
out = gr.HTML.update(f"""
Loading model from:
{mod_url}
""")
valid=gr.update(visible=False)
else:
out=gr.HTML.update(f"""Enter Model URL
""")
valid=gr.update(visible=True)
except Exception as e:
out=gr.HTML.update(f"""Enter Model URL
""")
valid=gr.update(visible=True)
return ["" + text + "", mod,out,mod_url,valid]
def find_model(url):
out = None
mod=None
if url != "" and url != None:
try:
mod = gr.HTML(f'''
''')
except Exception as e:
out = gr.HTML(f'''Could not find Model
System Message: {e}
''')
else:
out = gr.HTML(f'''Enter Model URL
''')
return mod,out
with gr.Blocks(css="style.css") as app:
markdown = gr.HTML("""""")
with gr.Row(visible=False) as valid:
inp = gr.Textbox(label="URL")
go_btn=gr.Button("Load")
out_html=gr.HTML('''''')
'''
with gr.Tab("iFrame"):
gr.HTML("""
""")
'''
with gr.Row(visible=False):
text_input=gr.Textbox()
text_output=gr.Textbox()
url_params = gr.JSON({}, visible=True, label="")
app.load(None,None,None,_js=load_js1)
app.load(fn=predict, inputs=[text_input,url_params], outputs=[text_output,out_html,markdown,inp,valid],_js=load_js2).then(find_model,inp,[out_html,markdown])
go_btn.click(find_model,inp,[out_html,markdown])
app.launch()