♻️ 在 CookieClientManager 中添加对对应的 Site 的引用

This commit is contained in:
suyiiyii 2024-10-29 11:33:28 +08:00
parent 81e53419a3
commit 4805d0d77c
Signed by: suyiiyii
GPG Key ID: 044704CB29B8AD85
3 changed files with 13 additions and 5 deletions

View File

@ -33,9 +33,6 @@ async def init_scheduler():
else: else:
_schedule_class_platform_dict[site].append(platform_name) _schedule_class_platform_dict[site].append(platform_name)
for site, target_list in _schedule_class_dict.items(): for site, target_list in _schedule_class_dict.items():
if is_cookie_client_manager(site.client_mgr):
client_mgr = cast(CookieClientManager, site.client_mgr)
await client_mgr.refresh_client()
if not plugin_config.bison_use_browser and site.require_browser: if not plugin_config.bison_use_browser and site.require_browser:
logger.warning(f"{site.name} requires browser, it will not schedule.") logger.warning(f"{site.name} requires browser, it will not schedule.")
continue continue
@ -47,6 +44,9 @@ async def init_scheduler():
) )
platform_name_list = _schedule_class_platform_dict[site] platform_name_list = _schedule_class_platform_dict[site]
scheduler_dict[site] = Scheduler(site, schedulable_args, platform_name_list) scheduler_dict[site] = Scheduler(site, schedulable_args, platform_name_list)
if is_cookie_client_manager(site.client_mgr):
client_mgr = cast(CookieClientManager, scheduler_dict[site].client_mgr)
await client_mgr.refresh_client()
config.register_add_target_hook(handle_insert_new_target) config.register_add_target_hook(handle_insert_new_target)
config.register_delete_target_hook(handle_delete_target) config.register_delete_target_hook(handle_delete_target)

View File

@ -1,3 +1,4 @@
from typing import cast
from dataclasses import dataclass from dataclasses import dataclass
from collections import defaultdict from collections import defaultdict
@ -12,7 +13,7 @@ from ..send import send_msgs
from ..types import Target, SubUnit from ..types import Target, SubUnit
from ..platform import platform_manager from ..platform import platform_manager
from ..utils import Site, ProcessContext from ..utils import Site, ProcessContext
from ..utils.site import SkipRequestException from ..utils.site import CookieClientManager, SkipRequestException, is_cookie_client_manager
@dataclass @dataclass
@ -40,8 +41,12 @@ class Scheduler:
logger.error(f"scheduler config [{self.name}] not found, exiting") logger.error(f"scheduler config [{self.name}] not found, exiting")
raise RuntimeError(f"{self.name} not found") raise RuntimeError(f"{self.name} not found")
self.scheduler_config = scheduler_config self.scheduler_config = scheduler_config
self.client_mgr = scheduler_config.client_mgr()
self.scheduler_config_obj = self.scheduler_config() self.scheduler_config_obj = self.scheduler_config()
if is_cookie_client_manager(scheduler_config.client_mgr):
cookie_client_mgr = cast(type[CookieClientManager], scheduler_config.client_mgr)
self.client_mgr = cookie_client_mgr(self.scheduler_config_obj)
else:
self.client_mgr = scheduler_config.client_mgr()
self.schedulable_list = [] self.schedulable_list = []
self.batch_platform_name_targets_cache = defaultdict(list) self.batch_platform_name_targets_cache = defaultdict(list)

View File

@ -45,6 +45,9 @@ class DefaultClientManager(ClientManager):
class CookieClientManager(ClientManager): class CookieClientManager(ClientManager):
_site_name: str # 绑定的 site_name需要使用 create_cookie_client_manager 创建 Client_mgr 时绑定 _site_name: str # 绑定的 site_name需要使用 create_cookie_client_manager 创建 Client_mgr 时绑定
def __init__(self, site: "Site") -> None:
self._site = site
@classmethod @classmethod
async def _generate_anonymous_cookie(cls) -> Cookie: async def _generate_anonymous_cookie(cls) -> Cookie:
return Cookie( return Cookie(