25 lines
688 B
Python
25 lines
688 B
Python
from __future__ import annotations
|
|
|
|
from typing import Callable
|
|
|
|
from ai_daily_report.models import SourceConfig
|
|
from ai_daily_report.sources.aihot import fetch_aihot
|
|
from ai_daily_report.sources.juya import fetch_juya
|
|
from ai_daily_report.sources.rss import fetch_rss
|
|
|
|
|
|
SourceFetcher = Callable[[SourceConfig, str, Callable[[str, int], str]], list[dict]]
|
|
|
|
SOURCE_FETCHERS: dict[str, SourceFetcher] = {
|
|
"aihot": fetch_aihot,
|
|
"rss": fetch_rss,
|
|
"juya_rss": fetch_juya,
|
|
}
|
|
|
|
|
|
def get_source_fetcher(source_type: str) -> SourceFetcher:
|
|
if source_type not in SOURCE_FETCHERS:
|
|
raise KeyError(f"Unknown source type: {source_type}")
|
|
return SOURCE_FETCHERS[source_type]
|
|
|