mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-19 06:07:28 +00:00
Merge pull request #2769 from feitianbubu/pr/3d0aaa75866f8d958a777a7e7ac8c1e4b5b3e537
feat: kling cost quota support use FinalUnitDeduction as totalToken
This commit is contained in:
@@ -4,7 +4,9 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"math"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -80,15 +82,28 @@ type responsePayload struct {
|
|||||||
TaskId string `json:"task_id"`
|
TaskId string `json:"task_id"`
|
||||||
TaskStatus string `json:"task_status"`
|
TaskStatus string `json:"task_status"`
|
||||||
TaskStatusMsg string `json:"task_status_msg"`
|
TaskStatusMsg string `json:"task_status_msg"`
|
||||||
TaskResult struct {
|
TaskInfo struct {
|
||||||
|
ExternalTaskId string `json:"external_task_id"`
|
||||||
|
} `json:"task_info"`
|
||||||
|
WatermarkInfo struct {
|
||||||
|
Enabled bool `json:"enabled"`
|
||||||
|
} `json:"watermark_info"`
|
||||||
|
TaskResult struct {
|
||||||
Videos []struct {
|
Videos []struct {
|
||||||
Id string `json:"id"`
|
Id string `json:"id"`
|
||||||
Url string `json:"url"`
|
Url string `json:"url"`
|
||||||
Duration string `json:"duration"`
|
WatermarkUrl string `json:"watermark_url"`
|
||||||
|
Duration string `json:"duration"`
|
||||||
} `json:"videos"`
|
} `json:"videos"`
|
||||||
|
Images []struct {
|
||||||
|
Index int `json:"index"`
|
||||||
|
Url string `json:"url"`
|
||||||
|
WatermarkUrl string `json:"watermark_url"`
|
||||||
|
} `json:"images"`
|
||||||
} `json:"task_result"`
|
} `json:"task_result"`
|
||||||
CreatedAt int64 `json:"created_at"`
|
CreatedAt int64 `json:"created_at"`
|
||||||
UpdatedAt int64 `json:"updated_at"`
|
UpdatedAt int64 `json:"updated_at"`
|
||||||
|
FinalUnitDeduction string `json:"final_unit_deduction"`
|
||||||
} `json:"data"`
|
} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,15 +353,22 @@ func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.TaskInfo, e
|
|||||||
taskInfo.Status = model.TaskStatusInProgress
|
taskInfo.Status = model.TaskStatusInProgress
|
||||||
case "succeed":
|
case "succeed":
|
||||||
taskInfo.Status = model.TaskStatusSuccess
|
taskInfo.Status = model.TaskStatusSuccess
|
||||||
|
if videos := resPayload.Data.TaskResult.Videos; len(videos) > 0 {
|
||||||
|
video := videos[0]
|
||||||
|
taskInfo.Url = video.Url
|
||||||
|
}
|
||||||
|
if tokens, err := strconv.ParseFloat(resPayload.Data.FinalUnitDeduction, 64); err == nil {
|
||||||
|
rounded := int(math.Ceil(tokens))
|
||||||
|
if rounded > 0 {
|
||||||
|
taskInfo.CompletionTokens = rounded
|
||||||
|
taskInfo.TotalTokens = rounded
|
||||||
|
}
|
||||||
|
}
|
||||||
case "failed":
|
case "failed":
|
||||||
taskInfo.Status = model.TaskStatusFailure
|
taskInfo.Status = model.TaskStatusFailure
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unknown task status: %s", status)
|
return nil, fmt.Errorf("unknown task status: %s", status)
|
||||||
}
|
}
|
||||||
if videos := resPayload.Data.TaskResult.Videos; len(videos) > 0 {
|
|
||||||
video := videos[0]
|
|
||||||
taskInfo.Url = video.Url
|
|
||||||
}
|
|
||||||
return taskInfo, nil
|
return taskInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user