faceid / app /reverse_search /factory.py
rishik1111's picture
feat: complete face-chain biometric forensic and dual-layer blockchain pipeline
efeddde
Raw History Blame Contribute Delete
1.77 kB
import os
import logging
from app.reverse_search.serpapi_provider import SerpApiGoogleLensProvider
from app.reverse_search.bing_provider import AzureBingVisualSearchProvider
from app.reverse_search.tineye_provider import TinEyeProvider
from app.reverse_search.free_scraper_provider import FreeWebScraperProvider
def get_providers():
"""
Instantiates and returns a list of configured providers.
Order determines fallback priority.
"""
providers = []
# 0. Free Web Scraper (if enabled)
if os.getenv("USE_FREE_SCRAPER", "").lower() == "true":
try:
providers.append(FreeWebScraperProvider())
logging.info("Enabled completely FREE web scraper as primary provider.")
except Exception as e:
logging.warning(f"Failed to initialize FreeWebScraperProvider: {e}")
# 1. SerpApi
if os.getenv("SERPAPI_API_KEY"):
try:
providers.append(SerpApiGoogleLensProvider())
except Exception as e:
logging.warning(f"Failed to initialize SerpApiGoogleLensProvider: {e}")
# 2. Bing Visual Search
if os.getenv("BING_SEARCH_API_KEY"):
try:
providers.append(AzureBingVisualSearchProvider())
except Exception as e:
logging.warning(f"Failed to initialize AzureBingVisualSearchProvider: {e}")
# 3. TinEye
if os.getenv("TINEYE_API_KEY"):
try:
providers.append(TinEyeProvider())
except Exception as e:
logging.warning(f"Failed to initialize TinEyeProvider: {e}")
if not providers:
logging.warning("No reverse image search providers are configured! Please configure API keys in .env.")
return providers