genz27 Warp commited on
Commit ·
749a764
1
Parent(s): deb4314
fix: 修复打码配置热加载和模型转换问题
Browse files- 修复热加载缺少 ezcaptcha/capmonster/capsolver 配置同步
- EZ-Captcha 改用 ReCaptchaV3TaskProxylessS9 高分值版本
- 获取不到 reCAPTCHA token 时直接返回错误
- 修复 TIER_TWO portrait 模型名称转换错误
Co-Authored-By: Warp <agent@warp.dev>
- src/core/database.py +6 -0
- src/services/flow_client.py +15 -8
- src/services/generation_handler.py +4 -3
src/core/database.py
CHANGED
|
@@ -1100,6 +1100,12 @@ class Database:
|
|
| 1100 |
config.set_captcha_method(captcha_config.captcha_method)
|
| 1101 |
config.set_yescaptcha_api_key(captcha_config.yescaptcha_api_key)
|
| 1102 |
config.set_yescaptcha_base_url(captcha_config.yescaptcha_base_url)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1103 |
|
| 1104 |
# Cache config operations
|
| 1105 |
async def get_cache_config(self) -> CacheConfig:
|
|
|
|
| 1100 |
config.set_captcha_method(captcha_config.captcha_method)
|
| 1101 |
config.set_yescaptcha_api_key(captcha_config.yescaptcha_api_key)
|
| 1102 |
config.set_yescaptcha_base_url(captcha_config.yescaptcha_base_url)
|
| 1103 |
+
config.set_capmonster_api_key(captcha_config.capmonster_api_key)
|
| 1104 |
+
config.set_capmonster_base_url(captcha_config.capmonster_base_url)
|
| 1105 |
+
config.set_ezcaptcha_api_key(captcha_config.ezcaptcha_api_key)
|
| 1106 |
+
config.set_ezcaptcha_base_url(captcha_config.ezcaptcha_base_url)
|
| 1107 |
+
config.set_capsolver_api_key(captcha_config.capsolver_api_key)
|
| 1108 |
+
config.set_capsolver_base_url(captcha_config.capsolver_base_url)
|
| 1109 |
|
| 1110 |
# Cache config operations
|
| 1111 |
async def get_cache_config(self) -> CacheConfig:
|
src/services/flow_client.py
CHANGED
|
@@ -503,7 +503,8 @@ class FlowClient:
|
|
| 503 |
for retry_attempt in range(max_retries):
|
| 504 |
# 每次重试都重新获取 reCAPTCHA token
|
| 505 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="IMAGE_GENERATION")
|
| 506 |
-
|
|
|
|
| 507 |
session_id = self._generate_session_id()
|
| 508 |
|
| 509 |
# 构建请求 - clientContext 只在外层,requests 内不重复
|
|
@@ -576,7 +577,8 @@ class FlowClient:
|
|
| 576 |
|
| 577 |
# 获取 reCAPTCHA token - 使用 IMAGE_GENERATION action
|
| 578 |
recaptcha_token, _ = await self._get_recaptcha_token(project_id, action="IMAGE_GENERATION")
|
| 579 |
-
|
|
|
|
| 580 |
session_id = self._generate_session_id()
|
| 581 |
|
| 582 |
json_data = {
|
|
@@ -646,7 +648,8 @@ class FlowClient:
|
|
| 646 |
for retry_attempt in range(max_retries):
|
| 647 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 648 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 649 |
-
|
|
|
|
| 650 |
session_id = self._generate_session_id()
|
| 651 |
scene_id = str(uuid.uuid4())
|
| 652 |
|
|
@@ -731,7 +734,8 @@ class FlowClient:
|
|
| 731 |
for retry_attempt in range(max_retries):
|
| 732 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 733 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 734 |
-
|
|
|
|
| 735 |
session_id = self._generate_session_id()
|
| 736 |
scene_id = str(uuid.uuid4())
|
| 737 |
|
|
@@ -819,7 +823,8 @@ class FlowClient:
|
|
| 819 |
for retry_attempt in range(max_retries):
|
| 820 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 821 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 822 |
-
|
|
|
|
| 823 |
session_id = self._generate_session_id()
|
| 824 |
scene_id = str(uuid.uuid4())
|
| 825 |
|
|
@@ -910,7 +915,8 @@ class FlowClient:
|
|
| 910 |
for retry_attempt in range(max_retries):
|
| 911 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 912 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 913 |
-
|
|
|
|
| 914 |
session_id = self._generate_session_id()
|
| 915 |
scene_id = str(uuid.uuid4())
|
| 916 |
|
|
@@ -998,7 +1004,8 @@ class FlowClient:
|
|
| 998 |
|
| 999 |
for retry_attempt in range(max_retries):
|
| 1000 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 1001 |
-
|
|
|
|
| 1002 |
session_id = self._generate_session_id()
|
| 1003 |
scene_id = str(uuid.uuid4())
|
| 1004 |
|
|
@@ -1203,7 +1210,7 @@ class FlowClient:
|
|
| 1203 |
elif method == "ezcaptcha":
|
| 1204 |
client_key = config.ezcaptcha_api_key
|
| 1205 |
base_url = config.ezcaptcha_base_url
|
| 1206 |
-
task_type = "
|
| 1207 |
elif method == "capsolver":
|
| 1208 |
client_key = config.capsolver_api_key
|
| 1209 |
base_url = config.capsolver_base_url
|
|
|
|
| 503 |
for retry_attempt in range(max_retries):
|
| 504 |
# 每次重试都重新获取 reCAPTCHA token
|
| 505 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="IMAGE_GENERATION")
|
| 506 |
+
if not recaptcha_token:
|
| 507 |
+
raise Exception("Failed to obtain reCAPTCHA token")
|
| 508 |
session_id = self._generate_session_id()
|
| 509 |
|
| 510 |
# 构建请求 - clientContext 只在外层,requests 内不重复
|
|
|
|
| 577 |
|
| 578 |
# 获取 reCAPTCHA token - 使用 IMAGE_GENERATION action
|
| 579 |
recaptcha_token, _ = await self._get_recaptcha_token(project_id, action="IMAGE_GENERATION")
|
| 580 |
+
if not recaptcha_token:
|
| 581 |
+
raise Exception("Failed to obtain reCAPTCHA token")
|
| 582 |
session_id = self._generate_session_id()
|
| 583 |
|
| 584 |
json_data = {
|
|
|
|
| 648 |
for retry_attempt in range(max_retries):
|
| 649 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 650 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 651 |
+
if not recaptcha_token:
|
| 652 |
+
raise Exception("Failed to obtain reCAPTCHA token")
|
| 653 |
session_id = self._generate_session_id()
|
| 654 |
scene_id = str(uuid.uuid4())
|
| 655 |
|
|
|
|
| 734 |
for retry_attempt in range(max_retries):
|
| 735 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 736 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 737 |
+
if not recaptcha_token:
|
| 738 |
+
raise Exception("Failed to obtain reCAPTCHA token")
|
| 739 |
session_id = self._generate_session_id()
|
| 740 |
scene_id = str(uuid.uuid4())
|
| 741 |
|
|
|
|
| 823 |
for retry_attempt in range(max_retries):
|
| 824 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 825 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 826 |
+
if not recaptcha_token:
|
| 827 |
+
raise Exception("Failed to obtain reCAPTCHA token")
|
| 828 |
session_id = self._generate_session_id()
|
| 829 |
scene_id = str(uuid.uuid4())
|
| 830 |
|
|
|
|
| 915 |
for retry_attempt in range(max_retries):
|
| 916 |
# 每次重试都重新获取 reCAPTCHA token - 视频使用 VIDEO_GENERATION action
|
| 917 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 918 |
+
if not recaptcha_token:
|
| 919 |
+
raise Exception("Failed to obtain reCAPTCHA token")
|
| 920 |
session_id = self._generate_session_id()
|
| 921 |
scene_id = str(uuid.uuid4())
|
| 922 |
|
|
|
|
| 1004 |
|
| 1005 |
for retry_attempt in range(max_retries):
|
| 1006 |
recaptcha_token, browser_id = await self._get_recaptcha_token(project_id, action="VIDEO_GENERATION")
|
| 1007 |
+
if not recaptcha_token:
|
| 1008 |
+
raise Exception("Failed to obtain reCAPTCHA token")
|
| 1009 |
session_id = self._generate_session_id()
|
| 1010 |
scene_id = str(uuid.uuid4())
|
| 1011 |
|
|
|
|
| 1210 |
elif method == "ezcaptcha":
|
| 1211 |
client_key = config.ezcaptcha_api_key
|
| 1212 |
base_url = config.ezcaptcha_base_url
|
| 1213 |
+
task_type = "ReCaptchaV3TaskProxylessS9"
|
| 1214 |
elif method == "capsolver":
|
| 1215 |
client_key = config.capsolver_api_key
|
| 1216 |
base_url = config.capsolver_base_url
|
src/services/generation_handler.py
CHANGED
|
@@ -1001,14 +1001,15 @@ class GenerationHandler:
|
|
| 1001 |
# 如果模型 key 不包含 ultra,自动添加
|
| 1002 |
if "ultra" not in model_key:
|
| 1003 |
# veo_3_1_i2v_s_fast_fl -> veo_3_1_i2v_s_fast_ultra_fl
|
|
|
|
| 1004 |
# veo_3_1_t2v_fast -> veo_3_1_t2v_fast_ultra
|
|
|
|
| 1005 |
# veo_3_0_r2v_fast -> veo_3_0_r2v_fast_ultra
|
| 1006 |
if "_fl" in model_key:
|
| 1007 |
model_key = model_key.replace("_fl", "_ultra_fl")
|
| 1008 |
-
|
|
|
|
| 1009 |
model_key = model_key + "_ultra"
|
| 1010 |
-
elif "_fast_" in model_key:
|
| 1011 |
-
model_key = model_key.replace("_fast_", "_fast_ultra_")
|
| 1012 |
|
| 1013 |
if stream:
|
| 1014 |
yield self._create_stream_chunk(f"TIER_TWO 账号自动切换到 ultra 模型: {model_key}\n")
|
|
|
|
| 1001 |
# 如果模型 key 不包含 ultra,自动添加
|
| 1002 |
if "ultra" not in model_key:
|
| 1003 |
# veo_3_1_i2v_s_fast_fl -> veo_3_1_i2v_s_fast_ultra_fl
|
| 1004 |
+
# veo_3_1_i2v_s_fast_portrait_fl -> veo_3_1_i2v_s_fast_portrait_ultra_fl
|
| 1005 |
# veo_3_1_t2v_fast -> veo_3_1_t2v_fast_ultra
|
| 1006 |
+
# veo_3_1_t2v_fast_portrait -> veo_3_1_t2v_fast_portrait_ultra
|
| 1007 |
# veo_3_0_r2v_fast -> veo_3_0_r2v_fast_ultra
|
| 1008 |
if "_fl" in model_key:
|
| 1009 |
model_key = model_key.replace("_fl", "_ultra_fl")
|
| 1010 |
+
else:
|
| 1011 |
+
# 直接在末尾添加 _ultra
|
| 1012 |
model_key = model_key + "_ultra"
|
|
|
|
|
|
|
| 1013 |
|
| 1014 |
if stream:
|
| 1015 |
yield self._create_stream_chunk(f"TIER_TWO 账号自动切换到 ultra 模型: {model_key}\n")
|