from fastapi import FastAPI, HTTPException from pydantic import BaseModel, HttpUrl from typing import List import requests from google_img_source_search import ReverseImageSearcher, SafeMode import uvicorn app = FastAPI() class SearchItem(BaseModel): page_title: str page_url: str image_url: str class ReverseImageSearchResponse(BaseModel): results: List[SearchItem] @app.get("/", response_model=dict) def root(): """يعني ايه.""" return {"message": "خدتك عليه"} @app.get("/reverse_image_search", response_model=ReverseImageSearchResponse) def reverse_image_search(image_url: HttpUrl): """ هات الصوص. Args: - image_url (HttpUrl): رابط الصورة يا حمار. Returns: - ReverseImageSearchResponse: خليني اطبخ. """ try: rev_img_searcher = ReverseImageSearcher() rev_img_searcher.switch_safe_mode(SafeMode.BLUR) results = rev_img_searcher.search(image_url) if not results: raise HTTPException(status_code=404, detail="ما عرفت والله يا زولي") response = [ SearchItem( page_title=item.page_title, page_url=item.page_url, image_url=item.image_url ) for item in results ] return ReverseImageSearchResponse(results=response) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)