from typing import Optional from app.scrapers.base import BaseScraper from app.scrapers.inaturalist import INaturalistScraper from app.scrapers.flickr import FlickrScraper from app.scrapers.wikimedia import WikimediaScraper from app.scrapers.trefle import TrefleScraper from app.scrapers.gbif import GBIFScraper from app.scrapers.duckduckgo import DuckDuckGoScraper from app.scrapers.bing import BingScraper def get_scraper(source: str) -> Optional[BaseScraper]: """Get scraper instance for a source.""" scrapers = { "inaturalist": INaturalistScraper, "flickr": FlickrScraper, "wikimedia": WikimediaScraper, "trefle": TrefleScraper, "gbif": GBIFScraper, "duckduckgo": DuckDuckGoScraper, "bing": BingScraper, } scraper_class = scrapers.get(source) if scraper_class: return scraper_class() return None __all__ = [ "get_scraper", "BaseScraper", "INaturalistScraper", "FlickrScraper", "WikimediaScraper", "TrefleScraper", "GBIFScraper", "DuckDuckGoScraper", "BingScraper", ]