feat: EveryPublish Web 管理端重构与全平台发布接入

- 新增 React + TDesign 管理端(sau_web_react),替代历史 Vue 前端
- 后端接入 11 平台登录/发布(视频+图文),check_cookie 扩展全平台
- 异步发布任务 + 实时进度监控 + 发布日志
- Open API 开放体系(API Key 鉴权 + 7 个开放接口 + API 文档页)
- 账号单/批量校验与批量删除
- 全局配置(登录方式 + 发布静默模式)
- 统一浏览器为系统 Chrome,品牌文案统一为 EveryPublish
This commit is contained in:
Qiufeng
2026-08-21 14:41:47 +08:00
parent 1c66b7db4b
commit fd944b08bd
120 changed files with 6684 additions and 210 deletions
+4 -4
View File
@@ -114,7 +114,7 @@ async def cookie_auth(account_file):
return False
use_headless = os.environ.get("DOUYIN_COOKIE_AUTH_HEADLESS", "true").lower() in ("1", "true", "yes")
launch_kwargs = {"headless": use_headless, "channel": "chromium", "args": ["--no-sandbox", "--disable-blink-features=AutomationControlled"]}
launch_kwargs = {"headless": use_headless, "executable_path": LOCAL_CHROME_PATH, "args": ["--no-sandbox", "--disable-blink-features=AutomationControlled"]}
for _attempt in range(3):
async with async_playwright() as playwright:
browser = await playwright.chromium.launch(**launch_kwargs)
@@ -276,7 +276,7 @@ async def douyin_cookie_gen(
context = browser.contexts[0] if browser.contexts else await browser.new_context()
should_close_context = False
else:
browser = await playwright.chromium.launch(headless=headless, channel="chromium")
browser = await playwright.chromium.launch(headless=headless, executable_path=LOCAL_CHROME_PATH)
context = await browser.new_context()
should_close_context = True
context = await set_init_script(context)
@@ -973,7 +973,7 @@ class DouYinVideo(DouYinBaseUploader):
await self.validate_upload_args()
douyin_logger.info(_msg("🥳", "上传前检查通过"))
browser = await playwright.chromium.launch(headless=self.headless, channel="chromium", args=["--no-sandbox", "--disable-blink-features=AutomationControlled"])
browser = await playwright.chromium.launch(headless=self.headless, executable_path=LOCAL_CHROME_PATH, args=["--no-sandbox", "--disable-blink-features=AutomationControlled"])
context = await browser.new_context(
storage_state=f"{self.account_file}",
permissions=["geolocation"],
@@ -1232,7 +1232,7 @@ class DouYinNote(DouYinBaseUploader):
await self.validate_upload_args()
douyin_logger.info(_msg("🥳", "图文上传前检查通过"))
browser = await playwright.chromium.launch(headless=self.headless, channel="chromium", args=["--no-sandbox", "--disable-blink-features=AutomationControlled"])
browser = await playwright.chromium.launch(headless=self.headless, executable_path=LOCAL_CHROME_PATH, args=["--no-sandbox", "--disable-blink-features=AutomationControlled"])
context = await browser.new_context(
storage_state=f"{self.account_file}",
permissions=["geolocation"],