face-intel / api /routes /search.py
Marwan
Restructure + add reverse face search (PimEyes-style)
f5eeb1c
Raw
History Blame Contribute Delete
1.32 kB
"""Search routes — scrape + reverse-image-search."""
from __future__ import annotations
from typing import List, Optional
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from api.deps import get_search_service
from models.jobs import JobKind, JobRequest
from services.search_service import SearchService
router = APIRouter()
class SearchRequest(BaseModel):
image_url: Optional[str] = None
image_base64: Optional[str] = None
providers: List[str] = []
scrape_url: Optional[str] = None
@router.post("/reverse")
async def reverse_search(req: SearchRequest, svc: SearchService = Depends(get_search_service)):
job_req = JobRequest(
kind=JobKind.SEARCH,
image_url=req.image_url,
image_base64=req.image_base64,
providers=req.providers,
options={"scrape_url": req.scrape_url} if req.scrape_url else {},
)
return await svc.search(job_req)
@router.post("/scrape")
async def scrape(req: SearchRequest, svc: SearchService = Depends(get_search_service)):
job_req = JobRequest(
kind=JobKind.SEARCH,
image_url=req.image_url,
image_base64=req.image_base64,
providers=req.providers,
options={"scrape_url": req.scrape_url} if req.scrape_url else {},
)
return await svc.search(job_req)