File size: 1,780 Bytes
05be5a5
 
 
 
 
c13ce0c
05be5a5
 
 
943db10
 
 
 
05be5a5
dcf15a2
05be5a5
c13ce0c
05be5a5
943db10
05be5a5
 
943db10
 
 
 
 
 
 
 
 
05be5a5
943db10
 
 
 
 
 
05be5a5
 
 
 
 
943db10
 
 
05be5a5
 
 
 
 
 
943db10
 
6412c24
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from .extractor_server import app as extractor_app, delete_folder_if_old_or_empty, output_folder
from .annorator_server import app as annotator_app
import os
from .config import Config

from fastapi import Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
import os
from jinja2 import Environment, FileSystemLoader, select_autoescape

fast_api = FastAPI()

# Mount static files ONCE
static_folder = os.path.join(Config.current_path, "static")
fast_api.mount("/static", StaticFiles(directory=static_folder), name="static")

fast_api.include_router(extractor_app)
fast_api.include_router(annotator_app)

# Templates
template_dirs = [static_folder]
env = Environment(
    loader=FileSystemLoader(template_dirs),
    autoescape=select_autoescape(['html', 'xml'])
)

# Routes
@fast_api.get("/", response_class=HTMLResponse)
async def index(request: Request):
    delete_folder_if_old_or_empty(output_folder)
    template = env.get_template("index.html")  # From tool/
    html_content = template.render(request=request)
    return HTMLResponse(content=html_content)

@fast_api.get("/annotate", response_class=HTMLResponse)
async def index(request: Request):
    template = env.get_template("annotator.html")  # From tool/
    html_content = template.render(request=request)
    return HTMLResponse(content=html_content)

def main():
    import uvicorn
    uvicorn.run(
        fast_api,
        host="0.0.0.0",  # Or "0.0.0.0" to allow access from other machines
        port=7860,         # Change to any available port, e.g., 8080
        # reload=True        # Enables auto-reload for development (like --reload in CLI)
    )

if __name__ == "__main__":
    main()