# -*- coding: utf-8 -*- from __future__ import annotations import dataclasses from .types import PStrategy DEFAULT_STRATEGY = 'hotpocket_backend.apps.bot.strategy.basic:BasicStrategy' DEFAULT_BANNED_HOSTNAMES = [ # YT returns dummy data when I try to fetch the page and extract # metadata. I'd have to use Google APIs for that and it's 11:30 PM... 'youtube.com', 'youtu.be', # Reddit's response is too generic to pull any useful info from it. # Since they forced Apollo to shut down, I refuse to even think about # interacting with their API :P. 'reddit.com', # Twitter, amirite? 'twitter.com', 't.co', 'x.com', ] @dataclasses.dataclass(kw_only=True) class Settings: STRATEGY: str BANNED_HOSTNAMES: list[str] def get_strategy(self, *, url: str) -> PStrategy: from hotpocket_common.loader import load_module_attribute strategy = load_module_attribute(self.STRATEGY) return strategy(url) def from_django_settings() -> Settings: from django.conf import settings return Settings( STRATEGY=getattr( settings, 'HOTPOCKET_BOT_STRATEGY', DEFAULT_STRATEGY, ), BANNED_HOSTNAMES=getattr( settings, 'HOTPOCKET_BOT_BANNED_HOSTNAMES', DEFAULT_BANNED_HOSTNAMES, ), ) bot_settings: Settings = None # type: ignore[assignment]