From caa3cf245186ab0f6fb33e63a7dd838d834da12e Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Thu, 12 Mar 2026 13:56:30 -0700 Subject: refactor: move to common NewsSource interface cleanup imports by defining initaliazers modules and decorator remove legacy scrapers remove single factory for sega games (sites don't change that much) --- scrapers/registry.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 scrapers/registry.py (limited to 'scrapers/registry.py') diff --git a/scrapers/registry.py b/scrapers/registry.py new file mode 100644 index 0000000..6d9bde6 --- /dev/null +++ b/scrapers/registry.py @@ -0,0 +1,22 @@ +from __future__ import annotations +from typing import Optional, TYPE_CHECKING + +if TYPE_CHECKING: + from scrapers.base import NewsSource + +_registry: dict[str, type["NewsSource"]] = {} + + +def register(url_key: str): + def decorator(cls): + _registry[url_key] = cls + return cls + return decorator + + +def get_source(url_key: str) -> Optional[type["NewsSource"]]: + return _registry.get(url_key) + + +def get_all() -> dict[str, type["NewsSource"]]: + return dict(_registry) -- cgit v1.2.3