42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
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",
|
|
]
|