Commit a33a3eae by Seefs

fix: vertex ai video proxy and task polling improvements

parent b16eb881
...@@ -149,7 +149,7 @@ func getVertexVideoURL(channel *model.Channel, task *model.Task) (string, error) ...@@ -149,7 +149,7 @@ func getVertexVideoURL(channel *model.Channel, task *model.Task) (string, error)
if channel == nil || task == nil { if channel == nil || task == nil {
return "", fmt.Errorf("invalid channel or task") return "", fmt.Errorf("invalid channel or task")
} }
if url := strings.TrimSpace(task.GetResultURL()); url != "" { if url := strings.TrimSpace(task.GetResultURL()); url != "" && !isTaskProxyContentURL(url, task.TaskID) {
return url, nil return url, nil
} }
if url := extractVertexVideoURLFromTaskData(task); url != "" { if url := extractVertexVideoURLFromTaskData(task); url != "" {
...@@ -198,6 +198,13 @@ func getVertexVideoURL(channel *model.Channel, task *model.Task) (string, error) ...@@ -198,6 +198,13 @@ func getVertexVideoURL(channel *model.Channel, task *model.Task) (string, error)
return "", fmt.Errorf("vertex video url not found") return "", fmt.Errorf("vertex video url not found")
} }
func isTaskProxyContentURL(url string, taskID string) bool {
if strings.TrimSpace(url) == "" || strings.TrimSpace(taskID) == "" {
return false
}
return strings.Contains(url, "/v1/videos/"+taskID+"/content")
}
func getVertexTaskKey(channel *model.Channel, task *model.Task) string { func getVertexTaskKey(channel *model.Channel, task *model.Task) string {
if task != nil { if task != nil {
if key := strings.TrimSpace(task.PrivateData.Key); key != "" { if key := strings.TrimSpace(task.PrivateData.Key); key != "" {
......
...@@ -421,6 +421,7 @@ func updateVideoSingleTask(ctx context.Context, adaptor TaskPollingAdaptor, ch * ...@@ -421,6 +421,7 @@ func updateVideoSingleTask(ctx context.Context, adaptor TaskPollingAdaptor, ch *
} }
if strings.HasPrefix(taskResult.Url, "data:") { if strings.HasPrefix(taskResult.Url, "data:") {
// data: URI (e.g. Vertex base64 encoded video) — keep in Data, not in ResultURL // data: URI (e.g. Vertex base64 encoded video) — keep in Data, not in ResultURL
task.PrivateData.ResultURL = taskcommon.BuildProxyURL(task.TaskID)
} else if taskResult.Url != "" { } else if taskResult.Url != "" {
// Direct upstream URL (e.g. Kling, Ali, Doubao, etc.) // Direct upstream URL (e.g. Kling, Ali, Doubao, etc.)
task.PrivateData.ResultURL = taskResult.Url task.PrivateData.ResultURL = taskResult.Url
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment