From 080662aaca7d9c3f80fa4dc990254b6b9585c311 Mon Sep 17 00:00:00 2001 From: TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> Date: Thu, 2 Apr 2026 13:56:49 +0900 Subject: feat: scaffold news-collector service with BaseCollector --- .../src/news_collector/collectors/base.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 services/news-collector/src/news_collector/collectors/base.py (limited to 'services/news-collector/src/news_collector/collectors/base.py') 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.""" -- cgit v1.2.3