diff --git a/nonebot_bison/platform/bilibili/scheduler.py b/nonebot_bison/platform/bilibili/scheduler.py index 68a2671..0fd43e5 100644 --- a/nonebot_bison/platform/bilibili/scheduler.py +++ b/nonebot_bison/platform/bilibili/scheduler.py @@ -10,8 +10,8 @@ from playwright.async_api import Cookie from nonebot_bison.utils import Site, http_client +from ...utils.site import CookieClientManager from ...config.db_model import Cookie as CookieModel -from ...utils.site import CookieSite, CookieClientManager if TYPE_CHECKING: from .platforms import Bilibili @@ -24,6 +24,8 @@ B = TypeVar("B", bound="Bilibili") class BilibiliClientManager(CookieClientManager): + _default_cookie_cd: int = timedelta(seconds=120) + @classmethod async def _get_cookies(self) -> list[Cookie]: browser = await get_browser() @@ -73,13 +75,12 @@ class BilibiliClientManager(CookieClientManager): return http_client() -class BilibiliSite(CookieSite): +class BilibiliSite(Site): name = "bilibili.com" schedule_setting = {"seconds": 60} schedule_type = "interval" client_mgr = BilibiliClientManager require_browser = True - default_cookie_cd: int = timedelta(seconds=120) class BililiveSite(Site): diff --git a/nonebot_bison/platform/rss.py b/nonebot_bison/platform/rss.py index bc2665f..8be0867 100644 --- a/nonebot_bison/platform/rss.py +++ b/nonebot_bison/platform/rss.py @@ -10,14 +10,14 @@ from ..post import Post from .platform import NewMessage from ..types import Target, RawPost from ..utils import text_similarity -from ..utils.site import CookieSite, CookieClientManager +from ..utils.site import Site, create_cookie_client_manager -class RssSite(CookieSite): +class RssSite(Site): name = "rss" schedule_type = "interval" schedule_setting = {"seconds": 30} - client_mgr = CookieClientManager + client_mgr = create_cookie_client_manager(name) class RssPost(Post): diff --git a/nonebot_bison/platform/weibo.py b/nonebot_bison/platform/weibo.py index e3d7206..6b253c8 100644 --- a/nonebot_bison/platform/weibo.py +++ b/nonebot_bison/platform/weibo.py @@ -13,7 +13,7 @@ from bs4 import BeautifulSoup as bs from ..post import Post from .platform import NewMessage from ..utils import http_client, text_fletten -from ..utils.site import CookieSite, CookieClientManager +from ..utils.site import Site, CookieClientManager from ..types import Tag, Target, RawPost, ApiError, Category _HEADER = { @@ -55,11 +55,11 @@ class WeiboClientManager(CookieClientManager): return text_fletten(f"weibo: [{name[:10]}]") -class WeiboSite(CookieSite): +class WeiboSite(Site): name = "weibo.com" schedule_type = "interval" schedule_setting = {"seconds": 3} - client_mgr = CookieClientManager + client_mgr = WeiboClientManager class Weibo(NewMessage): diff --git a/nonebot_bison/sub_manager/add_cookie.py b/nonebot_bison/sub_manager/add_cookie.py index 3f8d6b0..7e6461f 100644 --- a/nonebot_bison/sub_manager/add_cookie.py +++ b/nonebot_bison/sub_manager/add_cookie.py @@ -10,8 +10,8 @@ from nonebot.adapters import Message, MessageTemplate from ..scheduler import scheduler_dict from ..platform import platform_manager +from ..utils.site import CookieClientManager, is_cookie_client_manager from .utils import common_platform, gen_handle_cancel, only_allow_private -from ..utils.site import CookieSite, CookieClientManager, is_cookie_client_manager def do_add_cookie(add_cookie: type[Matcher]): @@ -56,8 +56,7 @@ def do_add_cookie(add_cookie: type[Matcher]): @add_cookie.got("cookie", MessageTemplate("{_prompt}"), [handle_cancel]) async def got_cookie(state: T_State, cookie: Message = Arg()): - cookie_site = cast(type[CookieSite], platform_manager[state["platform"]].site) - client_mgr = cast(CookieClientManager, scheduler_dict[cookie_site].client_mgr) + client_mgr = cast(CookieClientManager, scheduler_dict[platform_manager[state["platform"]].site].client_mgr) cookie_text = cookie.extract_plain_text() if not await client_mgr.validate_cookie(cookie_text): await add_cookie.reject( @@ -75,8 +74,7 @@ def do_add_cookie(add_cookie: type[Matcher]): @add_cookie.handle() async def add_cookie_process(state: T_State): - cookie_site = cast(type[CookieSite], platform_manager[state["platform"]].site) - client_mgr = cast(CookieClientManager, scheduler_dict[cookie_site].client_mgr) + client_mgr = cast(CookieClientManager, scheduler_dict[platform_manager[state["platform"]].site].client_mgr) new_cookie = await client_mgr.add_user_cookie(state["cookie"], state["cookie_name"]) await add_cookie.finish( f"已添加 Cookie: {new_cookie.cookie_name} 到平台 {state['platform']}" diff --git a/nonebot_bison/utils/site.py b/nonebot_bison/utils/site.py index 3f5adca..608a974 100644 --- a/nonebot_bison/utils/site.py +++ b/nonebot_bison/utils/site.py @@ -178,10 +178,6 @@ def create_cookie_client_manager(site_name: str) -> type[CookieClientManager]: ) -class CookieSite(Site): - pass - - def anonymous_site(schedule_type: Literal["date", "interval", "cron"], schedule_setting: dict) -> type[Site]: return type( "AnonymousSite",