|
from pathlib import Path |
|
from fastapi import FastAPI |
|
from fastapi.staticfiles import StaticFiles |
|
import uvicorn |
|
import gradio as gr |
|
from datetime import datetime |
|
|
|
|
|
|
|
app = FastAPI() |
|
|
|
|
|
static_dir = Path('./static') |
|
static_dir.mkdir(parents=True, exist_ok=True) |
|
|
|
|
|
app.mount("/static", StaticFiles(directory=static_dir), name="static") |
|
|
|
|
|
def predict(text_input): |
|
file_name = f"{datetime.utcnow().strftime('%s')}.html" |
|
file_path = static_dir / file_name |
|
print(file_path) |
|
with open(file_path, "w") as f: |
|
f.write(f"""<h2>Hello {text_input} </h2> |
|
<h3>{file_name}</h3> |
|
""") |
|
|
|
return f'<a href="/static/{file_name}" target="_blank">{file_name}</a>' |
|
|
|
|
|
with gr.Blocks() as block: |
|
text_input = gr.Textbox(label="Name") |
|
markdown = gr.Markdown(label="Output Box") |
|
new_btn = gr.Button("New") |
|
new_btn.click(fn=predict, inputs=[text_input], outputs=[markdown]) |
|
|
|
|
|
app = gr.mount_gradio_app(app, block, path="/") |
|
|
|
|
|
if __name__ == "__main__": |
|
uvicorn.run(app, host="0.0.0.0", port=7860) |
|
|