"""Base class for all news collectors.""" from abc import ABC, abstractmethod from shared.models import NewsItem class BaseCollector(ABC): name: str = "base" poll_interval: int = 300 # seconds @abstractmethod async def collect(self) -> list[NewsItem]: """Collect news items from the source.""" @abstractmethod async def is_available(self) -> bool: """Check if this data source is accessible."""