fix(tencent): support current video publish page

This commit is contained in:
tankztz
2026-08-06 18:57:56 +08:00
parent 008e4ff66a
commit 2dfae17775
+28 -11
View File
@@ -569,12 +569,22 @@ class TencentBaseUploader(BaseVideoUploader):
fi = await find_file_input() fi = await find_file_input()
if fi is None: if fi is None:
# 助手落在首页:先点「发表视频」唤出编辑器与上传控件 # 新版视频号助手先落在首页;必须点击唯一可见的「发表视频」按钮,
publish_btn = page.get_by_text("发表视频").first # 路由切到 /platform/post/create 后上传 input 才会挂载。
if await publish_btn.count(): publish_buttons = page.get_by_role("button", name="发表视频", exact=True)
await publish_btn.click() clicked_publish = False
await asyncio.sleep(3) for index in range(await publish_buttons.count()):
for _ in range(20): candidate = publish_buttons.nth(index)
if await candidate.is_visible():
await candidate.click(force=True)
clicked_publish = True
break
if clicked_publish:
try:
await page.wait_for_url("**/platform/post/create", timeout=30000)
except Exception:
pass
for _ in range(45):
fi = await find_file_input() fi = await find_file_input()
if fi is not None: if fi is not None:
break break
@@ -717,13 +727,20 @@ class TencentBaseUploader(BaseVideoUploader):
tencent_logger.warning(_msg("📭", "本视频未声明原创(页面无入口或为可选项),跳过并继续发布")) tencent_logger.warning(_msg("📭", "本视频未声明原创(页面无入口或为可选项),跳过并继续发布"))
async def wait_for_upload_complete(self, page: Page) -> None: async def wait_for_upload_complete(self, page: Page) -> None:
deadline = asyncio.get_running_loop().time() + 20 * 60
while True: while True:
if asyncio.get_running_loop().time() >= deadline:
raise TimeoutError("等待视频号上传完成超过 20 分钟")
try: try:
publish_button = page.get_by_role("button", name="发表") publish_button = page.locator('div.form-btns button:has-text("发表"):visible').first
button_class = await publish_button.get_attribute("class") if await publish_button.count():
if button_class and "weui-desktop-btn_disabled" not in button_class: button_class = await publish_button.get_attribute("class")
tencent_logger.info(_msg("🥳", "视频上传完毕")) if (
break not await publish_button.is_disabled()
and (not button_class or "weui-desktop-btn_disabled" not in button_class)
):
tencent_logger.info(_msg("🥳", "视频上传完毕"))
break
tencent_logger.info(_msg("🏃", "正在上传视频中...")) tencent_logger.info(_msg("🏃", "正在上传视频中..."))
await asyncio.sleep(2) await asyncio.sleep(2)