Spaces:
Running
Running
File size: 2,122 Bytes
97308e2 7ab594e 97308e2 7ab594e 97308e2 7ab594e 63c0b2e 1f9fb90 d98a217 f584171 1f9fb90 97308e2 f584171 0a8d481 97308e2 f584171 97308e2 7ab594e 63c0b2e f584171 63c0b2e d98a217 63c0b2e 2983032 d98a217 63c0b2e 1f9fb90 |
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 56 57 58 59 60 61 62 63 64 |
from fastapi import FastAPI, Request
from pydantic import BaseModel
from jinja2 import TemplateNotFound
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from youtube import get_youtube_caption
from inference import predict_emotions, predict_summarization, predict_acceptance
app = FastAPI(docs_url=None, redoc_url=None)
app.mount("/files", StaticFiles(directory="files"), name="files")
templates = Jinja2Templates(directory="static")
@app.exception_handler(TemplateNotFound)
async def not_found_exception_handler(request: Request, exc: TemplateNotFound):
return templates.TemplateResponse("404.html", {"request": request},
status_code=404)
@app.get("/", response_class=HTMLResponse)
async def read_homepage(request: Request):
return templates.TemplateResponse(f"index.html", {"request": request,
"page": "index"})
@app.get("/{page}", response_class=HTMLResponse)
async def read_html(request: Request, page: str = 'index'):
if page.endswith(".html"):
page = page[:-5]
return templates.TemplateResponse(f"{page}.html", {"request": request,
"page": page})
class EmotionRequest(BaseModel):
sum_type: str
text: str
@app.post('/predict_emotion')
async def predict_emo(request: EmotionRequest):
return predict_emotions(request.text)
@app.post('/predict_summarization')
async def predict_sum(request: EmotionRequest):
if request.sum_type == 'sum-video':
text = get_youtube_caption(request.text)
if not text:
return 'Invalid Link'
elif text == 'err':
return 'Something goes wrong...'
elif text == 'no-cap':
return "Unfortunately, this youtube video doesn't contain captions"
else:
text = request.text
return predict_summarization(text)
@app.post('/predict_grammar')
async def predict_gram(request: EmotionRequest):
return predict_acceptance(request.text)
|