auto-save 2026-05-14 13:32 (~4)
This commit is contained in:
@@ -36,6 +36,10 @@ POE_API_KEY=
|
||||
# SKG 豆包/Seedance 视频网关也使用同一套 content JSON 提交格式:
|
||||
# VIDEO_API_BASE_URL=https://ai.skg.com/doubao
|
||||
# VIDEO_API_KEY=
|
||||
# VIDEO_MODEL_SEEDANCE=doubao-seedance-2-0-fast-260128
|
||||
# VIDEO_CREATE_PATHS=/api/v3/contents/generations/tasks
|
||||
# VIDEO_STATUS_PATH=/api/v3/contents/generations/tasks/{id}
|
||||
# VIDEO_CONTENT_PATH=/api/v3/contents/generations/tasks/{id}/content
|
||||
#
|
||||
# 自定义视频网关覆盖;留空时如配置 POE_API_KEY,则走 Poe。
|
||||
VIDEO_API_BASE_URL=
|
||||
|
||||
31
api/main.py
31
api/main.py
@@ -91,14 +91,37 @@ VIDEO_MODEL_ALIASES = {
|
||||
}
|
||||
VIDEO_API_BASE_URL = os.getenv("VIDEO_API_BASE_URL", "").strip()
|
||||
VIDEO_API_KEY = os.getenv("VIDEO_API_KEY", "").strip()
|
||||
VIDEO_CREATE_PATH = os.getenv("VIDEO_CREATE_PATH", "/videos").strip() or "/videos"
|
||||
|
||||
|
||||
def default_video_gateway_paths(base_url: str) -> tuple[str, str, str]:
|
||||
base = base_url.strip().rstrip("/").lower()
|
||||
if "ai.skg.com/doubao" in base:
|
||||
return (
|
||||
"/api/v3/contents/generations/tasks",
|
||||
"/api/v3/contents/generations/tasks/{id}",
|
||||
"/api/v3/contents/generations/tasks/{id}/content",
|
||||
)
|
||||
if "ark.cn-beijing.volces.com" in base:
|
||||
return (
|
||||
"/contents/generations/tasks",
|
||||
"/contents/generations/tasks/{id}",
|
||||
"/contents/generations/tasks/{id}/content",
|
||||
)
|
||||
return ("/videos", "/videos/{id}", "/videos/{id}/content")
|
||||
|
||||
|
||||
DEFAULT_VIDEO_CREATE_PATH, DEFAULT_VIDEO_STATUS_PATH, DEFAULT_VIDEO_CONTENT_PATH = default_video_gateway_paths(VIDEO_API_BASE_URL)
|
||||
VIDEO_CREATE_PATH = os.getenv("VIDEO_CREATE_PATH", DEFAULT_VIDEO_CREATE_PATH).strip() or DEFAULT_VIDEO_CREATE_PATH
|
||||
VIDEO_CREATE_PATHS = [
|
||||
p.strip()
|
||||
for p in os.getenv("VIDEO_CREATE_PATHS", f"{VIDEO_CREATE_PATH},/videos/generations,/video/generations").split(",")
|
||||
for p in os.getenv(
|
||||
"VIDEO_CREATE_PATHS",
|
||||
VIDEO_CREATE_PATH if VIDEO_CREATE_PATH != "/videos" else f"{VIDEO_CREATE_PATH},/videos/generations,/video/generations",
|
||||
).split(",")
|
||||
if p.strip()
|
||||
]
|
||||
VIDEO_STATUS_PATH = os.getenv("VIDEO_STATUS_PATH", "/videos/{id}").strip() or "/videos/{id}"
|
||||
VIDEO_CONTENT_PATH = os.getenv("VIDEO_CONTENT_PATH", "/videos/{id}/content").strip() or "/videos/{id}/content"
|
||||
VIDEO_STATUS_PATH = os.getenv("VIDEO_STATUS_PATH", DEFAULT_VIDEO_STATUS_PATH).strip() or DEFAULT_VIDEO_STATUS_PATH
|
||||
VIDEO_CONTENT_PATH = os.getenv("VIDEO_CONTENT_PATH", DEFAULT_VIDEO_CONTENT_PATH).strip() or DEFAULT_VIDEO_CONTENT_PATH
|
||||
VIDEO_DURATION_FIELD = os.getenv("VIDEO_DURATION_FIELD", "seconds").strip() or "seconds"
|
||||
VIDEO_POLL_TIMEOUT_SECONDS = max(60, int(os.getenv("VIDEO_POLL_TIMEOUT_SECONDS", "900")))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user