♻️ 在 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:
_schedule_class_platform_dict[site].append(platform_name)
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:
logger.warning(f"{site.name} requires browser, it will not schedule.")
continue
@ -47,6 +44,9 @@ async def init_scheduler():
)
platform_name_list = _schedule_class_platform_dict[site]
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_delete_target_hook(handle_delete_target)

View File

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

View File

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