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})