diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-02 13:56:49 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-02 13:56:49 +0900 |
| commit | 080662aaca7d9c3f80fa4dc990254b6b9585c311 (patch) | |
| tree | 77ffea9216d463c878cbba4002252b751c1ad3ad /services/news-collector/src/news_collector/collectors/base.py | |
| parent | 78177596179aeeeb7544509fcc31b2b4c86d7f98 (diff) | |
feat: scaffold news-collector service with BaseCollector
Diffstat (limited to 'services/news-collector/src/news_collector/collectors/base.py')
| -rw-r--r-- | services/news-collector/src/news_collector/collectors/base.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/services/news-collector/src/news_collector/collectors/base.py b/services/news-collector/src/news_collector/collectors/base.py new file mode 100644 index 0000000..bb43fd6 --- /dev/null +++ b/services/news-collector/src/news_collector/collectors/base.py @@ -0,0 +1,18 @@ +"""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.""" |
