Documentation
¶
Index ¶
- Constants
- func ExtractEmailFromJWT(token string) string
- func MaskToken(token string) string
- func MaskURL(rawURL string) string
- func SizeToResolution(size, orientation string) string
- type AdminAPIKeyRequest
- type AdminAPIKeyResponse
- type AdminAccountRequest
- type AdminAccountResponse
- type AdminBatchImportItemResult
- type AdminBatchImportRequest
- type AdminBatchImportResult
- type AdminCharacterResponse
- type AdminGroupRequest
- type CharacterCreateRequest
- type CharacterResponse
- type DashboardStats
- type EnhancePromptRequest
- type EnhancePromptResponse
- type ImageSubmitRequest
- type ImageTaskResponse
- type ModelParams
- type PostCreateRequest
- type PostResponse
- type RemixSubmitRequest
- type SoraAPIKey
- type SoraAccount
- type SoraAccountGroup
- type SoraCharacter
- type SoraSetting
- type SoraTask
- type StoryboardSubmitRequest
- type TaskErrorInfo
- type VideoSubmitRequest
- type VideoTaskResponse
- type WatermarkFreeRequest
- type WatermarkFreeResponse
Constants ¶
const ( AccountStatusActive = "active" AccountStatusTokenExpired = "token_expired" AccountStatusQuotaExhausted = "quota_exhausted" )
账号状态
const ( TaskStatusQueued = "queued" TaskStatusInProgress = "in_progress" TaskStatusCompleted = "completed" TaskStatusFailed = "failed" )
任务状态
const ( CharacterStatusProcessing = "processing" CharacterStatusReady = "ready" CharacterStatusFailed = "failed" )
角色状态
const ( SettingProxyURL = "proxy_url" // 字符串 SettingTokenRefreshInterval = "token_refresh_interval" // Duration 字符串 SettingCreditSyncInterval = "credit_sync_interval" // Duration 字符串 SettingSubscriptionSyncInterval = "subscription_sync_interval" // Duration 字符串 )
配置项 Key 常量
Variables ¶
This section is empty.
Functions ¶
func ExtractEmailFromJWT ¶
ExtractEmailFromJWT 从 JWT Access Token 的 payload 中提取邮箱 JWT 格式为 header.payload.signature,payload 是 base64url 编码的 JSON
func SizeToResolution ¶
SizeToResolution 将 size 转为分辨率字符串
Types ¶
type AdminAPIKeyRequest ¶
type AdminAPIKeyRequest struct {
Name string `json:"name" binding:"required"`
Key string `json:"key"` // 创建时必填,编辑时可选(不传则不修改)
GroupID *int64 `json:"group_id"`
Enabled *bool `json:"enabled"`
}
AdminAPIKeyRequest API Key 创建/编辑请求
type AdminAPIKeyResponse ¶
type AdminAPIKeyResponse struct {
SoraAPIKey
KeyHint string `json:"key_hint"` // Key 掩码
GroupName string `json:"group_name,omitempty"` // 所属分组名称
}
AdminAPIKeyResponse API Key 响应(含分组名和 Key 掩码)
type AdminAccountRequest ¶
type AdminAccountRequest struct {
Name string `json:"name"`
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
GroupID *int64 `json:"group_id"`
Enabled *bool `json:"enabled"`
}
AdminAccountRequest 账号创建/编辑请求
type AdminAccountResponse ¶
type AdminAccountResponse struct {
SoraAccount
ATHint string `json:"at_hint"` // AT 掩码
RTHint string `json:"rt_hint"` // RT 掩码
GroupName string `json:"group_name,omitempty"` // 所属分组名称
}
AdminAccountResponse 账号响应(含 Token 掩码)
type AdminBatchImportItemResult ¶ added in v1.3.0
type AdminBatchImportItemResult struct {
Token string `json:"token"` // Token 掩码
Action string `json:"action"` // "created" / "updated" / "failed"
Email string `json:"email,omitempty"` // 识别出的邮箱
Error string `json:"error,omitempty"` // 错误信息
}
AdminBatchImportItemResult 单个 Token 导入结果
type AdminBatchImportRequest ¶ added in v1.3.0
type AdminBatchImportRequest struct {
Tokens []string `json:"tokens" binding:"required"`
GroupID *int64 `json:"group_id"`
}
AdminBatchImportRequest 批量导入账号请求
type AdminBatchImportResult ¶ added in v1.3.0
type AdminBatchImportResult struct {
Total int `json:"total"`
Created int `json:"created"`
Updated int `json:"updated"`
Failed int `json:"failed"`
Details []AdminBatchImportItemResult `json:"details"`
}
AdminBatchImportResult 批量导入汇总结果
type AdminCharacterResponse ¶
type AdminCharacterResponse struct {
SoraCharacter
AccountEmail string `json:"account_email,omitempty"` // 关联账号邮箱
}
AdminCharacterResponse 角色管理响应(含关联账号邮箱)
type AdminGroupRequest ¶
type AdminGroupRequest struct {
Name string `json:"name" binding:"required"`
Description string `json:"description"`
Enabled *bool `json:"enabled"`
}
AdminGroupRequest 账号组创建/编辑请求
type CharacterCreateRequest ¶
type CharacterCreateRequest struct {
VideoURL string `json:"video_url" binding:"required"` // 角色视频(URL 或 base64 data URI)
Username string `json:"username,omitempty"` // 可选,不传则使用推荐值
DisplayName string `json:"display_name,omitempty"` // 可选,不传则使用推荐值
}
CharacterCreateRequest 创建角色请求
type CharacterResponse ¶
type CharacterResponse struct {
ID string `json:"id"`
Status string `json:"status"`
DisplayName string `json:"display_name,omitempty"`
Username string `json:"username,omitempty"`
ProfileURL string `json:"profile_url,omitempty"`
CharacterID string `json:"character_id,omitempty"` // 定稿后可用于视频生成
CreatedAt int64 `json:"created_at"`
Error *TaskErrorInfo `json:"error,omitempty"`
}
CharacterResponse 角色响应
type DashboardStats ¶
type DashboardStats struct {
TotalAccounts int64 `json:"total_accounts"`
ActiveAccounts int64 `json:"active_accounts"`
ExpiredAccounts int64 `json:"expired_accounts"`
ExhaustedAccounts int64 `json:"exhausted_accounts"`
TotalTasks int64 `json:"total_tasks"`
PendingTasks int64 `json:"pending_tasks"`
CompletedTasks int64 `json:"completed_tasks"`
FailedTasks int64 `json:"failed_tasks"`
TotalCharacters int64 `json:"total_characters"`
ReadyCharacters int64 `json:"ready_characters"`
ProcessingCharacters int64 `json:"processing_characters"`
FailedCharacters int64 `json:"failed_characters"`
}
DashboardStats 概览统计
type EnhancePromptRequest ¶
type EnhancePromptRequest struct {
Prompt string `json:"prompt" binding:"required"`
ExpansionLevel string `json:"expansion_level,omitempty"` // "medium" 或 "long",默认 "medium"
Duration int `json:"duration,omitempty"` // 5/10/15/25 秒,默认 10
}
EnhancePromptRequest 提示词增强请求
type EnhancePromptResponse ¶
type EnhancePromptResponse struct {
OriginalPrompt string `json:"original_prompt"`
EnhancedPrompt string `json:"enhanced_prompt"`
}
EnhancePromptResponse 提示词增强响应
type ImageSubmitRequest ¶
type ImageSubmitRequest struct {
Prompt string `json:"prompt" binding:"required"`
Width int `json:"width"` // 默认 1792
Height int `json:"height"` // 默认 1024
InputReference string `json:"input_reference,omitempty"` // 图生图参考图(URL 或 base64 data URI)
}
ImageSubmitRequest 创建图片任务请求
type ImageTaskResponse ¶
type ImageTaskResponse struct {
ID string `json:"id"`
Object string `json:"object"` // "image"
Status string `json:"status"`
Progress int `json:"progress"`
CreatedAt int64 `json:"created_at"`
Width int `json:"width,omitempty"`
Height int `json:"height,omitempty"`
ImageURL string `json:"image_url,omitempty"`
Error *TaskErrorInfo `json:"error,omitempty"`
}
ImageTaskResponse 图片任务响应
type ModelParams ¶
type ModelParams struct {
Orientation string // landscape / portrait
NFrames int // 300=10s / 450=15s / 750=25s
Model string // sy_8 / sy_ore
Size string // small / large
Duration int // 10 / 15 / 25(秒)
}
ModelParams 解析后的模型参数
func ParseModelName ¶
func ParseModelName(name string) (*ModelParams, error)
ParseModelName 解析模型名称为 Sora 原生参数
支持两种命名格式(K8Ray Creator 使用下划线前缀):
- sora-2-landscape-10s / sora_video2-landscape-10s
- sora-2-pro-landscape-hd-10s / sora_video2-pro-landscape-hd-10s
type PostCreateRequest ¶
type PostCreateRequest struct {
TaskID string `json:"task_id" binding:"required"` // 内部视频任务 ID
}
PostCreateRequest 发布帖子请求
type RemixSubmitRequest ¶
type RemixSubmitRequest struct {
Model string `json:"model" binding:"required"`
Prompt string `json:"prompt" binding:"required"`
RemixTarget string `json:"remix_target" binding:"required"` // Sora 分享链接或 s_xxx 格式 ID
Style string `json:"style,omitempty"`
}
RemixSubmitRequest Remix 视频请求
type SoraAPIKey ¶
type SoraAPIKey struct {
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
Name string `json:"name" gorm:"size:128;not null"`
Key string `json:"key" gorm:"size:256;not null;uniqueIndex"`
GroupID *int64 `json:"group_id" gorm:"index"`
Enabled bool `json:"enabled" gorm:"not null;default:true"`
UsageCount int64 `json:"usage_count" gorm:"default:0"`
LastUsedAt *time.Time `json:"last_used_at"`
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
SoraAPIKey API 密钥(独立管理,可绑定分组)
func (SoraAPIKey) TableName ¶
func (SoraAPIKey) TableName() string
type SoraAccount ¶
type SoraAccount struct {
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
GroupID *int64 `json:"group_id" gorm:"index"`
Name string `json:"name" gorm:"size:128"`
Email string `json:"email" gorm:"size:256"` // 从 JWT 自动提取
AccessToken string `json:"-" gorm:"type:text;not null"` // 不对外暴露
RefreshToken string `json:"-" gorm:"type:text"` // 不对外暴露
TokenExpiresAt *time.Time `json:"token_expires_at"`
PlanTitle string `json:"plan_title" gorm:"size:64"`
PlanExpiresAt *time.Time `json:"plan_expires_at"`
RemainingCount int `json:"remaining_count" gorm:"default:-1"` // -1=未知
RateLimitReached bool `json:"rate_limit_reached" gorm:"default:false"`
RateLimitResetsAt *time.Time `json:"rate_limit_resets_at"`
Enabled bool `json:"enabled" gorm:"not null;default:true"`
Status string `json:"status" gorm:"size:32;default:active"` // active/token_expired/quota_exhausted
LastUsedAt *time.Time `json:"last_used_at"`
LastError string `json:"last_error" gorm:"type:text"`
LastSyncAt *time.Time `json:"last_sync_at"`
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
SoraAccount Sora 账号
func (SoraAccount) TableName ¶
func (SoraAccount) TableName() string
type SoraAccountGroup ¶
type SoraAccountGroup struct {
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
Name string `json:"name" gorm:"size:128;not null;uniqueIndex"`
Description string `json:"description" gorm:"size:512"`
Enabled bool `json:"enabled" gorm:"not null;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
SoraAccountGroup 账号组
func (SoraAccountGroup) TableName ¶
func (SoraAccountGroup) TableName() string
type SoraCharacter ¶
type SoraCharacter struct {
ID string `json:"id" gorm:"primaryKey;size:64"` // 内部 ID: char_xxxxxxxx
AccountID int64 `json:"account_id" gorm:"not null;index"`
CameoID string `json:"cameo_id" gorm:"size:128;index"` // Sora cameo ID
CharacterID string `json:"character_id" gorm:"size:128;index"` // 定稿后的 character ID
Status string `json:"status" gorm:"size:32;not null;default:processing"` // processing/ready/failed
DisplayName string `json:"display_name" gorm:"size:128"`
Username string `json:"username" gorm:"size:128"`
ProfileURL string `json:"profile_url" gorm:"size:1024"`
ProfileImage []byte `json:"-" gorm:"type:bytea"` // 头像图片二进制数据(不对外暴露)
IsPublic bool `json:"is_public" gorm:"default:false"` // 是否公开
ErrorMessage string `json:"error_message,omitempty" gorm:"type:text"`
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
CompletedAt *time.Time `json:"completed_at,omitempty"`
}
SoraCharacter 角色记录
func (SoraCharacter) TableName ¶
func (SoraCharacter) TableName() string
type SoraSetting ¶
type SoraSetting struct {
Key string `json:"key" gorm:"primaryKey;size:64"`
Value string `json:"value" gorm:"type:text;not null"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
SoraSetting KV 配置项(存储动态配置)
func (SoraSetting) TableName ¶
func (SoraSetting) TableName() string
type SoraTask ¶
type SoraTask struct {
ID string `json:"id" gorm:"primaryKey;size:64"`
SoraTaskID string `json:"sora_task_id" gorm:"size:128;not null;index"`
AccountID int64 `json:"account_id" gorm:"not null;index"`
APIKeyID int64 `json:"api_key_id" gorm:"index;default:0"` // 创建该任务的 API Key ID(0 表示未知)
Type string `json:"type" gorm:"size:32;not null;default:video"` // video/image
Model string `json:"model" gorm:"size:128"`
Prompt string `json:"prompt" gorm:"type:text"`
Status string `json:"status" gorm:"size:32;not null;index;default:queued"` // queued/in_progress/completed/failed
Progress int `json:"progress" gorm:"default:0"`
ErrorMessage string `json:"error_message,omitempty" gorm:"type:text"`
DownloadURL string `json:"-" gorm:"size:1024"` // 完成后的下载链接(内部使用)
ImageURL string `json:"image_url,omitempty" gorm:"size:1024"` // 图片任务结果
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
CompletedAt *time.Time `json:"completed_at,omitempty"`
}
SoraTask 内部任务记录
type StoryboardSubmitRequest ¶
type StoryboardSubmitRequest struct {
Model string `json:"model" binding:"required"`
Prompt string `json:"prompt" binding:"required"` // 分镜格式: [5.0s]场景1 [5.0s]场景2
InputReference string `json:"input_reference,omitempty"` // 参考图(URL 或 base64 data URI)
Style string `json:"style,omitempty"`
}
StoryboardSubmitRequest 分镜视频请求
type TaskErrorInfo ¶
type TaskErrorInfo struct {
Message string `json:"message"`
}
TaskErrorInfo 任务错误信息
type VideoSubmitRequest ¶
type VideoSubmitRequest struct {
Model string `json:"model" binding:"required"`
Prompt string `json:"prompt" binding:"required"`
Duration int `json:"duration"`
InputReference string `json:"input_reference,omitempty"` // 图生视频参考图(URL 或 base64 data URI)
Style string `json:"style,omitempty"` // 视频风格(如 anime, retro 等)
}
VideoSubmitRequest 创建视频任务请求
type VideoTaskResponse ¶
type VideoTaskResponse struct {
ID string `json:"id"`
Object string `json:"object"`
Model string `json:"model"`
Status string `json:"status"`
Progress int `json:"progress"`
CreatedAt int64 `json:"created_at"`
Size string `json:"size,omitempty"`
Error *TaskErrorInfo `json:"error,omitempty"`
}
VideoTaskResponse 任务响应(兼容 K8Ray Creator 的 SoraTaskResponse)
type WatermarkFreeRequest ¶
type WatermarkFreeRequest struct {
VideoID string `json:"video_id" binding:"required"` // Sora 分享链接或视频 ID
}
WatermarkFreeRequest 无水印下载请求
type WatermarkFreeResponse ¶
type WatermarkFreeResponse struct {
URL string `json:"url"`
}
WatermarkFreeResponse 无水印下载响应