f5_model_final / app /controllers /scraper_controller.py
EL GHAFRAOUI AYOUB
C'
6f14d8b
from fastapi import APIRouter, Request, HTTPException
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel, HttpUrl
from app.services.scraper_service import ScraperService
from app.services.flan_t5_service import FlanT5Service
from typing import Optional
router = APIRouter()
templates = Jinja2Templates(directory="app/templates")
scraper_service = ScraperService()
flan_t5_service = FlanT5Service()
class ScrapeRequest(BaseModel):
url: HttpUrl
prompt_template: Optional[str] = "Summarize the following text: {text}"
@router.post("/api/scrape")
async def scrape_url(data: ScrapeRequest):
try:
# Scrape and process the URL
text, chunks = await scraper_service.scrape_and_process(str(data.url))
# Process each chunk with Flan-T5
results = []
for chunk in chunks:
prompt = data.prompt_template.format(text=chunk.page_content)
response = await flan_t5_service.generate_response(prompt)
results.append(response)
# Combine results
final_result = " ".join(results)
return {
"success": True,
"result": final_result,
"url": str(data.url)
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/history")
async def show_history(request: Request):
# You can add history functionality later if needed
return templates.TemplateResponse("history.html", {"request": request})