File size: 988 Bytes
b8c72c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import gradio as gr
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles


# 1. Build Gradio interface
def build_ui():
    with gr.Blocks() as demo:
        gr.Markdown("## 🕹️ Motor Control – External JS")

        for i in range(6):
            gr.Slider(
                minimum=0,
                maximum=1,
                step=0.01,
                value=0,
                label=f"motor_{i}",
                elem_id=f"motor_{i}",
            )

        # Load external JS file from /static/client.js
        gr.HTML('<script src="/static/client.js"></script>')

    return demo


demo = build_ui()

# 2. Mount Gradio app into FastAPI
app = FastAPI()
app = gr.mount_gradio_app(app, demo, path="/")

# 3. Serve static assets manually from "assets/" directory
app.mount("/static", StaticFiles(directory="assets"), name="static")

# 4. Launch manually via uvicorn
if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="0.0.0.0", port=7860)