77from typing import Optional
88
99from nonebot .log import logger
10+ from aunly_captcha_solver import CaptchaInfer
1011from playwright .__main__ import main
1112from playwright .async_api import BrowserContext , async_playwright , Page
1213
1314from ..config import plugin_config
1415from .fonts_provider import fill_font
15- from .captcha import resolve_captcha
1616from ..utils import get_path
1717
1818_browser : Optional [BrowserContext ] = None
1919mobile_js = Path (__file__ ).parent .joinpath ("mobile.js" )
2020
2121
2222async def init_browser (proxy = plugin_config .haruka_proxy , ** kwargs ) -> BrowserContext :
23+ logger .info ("初始化浏览器" )
2324 if proxy :
2425 kwargs ["proxy" ] = {"server" : proxy }
2526 global _browser
@@ -38,6 +39,7 @@ async def init_browser(proxy=plugin_config.haruka_proxy, **kwargs) -> BrowserCon
3839 else None
3940 ),
4041 device_scale_factor = 2 ,
42+ timeout = plugin_config .haruka_dynamic_timeout * 1000 ,
4143 ** kwargs ,
4244 )
4345 if plugin_config .haruka_screenshot_style .lower () != "mobile" :
@@ -57,7 +59,7 @@ async def init_browser(proxy=plugin_config.haruka_proxy, **kwargs) -> BrowserCon
5759
5860async def get_browser () -> BrowserContext :
5961 global _browser
60- if not _browser or _browser . browser is None or not _browser . browser . is_connected () :
62+ if not _browser :
6163 _browser = await init_browser ()
6264 return _browser
6365
@@ -78,7 +80,7 @@ async def get_dynamic_screenshot(dynamic_id, style=plugin_config.haruka_screensh
7880 clip ["height" ] = min (clip ["height" ], 32766 )
7981 return (
8082 await page .screenshot (clip = clip , full_page = True , type = "jpeg" , quality = 98 ),
81- err ,
83+ None ,
8284 )
8385 except TimeoutError :
8486 logger .warning (f"截图超时,重试 { i + 1 } /3" )
@@ -115,13 +117,12 @@ async def get_dynamic_screenshot_mobile(dynamic_id, page: Page):
115117 await page .set_viewport_size ({"width" : 460 , "height" : 780 })
116118 await page .route (re .compile ("^https://static.graiax/fonts/(.+)$" ), fill_font )
117119 if plugin_config .haruka_captcha_address :
118- page = await resolve_captcha (url , page )
119- else :
120- await page .goto (
121- url ,
122- wait_until = "networkidle" ,
123- timeout = plugin_config .haruka_dynamic_timeout * 1000 ,
120+ captcha = CaptchaInfer (
121+ plugin_config .haruka_captcha_address , plugin_config .haruka_captcha_token
124122 )
123+ page = await captcha .solve_captcha (page , url )
124+ else :
125+ await page .goto (url , wait_until = "networkidle" )
125126 # 动态被删除或者进审核了
126127 if page .url == "https://m.bilibili.com/404" :
127128 raise Notfound
@@ -137,11 +138,8 @@ async def get_dynamic_screenshot_mobile(dynamic_id, page: Page):
137138 # "dyn.style.overflowWrap='break-word'"
138139 # )
139140
140- await page .wait_for_load_state (state = "domcontentloaded" , timeout = 20000 )
141- if "opus" in page .url :
142- await page .wait_for_selector (".opus-module-author" , state = "visible" )
143- else :
144- await page .wait_for_selector (".dyn-header__author__face" , state = "visible" )
141+ await page .wait_for_load_state (state = "domcontentloaded" )
142+ await page .wait_for_selector (".b-img__inner, .dyn-header__author__face" , state = "visible" )
145143
146144 await page .add_script_tag (path = mobile_js )
147145
@@ -159,7 +157,7 @@ async def get_dynamic_screenshot_mobile(dynamic_id, page: Page):
159157 await page .wait_for_load_state ("domcontentloaded" )
160158
161159 await page .wait_for_timeout (
162- 200 if plugin_config .haruka_dynamic_font_source == "remote" else 50
160+ 1000 if plugin_config .haruka_dynamic_font_source == "remote" else 200
163161 )
164162
165163 # 判断字体是否加载完成
@@ -177,11 +175,7 @@ async def get_dynamic_screenshot_pc(dynamic_id, page: Page):
177175 """电脑端动态截图"""
178176 url = f"https://t.bilibili.com/{ dynamic_id } "
179177 await page .set_viewport_size ({"width" : 2560 , "height" : 1080 })
180- await page .goto (
181- url ,
182- wait_until = "networkidle" ,
183- timeout = plugin_config .haruka_dynamic_timeout * 1000 ,
184- )
178+ await page .goto (url , wait_until = "networkidle" )
185179 # 动态被删除或者进审核了
186180 if page .url == "https://www.bilibili.com/404" :
187181 raise Notfound
0 commit comments