| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package dto
- import (
- "encoding/json"
- )
- type TaskData interface {
- SunoDataResponse | []SunoDataResponse | string | any
- }
- type SunoSubmitReq struct {
- GptDescriptionPrompt string `json:"gpt_description_prompt,omitempty"`
- Prompt string `json:"prompt,omitempty"`
- Mv string `json:"mv,omitempty"`
- Title string `json:"title,omitempty"`
- Tags string `json:"tags,omitempty"`
- ContinueAt float64 `json:"continue_at,omitempty"`
- TaskID string `json:"task_id,omitempty"`
- ContinueClipId string `json:"continue_clip_id,omitempty"`
- MakeInstrumental bool `json:"make_instrumental"`
- }
- type FetchReq struct {
- IDs []string `json:"ids"`
- }
- type SunoDataResponse struct {
- TaskID string `json:"task_id" gorm:"type:varchar(50);index"`
- Action string `json:"action" gorm:"type:varchar(40);index"` // 任务类型, song, lyrics, description-mode
- Status string `json:"status" gorm:"type:varchar(20);index"` // 任务状态, submitted, queueing, processing, success, failed
- FailReason string `json:"fail_reason"`
- SubmitTime int64 `json:"submit_time" gorm:"index"`
- StartTime int64 `json:"start_time" gorm:"index"`
- FinishTime int64 `json:"finish_time" gorm:"index"`
- Data json.RawMessage `json:"data" gorm:"type:json"`
- }
- type SunoSong struct {
- ID string `json:"id"`
- VideoURL string `json:"video_url"`
- AudioURL string `json:"audio_url"`
- ImageURL string `json:"image_url"`
- ImageLargeURL string `json:"image_large_url"`
- MajorModelVersion string `json:"major_model_version"`
- ModelName string `json:"model_name"`
- Status string `json:"status"`
- Title string `json:"title"`
- Text string `json:"text"`
- Metadata SunoMetadata `json:"metadata"`
- }
- type SunoMetadata struct {
- Tags string `json:"tags"`
- Prompt string `json:"prompt"`
- GPTDescriptionPrompt interface{} `json:"gpt_description_prompt"`
- AudioPromptID interface{} `json:"audio_prompt_id"`
- Duration interface{} `json:"duration"`
- ErrorType interface{} `json:"error_type"`
- ErrorMessage interface{} `json:"error_message"`
- }
- type SunoLyrics struct {
- ID string `json:"id"`
- Status string `json:"status"`
- Title string `json:"title"`
- Text string `json:"text"`
- }
- const TaskSuccessCode = "success"
- type TaskResponse[T TaskData] struct {
- Code string `json:"code"`
- Message string `json:"message"`
- Data T `json:"data"`
- }
- func (t *TaskResponse[T]) IsSuccess() bool {
- return t.Code == TaskSuccessCode
- }
- type TaskDto struct {
- TaskID string `json:"task_id"` // 第三方id,不一定有/ song id\ Task id
- Action string `json:"action"` // 任务类型, song, lyrics, description-mode
- Status string `json:"status"` // 任务状态, submitted, queueing, processing, success, failed
- FailReason string `json:"fail_reason"`
- SubmitTime int64 `json:"submit_time"`
- StartTime int64 `json:"start_time"`
- FinishTime int64 `json:"finish_time"`
- Progress string `json:"progress"`
- Data json.RawMessage `json:"data"`
- }
- type SunoGoAPISubmitReq struct {
- CustomMode bool `json:"custom_mode"`
- Input SunoGoAPISubmitReqInput `json:"input"`
- NotifyHook string `json:"notify_hook,omitempty"`
- }
- type SunoGoAPISubmitReqInput struct {
- GptDescriptionPrompt string `json:"gpt_description_prompt"`
- Prompt string `json:"prompt"`
- Mv string `json:"mv"`
- Title string `json:"title"`
- Tags string `json:"tags"`
- ContinueAt float64 `json:"continue_at"`
- TaskID string `json:"task_id"`
- ContinueClipId string `json:"continue_clip_id"`
- MakeInstrumental bool `json:"make_instrumental"`
- }
- type GoAPITaskResponse[T any] struct {
- Code int `json:"code"`
- Message string `json:"message"`
- Data T `json:"data"`
- ErrorMessage string `json:"error_message,omitempty"`
- }
- type GoAPITaskResponseData struct {
- TaskID string `json:"task_id"`
- }
- type GoAPIFetchResponseData struct {
- TaskID string `json:"task_id"`
- Status string `json:"status"`
- Input string `json:"input"`
- Clips map[string]SunoSong `json:"clips"`
- }
|