package cos import ( "context" "encoding/xml" "errors" "fmt" "net/http" "sort" "strings" "github.com/clbanning/mxj" "github.com/mitchellh/mapstructure" ) // JobInput TODO type JobInput struct { Object string `xml:"Object,omitempty"` Lang string `xml:"Lang,omitempty"` Type string `xml:"Type,omitempty"` BasicType string `xml:"BasicType,omitempty"` CosHeaders []struct { Key string `xml:"Key"` Value string `xml:"Value"` } `xml:"CosHeaders"` Url string `xml:"Url,omitempty"` } // StreamExtract TODO type StreamExtract struct { Index string `xml:"Index,omitempty"` Object string `xml:"Object,omitempty"` } // JobOutput TODO type JobOutput struct { Region string `xml:"Region,omitempty"` Bucket string `xml:"Bucket,omitempty"` Object string `xml:"Object,omitempty"` SpriteObject string `xml:"SpriteObject,omitempty"` AuObject string `xml:"AuObject,omitempty"` BassObject string `xml:"BassObject,omitempty"` DrumObject string `xml:"DrumObject,omitempty"` StreamExtract []StreamExtract `xml:"StreamExtract,omitempty"` } // ClipConfig TODO type ClipConfig struct { Duration string `xml:"Duration"` } // Container TODO type Container struct { Format string `xml:"Format,omitempty"` ClipConfig *ClipConfig `xml:"ClipConfig,omitempty"` } // Video TODO type Video struct { Codec string `xml:"Codec"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` Fps string `xml:"Fps,omitempty"` Remove string `xml:"Remove,omitempty"` Profile string `xml:"Profile,omitempty"` Bitrate string `xml:"Bitrate,omitempty"` Crf string `xml:"Crf,omitempty"` Gop string `xml:"Gop,omitempty"` Preset string `xml:"Preset,omitempty"` Bufsize string `xml:"Bufsize,omitempty"` Maxrate string `xml:"Maxrate,omitempty"` HlsTsTime string `xml:"HlsTsTime,omitempty"` DashSegment string `xml:"DashSegment,omitempty"` Pixfmt string `xml:"Pixfmt,omitempty"` LongShortMode string `xml:"LongShortMode,omitempty"` Rotate string `xml:"Rotate,omitempty"` AnimateOnlyKeepKeyFrame string `xml:"AnimateOnlyKeepKeyFrame,omitempty"` AnimateTimeIntervalOfFrame string `xml:"AnimateTimeIntervalOfFrame,omitempty"` AnimateFramesPerSecond string `xml:"AnimateFramesPerSecond,omitempty"` Quality string `xml:"Quality,omitempty"` Roi string `xml:"Roi,omitempty"` Crop string `xml:"Crop,omitempty"` Interlaced string `xml:"Interlaced,omitempty"` } // TranscodeProVideo TODO type TranscodeProVideo struct { Codec string `xml:"Codec,omitempty"` Profile string `xml:"Profile,omitempty"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` Interlaced string `xml:"Interlaced,omitempty"` Fps string `xml:"Fps,omitempty"` Bitrate string `xml:"Bitrate,omitempty"` Rotate string `xml:"Rotate,omitempty"` } // TimeInterval TODO type TimeInterval struct { Start string `xml:"Start,omitempty"` Duration string `xml:"Duration,omitempty"` } // Audio TODO type Audio struct { Codec string `xml:"Codec,omitempty"` Samplerate string `xml:"Samplerate,omitempty"` Bitrate string `xml:"Bitrate,omitempty"` Channels string `xml:"Channels,omitempty"` Remove string `xml:"Remove,omitempty"` KeepTwoTracks string `xml:"KeepTwoTracks,omitempty"` SwitchTrack string `xml:"SwitchTrack,omitempty"` SampleFormat string `xml:"SampleFormat,omitempty"` } // TranscodeProAudio TODO type TranscodeProAudio struct { Codec string `xml:"Codec,omitempty"` Remove string `xml:"Remove,omitempty"` } // TransConfig TODO type TransConfig struct { AdjDarMethod string `xml:"AdjDarMethod,omitempty"` IsCheckReso string `xml:"IsCheckReso,omitempty"` ResoAdjMethod string `xml:"ResoAdjMethod,omitempty"` IsCheckVideoBitrate string `xml:"IsCheckVideoBitrate,omitempty"` VideoBitrateAdjMethod string `xml:"VideoBitrateAdjMethod,omitempty"` IsCheckAudioBitrate string `xml:"IsCheckAudioBitrate,omitempty"` AudioBitrateAdjMethod string `xml:"AudioBitrateAdjMethod,omitempty"` DeleteMetadata string `xml:"DeleteMetadata,omitempty"` IsHdr2Sdr string `xml:"IsHdr2Sdr,omitempty"` HlsEncrypt *HlsEncrypt `xml:"HlsEncrypt,omitempty"` } // Transcode TODO type Transcode struct { Container *Container `xml:"Container,omitempty"` Video *Video `xml:"Video,omitempty"` TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"` Audio *Audio `xml:"Audio,omitempty"` TransConfig *TransConfig `xml:"TransConfig,omitempty"` AudioMix *AudioMix `xml:"AudioMix,omitempty"` AudioMixArray []AudioMix `xml:"AudioMixArray,omitempty"` } // TranscodePro TODO type TranscodePro struct { Container *Container `xml:"Container,omitempty"` Video *TranscodeProVideo `xml:"Video,omitempty"` Audio *TranscodeProAudio `xml:"Audio,omitempty"` TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"` TransConfig *TransConfig `xml:"TransConfig,omitempty"` } // WatermarkSlideConfig TODO type WatermarkSlideConfig struct { SlideMode string `xml:"SlideMode,omitempty"` XSlideSpeed string `xml:"XSlideSpeed,omitempty"` YSlideSpeed string `xml:"YSlideSpeed,omitempty"` } // Image TODO type Image struct { Url string `xml:"Url,omitempty"` Mode string `xml:"Mode,omitempty"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` Transparency string `xml:"Transparency,omitempty"` Background string `xml:"Background,omitempty"` } // Text TODO type Text struct { FontSize string `xml:"FontSize,omitempty"` FontType string `xml:"FontType,omitempty"` FontColor string `xml:"FontColor,omitempty"` Transparency string `xml:"Transparency,omitempty"` Text string `xml:"Text,omitempty"` } // TtsTpl TODO type TtsTpl struct { Mode string `xml:"Mode,omitempty"` Codec string `xml:"Codec,omitempty"` VoiceType string `xml:"VoiceType,omitempty"` Volume string `xml:"Volume,omitempty"` Speed string `xml:"Speed,omitempty"` } // TtsConfig TODO type TtsConfig struct { Input string `xml:"Input,omitempty"` InputType string `xml:"InputType,omitempty"` } // Translation TODO type Translation struct { Lang string `xml:"Lang,omitempty"` Type string `xml:"Type,omitempty"` } // WordsGeneralize TODO type WordsGeneralize struct { NerMethod string `xml:"NerMethod,omitempty"` SegMethod string `xml:"SegMethod,omitempty"` } // WordsGeneralizeResult TODO type WordsGeneralizeResult struct { WordsGeneralizeLable []WordsGeneralizeResulteLable `xml:"WordsGeneralizeLable,omitempty"` WordsGeneralizeToken []WordsGeneralizeResulteToken `xml:"WordsGeneralizeToken,omitempty"` } // WordsGeneralizeResulteLable TODO type WordsGeneralizeResulteLable struct { Category string `xml:"Category,omitempty"` Word string `xml:"Word,omitempty"` } // WordsGeneralizeResulteToken TODO type WordsGeneralizeResulteToken struct { Length string `xml:"Length,omitempty"` Offset string `xml:"Offset,omitempty"` Pos string `xml:"Pos,omitempty"` Word string `xml:"Word,omitempty"` } // Watermark TODO type Watermark struct { Type string `xml:"Type,omitempty"` Pos string `xml:"Pos,omitempty"` // TopLeft:左上; Top:上居中; TopRight:右上; Left:左居中; Center:正中心; Right:右居中; BottomLeft:左下; Bottom:下居中; BottomRight:右下 LocMode string `xml:"LocMode,omitempty"` Dx string `xml:"Dx,omitempty"` Dy string `xml:"Dy,omitempty"` StartTime string `xml:"StartTime,omitempty"` EndTime string `xml:"EndTime,omitempty"` SlideConfig *WatermarkSlideConfig `xml:"SlideConfig,omitempty"` Image *Image `xml:"Image,omitempty"` Text *Text `xml:"Text,omitempty"` } // EffectConfig TODO type EffectConfig struct { EnableStartFadein string `xml:"EnableStartFadein,omitempty"` StartFadeinTime string `xml:"StartFadeinTime,omitempty"` EnableEndFadeout string `xml:"EnableEndFadeout,omitempty"` EndFadeoutTime string `xml:"EndFadeoutTime,omitempty"` EnableBgmFade string `xml:"EnableBgmFade,omitempty"` BgmFadeTime string `xml:"BgmFadeTime,omitempty"` } // AudioMix TODO type AudioMix struct { AudioSource string `xml:"AudioSource,omitempty"` MixMode string `xml:"MixMode,omitempty"` Replace string `xml:"Replace,omitempty"` EffectConfig *EffectConfig `xml:"EffectConfig,omitempty"` } // ConcatFragment TODO type ConcatFragment struct { Url string `xml:"Url,omitempty"` Mode string `xml:"Mode,omitempty"` StartTime string `xml:"StartTime,omitempty"` EndTime string `xml:"EndTime,omitempty"` FragmentIndex string `xml:"FragmentIndex,omitempty"` } // ConcatTemplate TODO type ConcatTemplate struct { ConcatFragment []ConcatFragment `xml:"ConcatFragment,omitempty"` Audio *Audio `xml:"Audio,omitempty"` Video *Video `xml:"Video,omitempty"` Container *Container `xml:"Container,omitempty"` Index string `xml:"Index,omitempty"` AudioMix *AudioMix `xml:"AudioMix,omitempty"` AudioMixArray []AudioMix `xml:"AudioMixArray,omitempty"` SceneChangeInfo *SceneChangeInfo `xml:"SceneChangeInfo,omitempty"` } // SceneChangeInfo 转场参数 type SceneChangeInfo struct { Mode string `xml:"Mode,omitempty"` Time string `xml:"Time,omitempty"` } // SpriteSnapshotConfig TODO type SpriteSnapshotConfig struct { CellHeight string `xml:"CellHeight,omitempty"` CellWidth string `xml:"CellWidth,omitempty"` Color string `xml:"Color,omitempty"` Columns string `xml:"Columns,omitempty"` Lines string `xml:"Lines,omitempty"` Margin string `xml:"Margin,omitempty"` Padding string `xml:"Padding,omitempty"` ScaleMethod string `xml:"ScaleMethod,omitempty"` } // Snapshot TODO type Snapshot struct { Mode string `xml:"Mode,omitempty"` Start string `xml:"Start,omitempty"` TimeInterval string `xml:"TimeInterval,omitempty"` Count string `xml:"Count,omitempty"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` CIParam string `xml:"CIParam,omitempty"` IsCheckCount bool `xml:"IsCheckCount,omitempty"` IsCheckBlack bool `xml:"IsCheckBlack,omitempty"` BlackLevel string `xml:"BlackLevel,omitempty"` PixelBlackThreshold string `xml:"PixelBlackThreshold,omitempty"` SnapshotOutMode string `xml:"SnapshotOutMode,omitempty"` SpriteSnapshotConfig *SpriteSnapshotConfig `xml:"SpriteSnapshotConfig,omitempty"` } // AnimationVideo TODO // 有意和转码区分,两种任务关注的参数不一样避免干扰 type AnimationVideo struct { Codec string `xml:"Codec,omitempty"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` Fps string `xml:"Fps,omitempty"` AnimateOnlyKeepKeyFrame string `xml:"AnimateOnlyKeepKeyFrame,omitempty"` AnimateTimeIntervalOfFrame string `xml:"AnimateTimeIntervalOfFrame,omitempty"` AnimateFramesPerSecond string `xml:"AnimateFramesPerSecond,omitempty"` Quality string `xml:"Quality,omitempty"` } // Animation TODO type Animation struct { Container *Container `xml:"Container,omitempty"` Video *AnimationVideo `xml:"Video,omitempty"` TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"` } // HlsEncrypt TODO type HlsEncrypt struct { IsHlsEncrypt bool `xml:"IsHlsEncrypt,omitempty"` UriKey string `xml:"UriKey,omitempty"` } // Segment TODO type Segment struct { Format string `xml:"Format,omitempty"` Duration string `xml:"Duration,omitempty"` TranscodeIndex string `xml:"TranscodeIndex,omitempty"` HlsEncrypt *HlsEncrypt `xml:"HlsEncrypt,omitempty"` StartTime string `xml:"StartTime,omitempty"` EndTime string `xml:"EndTime,omitempty"` } // VideoMontageVideo TODO type VideoMontageVideo struct { Codec string `xml:"Codec"` Width string `xml:"Width"` Height string `xml:"Height"` Fps string `xml:"Fps"` Remove string `xml:"Remove,omitempty"` Bitrate string `xml:"Bitrate"` Crf string `xml:"Crf"` } // VideoMontage TODO type VideoMontage struct { Container *Container `xml:"Container,omitempty"` Video *VideoMontageVideo `xml:"Video,omitempty"` Audio *Audio `xml:"Audio,omitempty"` Duration string `xml:"Duration,omitempty"` Scene string `xml:"Scene,omitempty"` AudioMix *AudioMix `xml:"AudioMix,omitempty"` AudioMixArray []AudioMix `xml:"AudioMixArray,omitempty"` } // AudioConfig TODO type AudioConfig struct { Codec string `xml:"Codec"` Samplerate string `xml:"Samplerate"` Bitrate string `xml:"Bitrate"` Channels string `xml:"Channels"` } // VoiceSeparate TODO type VoiceSeparate struct { AudioMode string `xml:"AudioMode,omitempty"` // IsAudio 人声, IsBackground 背景声, AudioAndBackground 人声和背景声 AudioConfig *AudioConfig `xml:"AudioConfig,omitempty"` } // ColorEnhance TODO type ColorEnhance struct { Enable string `xml:"Enable,omitempty"` Contrast string `xml:"Contrast,omitempty"` Correction string `xml:"Correction,omitempty"` Saturation string `xml:"Saturation,omitempty"` } // MsSharpen TODO type MsSharpen struct { Enable string `xml:"Enable,omitempty"` SharpenLevel string `xml:"SharpenLevel,omitempty"` } // VideoProcess TODO type VideoProcess struct { ColorEnhance *ColorEnhance `xml:"ColorEnhance,omitempty"` MsSharpen *MsSharpen `xml:"MsSharpen,omitempty"` } // SDRtoHDR TODO type SDRtoHDR struct { HdrMode string `xml:"HdrMode,omitempty"` // HLG、HDR10 } // SuperResolution TODO type SuperResolution struct { Resolution string `xml:"Resolution,omitempty"` // sdtohd、hdto4k EnableScaleUp string `xml:"EnableScaleUp,omitempty"` Version string `xml:"Version,omitempty"` } // DigitalWatermark TODO type DigitalWatermark struct { Message string `xml:"Message"` Type string `xml:"Type"` Version string `xml:"Version"` } // ExtractDigitalWatermark TODO type ExtractDigitalWatermark struct { Type string `xml:"Type"` Version string `xml:"Version"` } // Subtitles TODO type Subtitles struct { Subtitle []Subtitle `xml:"Subtitle,omitempty"` } // Subtitle TODO type Subtitle struct { Url []Subtitle `xml:"Url,omitempty"` } // VideoTag TODO type VideoTag struct { Scenario string `xml:"Scenario,omitempty"` } // VideoTagResult TODO type VideoTagResult struct { StreamData *VideoTagResultStreamData `xml:"StreamData,omitempty"` } // VideoTagResultStreamData TODO type VideoTagResultStreamData struct { SubErrCode string `xml:"SubErrCode,omitempty"` SubErrMsg string `xml:"SubErrMsg,omitempty"` Data *VideoTagResultStreamDataData `xml:"Data,omitempty"` } // VideoTagResultStreamDataData TODO type VideoTagResultStreamDataData struct { Tags []VideoTagResultStreamDataDataTags `xml:"Tags,omitempty"` PersonTags []VideoTagResultStreamDataDataPersonTags `xml:"PersonTags,omitempty"` PlaceTags []VideoTagResultStreamDataDataPlaceTags `xml:"PlaceTags,omitempty"` ActionTags []VideoTagResultStreamDataDataActionTags `xml:"ActionTags,omitempty"` ObjectTags []VideoTagResultStreamDataDataObjectTags `xml:"ObjectTags,omitempty"` } // VideoTagResultStreamDataDataTags TODO type VideoTagResultStreamDataDataTags struct { Tag string `xml:"Tag,omitempty"` TagCls string `xml:"TagCls,omitempty"` Confidence float64 `xml:"Confidence,omitempty"` } // VideoTagResultStreamDataDataPersonTags TODO type VideoTagResultStreamDataDataPersonTags struct { Name string `xml:"Name,omitempty"` Confidence float64 `xml:"Confidence,omitempty"` Count string `xml:"Count,omitempty"` DetailPerSecond []VideoTagResultStreamDataDataPersonTagsDetailPerSecond `xml:"DetailPerSecond,omitempty"` } // VideoTagResultStreamDataDataPersonTagsDetailPerSecond TODO type VideoTagResultStreamDataDataPersonTagsDetailPerSecond struct { TimeStamp string `xml:"TimeStamp,omitempty"` Name string `xml:"Name,omitempty"` Confidence float64 `xml:"Confidence,omitempty"` BBox []VideoTagResultStreamDataDataPersonTagsDetailPerSecondBBox `xml:"BBox,omitempty"` } // VideoTagResultStreamDataDataPersonTags TODO type VideoTagResultStreamDataDataPersonTagsDetailPerSecondBBox struct { X1 string `xml:"X1,omitempty"` X2 string `xml:"X2,omitempty"` Y1 string `xml:"Y1,omitempty"` Y2 string `xml:"Y2,omitempty"` } // VideoTagResultStreamDataDataPlaceTags TODO type VideoTagResultStreamDataDataPlaceTags struct { Tags []VideoTagResultStreamDataDataTags `xml:"Tags,omitempty"` ClipFrameResult []string `xml:"ClipFrameResult,omitempty"` StartTime string `xml:"StartTime,omitempty"` EndTime string `xml:"EndTime,omitempty"` StartIndex string `xml:"StartIndex,omitempty"` EndIndex string `xml:"EndIndex,omitempty"` } // VideoTagResultStreamDataDataActionTags TODO type VideoTagResultStreamDataDataActionTags struct { Tags []VideoTagResultStreamDataDataTags `xml:"Tags,omitempty"` StartTime string `xml:"StartTime,omitempty"` EndTime string `xml:"EndTime,omitempty"` } // VideoTagResultStreamDataDataObjectTags TODO type VideoTagResultStreamDataDataObjectTags struct { Objects []VideoTagResultStreamDataDataPersonTagsDetailPerSecond `xml:"Objects,omitempty"` TimeStamp string `xml:"TimeStamp,omitempty"` } // QualityEstimate TODO type QualityEstimate struct { Score string `xml:"Score,omitempty"` VqaPlusResult struct { NoAudio bool `xml:"NoAudio,omitempty"` NoVideo bool `xml:"NoVideo,omitempty"` DetailedResult []struct { Type string `xml:"Type,omitempty"` Items []struct { Confidence int `xml:"Confidence,omitempty"` StartTimeOffset float32 `xml:"StartTimeOffset,omitempty"` EndTimeOffset float32 `xml:"EndTimeOffset,omitempty"` AreaCoordSet []int `xml:"AreaCoordSet,omitempty"` } `xml:"Items,omitempty"` } `xml:"DetailedResult,omitempty"` } `xml:"VqaPlusResult,omitempty"` } // QualityEstimate TODO type QualityEstimateConfig struct { Rotate string `xml:"Rotate,omitempty"` Mode string `xml:"Mode,omitempty"` } // MediaResult TODO type MediaResult struct { OutputFile struct { Bucket string `xml:"Bucket,omitempty"` Md5Info []struct { Md5 string `xml:"Md5,omitempty"` ObjectName string `xml:"ObjectName,omitempty"` } `xml:"Md5Info,omitempty"` ObjectName []string `xml:"ObjectName,omitempty"` ObjectPrefix string `xml:"ObjectPrefix,omitempty"` Region string `xml:"Region,omitempty"` SpriteOutputFile struct { Bucket string `xml:"Bucket,omitempty"` Md5Info []struct { Md5 string `xml:"Md5,omitempty"` ObjectName string `xml:"ObjectName,omitempty"` } `xml:"Md5Info,omitempty"` ObjectName []string `xml:"ObjectName,omitempty"` ObjectPrefix string `xml:"ObjectPrefix,omitempty"` Region string `xml:"Region,omitempty"` } `xml:"SpriteOutputFile,omitempty"` } `xml:"OutputFile,omitempty"` } // MediaInfo TODO type MediaInfo struct { Format struct { Bitrate string `xml:"Bitrate"` Duration string `xml:"Duration"` FormatLongName string `xml:"FormatLongName"` FormatName string `xml:"FormatName"` NumProgram string `xml:"NumProgram"` NumStream string `xml:"NumStream"` Size string `xml:"Size"` StartTime string `xml:"StartTime"` } `xml:"Format"` Stream struct { Audio []struct { Bitrate string `xml:"Bitrate"` Channel string `xml:"Channel"` ChannelLayout string `xml:"ChannelLayout"` CodecLongName string `xml:"CodecLongName"` CodecName string `xml:"CodecName"` CodecTag string `xml:"CodecTag"` CodecTagString string `xml:"CodecTagString"` CodecTimeBase string `xml:"CodecTimeBase"` Duration string `xml:"Duration"` Index string `xml:"Index"` Language string `xml:"Language"` SampleFmt string `xml:"SampleFmt"` SampleRate string `xml:"SampleRate"` StartTime string `xml:"StartTime"` Timebase string `xml:"Timebase"` } `xml:"Audio"` Subtitle string `xml:"Subtitle"` Video []struct { AvgFps string `xml:"AvgFps"` Bitrate string `xml:"Bitrate"` CodecLongName string `xml:"CodecLongName"` CodecName string `xml:"CodecName"` CodecTag string `xml:"CodecTag"` CodecTagString string `xml:"CodecTagString"` CodecTimeBase string `xml:"CodecTimeBase"` Dar string `xml:"Dar"` Duration string `xml:"Duration"` Fps string `xml:"Fps"` HasBFrame string `xml:"HasBFrame"` Height string `xml:"Height"` Index string `xml:"Index"` Language string `xml:"Language"` Level string `xml:"Level"` NumFrames string `xml:"NumFrames"` PixFormat string `xml:"PixFormat"` Profile string `xml:"Profile"` RefFrames string `xml:"RefFrames"` Rotation string `xml:"Rotation"` Sar string `xml:"Sar"` StartTime string `xml:"StartTime"` Timebase string `xml:"Timebase"` Width string `xml:"Width"` ColorRange string `xml:"ColorRange"` ColorTransfer string `xml:"ColorTransfer"` ColorPrimaries string `xml:"ColorPrimaries"` } `xml:"Video"` } `xml:"Stream"` } // PicProcess TODO type PicProcess struct { IsPicInfo string `xml:"IsPicInfo,omitempty"` ProcessRule string `xml:"ProcessRule,omitempty"` } // PicProcessResult TODO type PicProcessResult struct { UploadResult struct { OriginalInfo struct { Key string `xml:"Key"` Location string `xml:"Location"` ETag string `xml:"ETag"` ImageInfo struct { Format string `xml:"Format"` Width int32 `xml:"Width"` Height int32 `xml:"Height"` Quality int32 `xml:"Quality"` Ave string `xml:"Ave"` Orientation int32 `xml:"Orientation"` } `xml:"ImageInfo"` } `xml:"OriginalInfo"` ProcessResults struct { Object struct { Key string `xml:"Key"` Location string `xml:"Location"` Format string `xml:"Format"` Width int32 `xml:"Width"` Height int32 `xml:"Height"` Size int32 `xml:"Size"` Quality int32 `xml:"Quality"` Etag string `xml:"Etag"` } `xml:"Object"` } `xml:"ProcessResults"` } `xml:"UploadResult"` } // PosterProduction TODO type PosterProduction struct { TemplateId string `xml:"TemplateId,omitempty"` Info interface{} `xml:"Info,omitempty"` } // PicProcessJobOperation TODO type PicProcessJobOperation struct { TemplateId string `xml:"TemplateId,omitempty"` PicProcess *PicProcess `xml:"PicProcess,omitempty"` Output *JobOutput `xml:"Output,omitempty"` UserData string `xml:"UserData,omitempty"` JobLevel int `xml:"JobLevel,omitempty"` PicProcessResult *PicProcessResult `xml:"PicProcessResult,omitempty"` PosterProduction *PosterProduction `xml:"PosterProduction,omitempty"` } // MediaProcessJobOperation TODO type MediaProcessJobOperation struct { Tag string `xml:"Tag,omitempty"` Output *JobOutput `xml:"Output,omitempty"` MediaResult *MediaResult `xml:"MediaResult,omitempty"` MediaInfo *MediaInfo `xml:"MediaInfo,omitempty"` Transcode *Transcode `xml:"Transcode,omitempty"` Watermark []Watermark `xml:"Watermark,omitempty"` TemplateId string `xml:"TemplateId,omitempty"` WatermarkTemplateId []string `xml:"WatermarkTemplateId,omitempty"` ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"` Snapshot *Snapshot `xml:"Snapshot,omitempty"` Animation *Animation `xml:"Animation,omitempty"` Segment *Segment `xml:"Segment,omitempty"` VideoMontage *VideoMontage `xml:"VideoMontage,omitempty"` VoiceSeparate *VoiceSeparate `xml:"VoiceSeparate,omitempty"` VideoProcess *VideoProcess `xml:"VideoProcess,omitempty"` TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty"` // 视频增强、超分、SDRtoHDR任务类型,可以选择转码模板相关参数 SDRtoHDR *SDRtoHDR `xml:"SDRtoHDR,omitempty"` SuperResolution *SuperResolution `xml:"SuperResolution,omitempty"` DigitalWatermark *DigitalWatermark `xml:"DigitalWatermark,omitempty"` ExtractDigitalWatermark *ExtractDigitalWatermark `xml:"ExtractDigitalWatermark,omitempty"` VideoTag *VideoTag `xml:"VideoTag,omitempty"` VideoTagResult *VideoTagResult `xml:"VideoTagResult,omitempty"` SmartCover *NodeSmartCover `xml:"SmartCover,omitempty"` UserData string `xml:"UserData,omitempty"` JobLevel int `xml:"JobLevel,omitempty"` QualityEstimate *QualityEstimate `xml:"QualityEstimate,omitempty"` TtsTpl *TtsTpl `xml:"TtsTpl,omitempty"` TtsConfig *TtsConfig `xml:"TtsConfig,omitempty"` Translation *Translation `xml:"Translation,omitempty"` WordsGeneralize *WordsGeneralize `xml:"WordsGeneralize,omitempty"` WordsGeneralizeResult *WordsGeneralizeResult `xml:"WordsGeneralizeResult,omitempty"` QualityEstimateConfig *QualityEstimateConfig `xml:"QualityEstimateConfig,omitempty"` NoiseReduction *NoiseReduction `xml:"NoiseReduction,omitempty"` SplitVideoParts *SplitVideoParts `xml:"SplitVideoParts,omitempty"` SplitVideoInfoResult *SplitVideoInfoResult `xml:"SplitVideoInfoResult,omitempty"` Subtitles *Subtitles `xml:"Subtitles,omitempty"` VideoEnhance *VideoEnhance `xml:"VideoEnhance,omitempty"` VideoTargetRec *VideoTargetRec `xml:"VideoTargetRec,omitempty"` VideoTargetRecResult *VideoTargetRecResult `xml:"VideoTargetRecResult,omitempty"` SegmentVideoBody *SegmentVideoBody `xml:"SegmentVideoBody,omitempty"` FreeTranscode string `xml:"FreeTranscode,omitempty"` PicProcess *PicProcess `xml:"PicProcess,omitempty"` PicProcessResult *PicProcessResult `xml:"PicProcessResult,omitempty"` PosterProduction *PosterProduction `xml:"PosterProduction,omitempty"` SpeechRecognition *SpeechRecognition `xml:"SpeechRecognition,omitempty"` SpeechRecognitionResult *SpeechRecognitionResult `xml:"SpeechRecognitionResult,omitempty"` SoundHoundResult *SoundHoundResult `xml:"SoundHoundResult,omitempty"` FillConcat *FillConcat `xml:"FillConcat,omitempty"` VideoSynthesis *VideoSynthesis `xml:"VideoSynthesis,omitempty"` DnaConfig *DnaConfig `xml:"DnaConfig,omitempty"` DnaResult *DnaResult `xml:"DnaResult,omitempty"` VocalScore *VocalScore `xml:"VocalScore,omitempty"` VocalScoreResult *VocalScoreResult `xml:"VocalScoreResult,omitempty"` ImageInspect *ImageInspect `xml:"ImageInspect,omitempty"` ImageInspectResult *ImageInspectResult `xml:"ImageInspectResult,omitempty"` } // CreatePicJobsOptions TODO type CreatePicJobsOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Input *JobInput `xml:"Input,omitempty"` Operation *PicProcessJobOperation `xml:"Operation,omitempty"` QueueId string `xml:"QueueId,omitempty"` CallBack string `xml:"CallBack,omitempty"` QueueType string `xml:"QueueType,omitempty"` CallBackFormat string `xml:"CallBackFormat,omitempty"` CallBackType string `xml:"CallBackType,omitempty"` CallBackMqConfig *NotifyConfigCallBackMqConfig `xml:"CallBackMqConfig,omitempty"` } // CreateAIJobsOptions TODO type CreateAIJobsOptions CreateMediaJobsOptions // CreateMediaJobsOptions TODO type CreateMediaJobsOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Input *JobInput `xml:"Input,omitempty"` Operation *MediaProcessJobOperation `xml:"Operation,omitempty"` QueueId string `xml:"QueueId,omitempty"` QueueType string `xml:"QueueType,omitempty"` CallBackFormat string `xml:"CallBackFormat,omitempty"` CallBackType string `xml:"CallBackType,omitempty"` CallBack string `xml:"CallBack,omitempty"` CallBackMqConfig *NotifyConfigCallBackMqConfig `xml:"CallBackMqConfig,omitempty"` } // NotifyConfigCallBackMqConfig TODO type NotifyConfigCallBackMqConfig struct { MqMode string `xml:"MqMode,omitempty"` MqRegion string `xml:"MqRegion,omitempty"` MqName string `xml:"MqName,omitempty"` } // MediaProcessJobDetail TODO type MediaProcessJobDetail struct { Code string `xml:"Code,omitempty"` Message string `xml:"Message,omitempty"` JobId string `xml:"JobId,omitempty"` Tag string `xml:"Tag,omitempty"` Progress string `xml:"Progress,omitempty"` State string `xml:"State,omitempty"` CreationTime string `xml:"CreationTime,omitempty"` StartTime string `xml:"StartTime,omitempty"` EndTime string `xml:"EndTime,omitempty"` QueueId string `xml:"QueueId,omitempty"` Input *JobInput `xml:"Input,omitempty"` Operation *MediaProcessJobOperation `xml:"Operation,omitempty"` SubTag string `xml:"SubTag,omitempty"` Workflow []struct { Name string `xml:"Name,omitempty"` RunId string `xml:"RunId,omitempty"` WorkflowId string `xml:"WorkflowId,omitempty"` WorkflowName string `xml:"WorkflowName,omitempty"` } `xml:"Workflow"` } // CreatePicJobsResult TODO type CreatePicJobsResult CreateMediaJobsResult // CreateAIJobsResult TODO type CreateAIJobsResult CreateMediaJobsResult // CreateMediaJobsResult TODO type CreateMediaJobsResult struct { XMLName xml.Name `xml:"Response"` JobsDetail *MediaProcessJobDetail `xml:"JobsDetail,omitempty"` } // CreateMultiMediaJobsOptions TODO type CreateMultiMediaJobsOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Input *JobInput `xml:"Input,omitempty"` Operation []MediaProcessJobOperation `xml:"Operation,omitempty"` QueueId string `xml:"QueueId,omitempty"` QueueType string `xml:"QueueType,omitempty"` CallBackFormat string `xml:"CallBackFormat,omitempty"` CallBackType string `xml:"CallBackType,omitempty"` CallBack string `xml:"CallBack,omitempty"` CallBackMqConfig *NotifyConfigCallBackMqConfig `xml:"CallBackMqConfig,omitempty"` } // CreateMultiMediaJobsResult TODO type CreateMultiMediaJobsResult struct { XMLName xml.Name `xml:"Response"` JobsDetail []MediaProcessJobDetail `xml:"JobsDetail,omitempty"` } // MediaProcessJobsNotifyBody TODO type MediaProcessJobsNotifyBody struct { XMLName xml.Name `xml:"Response"` EventName string `xml:"EventName"` JobsDetail *MediaProcessJobDetail `xml:"JobsDetail,omitempty"` } // WorkflowExecutionNotifyBody TODO type WorkflowExecutionNotifyBody struct { XMLName xml.Name `xml:"Response"` EventName string `xml:"EventName"` WorkflowExecution struct { RunId string `xml:"RunId"` BucketId string `xml:"BucketId"` Object string `xml:"Object"` CosHeaders []struct { Key string `xml:"Key"` Value string `xml:"Value"` } `xml:"CosHeaders"` WorkflowId string `xml:"WorkflowId"` WorkflowName string `xml:"WorkflowName"` CreateTime string `xml:"CreateTime"` State string `xml:"State"` Tasks []struct { Type string `xml:"Type"` CreateTime string `xml:"CreateTime"` EndTime string `xml:"EndTime"` State string `xml:"State"` JobId string `xml:"JobId"` Name string `xml:"Name"` TemplateId string `xml:"TemplateId"` TemplateName string `xml:"TemplateName"` TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty"` TranscodeTemplateName string `xml:"TranscodeTemplateName,omitempty"` HdrMode string `xml:"HdrMode,omitempty"` ResultInfo struct { ObjectCount int `xml:"ObjectCount"` SpriteObjectCount int `xml:"SpriteObjectCount"` ObjectInfo []struct { ObjectName string `xml:"ObjectName"` ObjectUrl string `xml:"ObjectUrl"` InputObjectName string `xml:"InputObjectName"` Code string `xml:"Code"` Message string `xml:"Message"` } `xml:"ObjectInfo,omitempty"` SpriteObjectInfo []struct { ObjectName string `xml:"ObjectName"` ObjectUrl string `xml:"ObjectUrl"` InputObjectName string `xml:"InputObjectName"` Code string `xml:"Code"` Message string `xml:"Message"` } `xml:"SpriteObjectInfo,omitempty"` } `xml:"ResultInfo,omitempty"` } `xml:"Tasks"` } `xml:"WorkflowExecution"` } // CreateMultiMediaJobs TODO func (s *CIService) CreateMultiMediaJobs(ctx context.Context, opt *CreateMultiMediaJobsOptions) (*CreateMultiMediaJobsResult, *Response, error) { var res CreateMultiMediaJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaJobs TODO func (s *CIService) CreateMediaJobs(ctx context.Context, opt *CreateMediaJobsOptions) (*CreateMediaJobsResult, *Response, error) { var res CreateMediaJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreatePicProcessJobs TODO func (s *CIService) CreatePicProcessJobs(ctx context.Context, opt *CreatePicJobsOptions) (*CreatePicJobsResult, *Response, error) { var res CreatePicJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/pic_jobs", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateAIJobs TODO func (s *CIService) CreateAIJobs(ctx context.Context, opt *CreateAIJobsOptions) (*CreateAIJobsResult, *Response, error) { var res CreateAIJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/ai_jobs", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribePicProcessJobResult TODO type DescribePicProcessJobResult DescribeMediaProcessJobResult // DescribeAIJobResult TODO type DescribeAIJobResult DescribeMediaProcessJobResult // DescribeMediaProcessJobResult TODO type DescribeMediaProcessJobResult struct { XMLName xml.Name `xml:"Response"` JobsDetail *MediaProcessJobDetail `xml:"JobsDetail,omitempty"` NonExistJobIds string `xml:"NonExistJobIds,omitempty"` } // DescribeMediaJob TODO func (s *CIService) DescribeMediaJob(ctx context.Context, jobid string) (*DescribeMediaProcessJobResult, *Response, error) { var res DescribeMediaProcessJobResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs/" + jobid, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribePicProcessJob TODO func (s *CIService) DescribePicProcessJob(ctx context.Context, jobid string) (*DescribePicProcessJobResult, *Response, error) { var res DescribePicProcessJobResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/pic_jobs/" + jobid, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeAIJob TODO func (s *CIService) DescribeAIJob(ctx context.Context, jobid string) (*DescribeAIJobResult, *Response, error) { var res DescribeAIJobResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/ai_jobs/" + jobid, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeMutilMediaProcessJobResult TODO type DescribeMutilMediaProcessJobResult struct { XMLName xml.Name `xml:"Response"` JobsDetail []MediaProcessJobDetail `xml:"JobsDetail,omitempty"` NonExistJobIds []string `xml:"NonExistJobIds,omitempty"` } // DescribeMultiMediaJob TODO func (s *CIService) DescribeMultiMediaJob(ctx context.Context, jobids []string) (*DescribeMutilMediaProcessJobResult, *Response, error) { jobidsStr := "" if len(jobids) < 1 { return nil, nil, errors.New("empty param jobids") } else { jobidsStr = strings.Join(jobids, ",") } var res DescribeMutilMediaProcessJobResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs/" + jobidsStr, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeMediaJobsOptions TODO type DescribeMediaJobsOptions struct { QueueId string `url:"queueId,omitempty"` Tag string `url:"tag,omitempty"` OrderByTime string `url:"orderByTime,omitempty"` NextToken string `url:"nextToken,omitempty"` Size int `url:"size,omitempty"` States string `url:"states,omitempty"` StartCreationTime string `url:"startCreationTime,omitempty"` EndCreationTime string `url:"endCreationTime,omitempty"` WorkflowId string `url:"workflowId,omitempty"` InventoryTriggerJobId string `url:"inventoryTriggerJobId,omitempty"` InputObject string `url:"inputObject,omitempty"` } // DescribeMediaJobsResult TODO type DescribeMediaJobsResult struct { XMLName xml.Name `xml:"Response"` JobsDetail []MediaProcessJobDetail `xml:"JobsDetail,omitempty"` NextToken string `xml:"NextToken,omitempty"` } // DescribeMediaJobs TODO // https://cloud.tencent.com/document/product/460/48235 func (s *CIService) DescribeMediaJobs(ctx context.Context, opt *DescribeMediaJobsOptions) (*DescribeMediaJobsResult, *Response, error) { var res DescribeMediaJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribePicProcessQueuesOptions TODO type DescribePicProcessQueuesOptions DescribeMediaProcessQueuesOptions // DescribeMediaProcessQueuesOptions TODO type DescribeMediaProcessQueuesOptions struct { QueueIds string `url:"queueIds,omitempty"` State string `url:"state,omitempty"` PageNumber int `url:"pageNumber,omitempty"` PageSize int `url:"pageSize,omitempty"` Category string `url:"category,omitempty"` } // DescribePicProcessQueuesResult TODO type DescribePicProcessQueuesResult DescribeMediaProcessQueuesResult // DescribeMediaProcessQueuesResult TODO type DescribeMediaProcessQueuesResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` QueueList []MediaProcessQueue `xml:"QueueList,omitempty"` NonExistPIDs []string `xml:"NonExistPIDs,omitempty"` } // MediaProcessQueue TODO type MediaProcessQueue struct { QueueId string `xml:"QueueId,omitempty"` Name string `xml:"Name,omitempty"` State string `xml:"State,omitempty"` MaxSize int `xml:"MaxSize,omitempty"` MaxConcurrent int `xml:"MaxConcurrent,omitempty"` UpdateTime string `xml:"UpdateTime,omitempty"` CreateTime string `xml:"CreateTime,omitempty"` NotifyConfig *MediaProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"` } // MediaProcessQueueNotifyConfig TODO type MediaProcessQueueNotifyConfig struct { Url string `xml:"Url,omitempty"` State string `xml:"State,omitempty"` Type string `xml:"Type,omitempty"` Event string `xml:"Event,omitempty"` ResultFormat string `xml:"ResultFormat,omitempty"` MqMode string `xml:"MqMode,omitempty"` MqRegion string `xml:"MqRegion,omitempty"` MqName string `xml:"MqName,omitempty"` } // DescribeMediaProcessQueues TODO func (s *CIService) DescribeMediaProcessQueues(ctx context.Context, opt *DescribeMediaProcessQueuesOptions) (*DescribeMediaProcessQueuesResult, *Response, error) { var res DescribeMediaProcessQueuesResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/queue", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribePicProcessQueues TODO func (s *CIService) DescribePicProcessQueues(ctx context.Context, opt *DescribePicProcessQueuesOptions) (*DescribePicProcessQueuesResult, *Response, error) { var res DescribePicProcessQueuesResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/picqueue", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeAIProcessQueues TODO func (s *CIService) DescribeAIProcessQueues(ctx context.Context, opt *DescribeMediaProcessQueuesOptions) (*DescribeMediaProcessQueuesResult, *Response, error) { var res DescribeMediaProcessQueuesResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/ai_queue", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeASRQueues TODO func (s *CIService) DescribeASRProcessQueues(ctx context.Context, opt *DescribeMediaProcessQueuesOptions) (*DescribeMediaProcessQueuesResult, *Response, error) { var res DescribeMediaProcessQueuesResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/asrqueue", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaProcessQueueOptions TODO type UpdateMediaProcessQueueOptions struct { XMLName xml.Name `xml:"Request"` Name string `xml:"Name,omitempty"` QueueID string `xml:"QueueID,omitempty"` State string `xml:"State,omitempty"` NotifyConfig *MediaProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"` } // UpdateMediaProcessQueueResult TODO type UpdateMediaProcessQueueResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId"` Queue *MediaProcessQueue `xml:"Queue"` } // UpdateMediaProcessQueue TODO func (s *CIService) UpdateMediaProcessQueue(ctx context.Context, opt *UpdateMediaProcessQueueOptions) (*UpdateMediaProcessQueueResult, *Response, error) { var res UpdateMediaProcessQueueResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/queue/" + opt.QueueID, body: opt, method: http.MethodPut, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribePicProcessBucketsOptions TODO type DescribePicProcessBucketsOptions DescribeMediaProcessBucketsOptions // DescribeAIProcessBucketsOptions TODO type DescribeAIProcessBucketsOptions DescribeMediaProcessBucketsOptions // DescribeASRProcessBucketsOptions TODO type DescribeASRProcessBucketsOptions DescribeMediaProcessBucketsOptions // DescribeFileProcessBucketsOptions TODO type DescribeFileProcessBucketsOptions DescribeMediaProcessBucketsOptions // DescribeMediaProcessBucketsOptions TODO type DescribeMediaProcessBucketsOptions struct { Regions string `url:"regions,omitempty"` BucketNames string `url:"bucketNames,omitempty"` BucketName string `url:"bucketName,omitempty"` PageNumber int `url:"pageNumber,omitempty"` PageSize int `url:"pageSize,omitempty"` } // DescribeMediaProcessBucketsResult TODO type DescribeMediaProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` MediaBucketList []MediaProcessBucket `xml:"MediaBucketList,omitempty"` } // DescribeMediaProcessBucketsResult TODO type DescribePicProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` MediaBucketList []MediaProcessBucket `xml:"PicBucketList,omitempty"` } // DescribeMediaProcessBucketsResult TODO type DescribeAIProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` MediaBucketList []MediaProcessBucket `xml:"AiBucketList,omitempty"` } // DescribeMediaProcessBucketsResult TODO type DescribeASRProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` MediaBucketList []MediaProcessBucket `xml:"AsrBucketList,omitempty"` } // DescribeFileProcessBucketsResult TODO type DescribeFileProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` FileBucketList []MediaProcessBucket `xml:"FileBucketList,omitempty"` } // MediaProcessBucket TODO type MediaProcessBucket struct { Name string `xml:"Name,omitempty"` BucketId string `xml:"BucketId,omitempty"` Region string `xml:"Region,omitempty"` CreateTime string `xml:"CreateTime,omitempty"` } // DescribeMediaProcessBuckets TODO // 媒体bucket接口 https://cloud.tencent.com/document/product/436/48988 func (s *CIService) DescribeMediaProcessBuckets(ctx context.Context, opt *DescribeMediaProcessBucketsOptions) (*DescribeMediaProcessBucketsResult, *Response, error) { var res DescribeMediaProcessBucketsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/mediabucket", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribePicProcessBuckets TODO func (s *CIService) DescribePicProcessBuckets(ctx context.Context, opt *DescribePicProcessBucketsOptions) (*DescribePicProcessBucketsResult, *Response, error) { var res DescribePicProcessBucketsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/picbucket", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeAIProcessBuckets TODO func (s *CIService) DescribeAIProcessBuckets(ctx context.Context, opt *DescribeAIProcessBucketsOptions) (*DescribeAIProcessBucketsResult, *Response, error) { var res DescribeAIProcessBucketsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/ai_bucket", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeASRProcessBuckets TODO func (s *CIService) DescribeASRProcessBuckets(ctx context.Context, opt *DescribeASRProcessBucketsOptions) (*DescribeASRProcessBucketsResult, *Response, error) { var res DescribeASRProcessBucketsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/asrbucket", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeFileProcessBuckets TODO func (s *CIService) DescribeFileProcessBuckets(ctx context.Context, opt *DescribeFileProcessBucketsOptions) (*DescribeFileProcessBucketsResult, *Response, error) { var res DescribeFileProcessBucketsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/file_bucket", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // GetMediaInfoResult TODO type GetMediaInfoResult struct { XMLName xml.Name `xml:"Response"` MediaInfo *MediaInfo `xml:"MediaInfo"` } // GetMediaInfo TODO // 媒体信息接口 https://cloud.tencent.com/document/product/436/55672 func (s *CIService) GetMediaInfo(ctx context.Context, name string, opt *ObjectGetOptions, id ...string) (*GetMediaInfoResult, *Response, error) { var u string if len(id) == 1 { u = fmt.Sprintf("/%s?versionId=%s&ci-process=videoinfo", encodeURIComponent(name), id[0]) } else if len(id) == 0 { u = fmt.Sprintf("/%s?ci-process=videoinfo", encodeURIComponent(name)) } else { return nil, nil, fmt.Errorf("wrong params") } var res GetMediaInfoResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: u, method: http.MethodGet, optQuery: opt, optHeader: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // GenerateMediaInfoOptions TODO type GenerateMediaInfoOptions struct { XMLName xml.Name `xml:"Request"` Input *JobInput `xml:"Input,omitempty"` } // GenerateMediaInfo TODO // 生成媒体信息接口,支持大文件,耗时较大请求 func (s *CIService) GenerateMediaInfo(ctx context.Context, opt *GenerateMediaInfoOptions) (*GetMediaInfoResult, *Response, error) { var res GetMediaInfoResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/mediainfo", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // GetSnapshotOptions TODO type GetSnapshotOptions struct { Time float32 `url:"time,omitempty"` Height int `url:"height,omitempty"` Width int `url:"width,omitempty"` Format string `url:"format,omitempty"` Rotate string `url:"rotate,omitempty"` Mode string `url:"mode,omitempty"` } // GetSnapshot TODO // 媒体截图接口 https://cloud.tencent.com/document/product/436/55671 func (s *CIService) GetSnapshot(ctx context.Context, name string, opt *GetSnapshotOptions, id ...string) (*Response, error) { var u string if len(id) == 1 { u = fmt.Sprintf("/%s?versionId=%s&ci-process=snapshot", encodeURIComponent(name), id[0]) } else if len(id) == 0 { u = fmt.Sprintf("/%s?ci-process=snapshot", encodeURIComponent(name)) } else { return nil, fmt.Errorf("wrong params") } sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: u, method: http.MethodGet, optQuery: opt, disableCloseBody: true, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } type PostSnapshotOptions struct { XMLName xml.Name `xml:"Request"` Input *JobInput `xml:"Input,omitempty"` Time string `xml:"Time,omitempty"` Width int `xml:"Width,omitempty"` Height int `xml:"Height,omitempty"` Mode string `xml:"Mode,omitempty"` Rotate string `xml:"Rotate,omitempty"` Format string `xml:"Format,omitempty"` Output *JobOutput `xml:"Output,omitempty"` } type PostSnapshotResult struct { XMLName xml.Name `xml:"Response"` Output *JobOutput `xml:"Output,omitempty"` } // PostSnapshot // https://cloud.tencent.com/document/product/460/73407 // upload snapshot image to cos func (s *CIService) PostSnapshot(ctx context.Context, opt *PostSnapshotOptions) (*PostSnapshotResult, *Response, error) { var res PostSnapshotResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/snapshot", body: opt, method: http.MethodPost, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // GetPrivateM3U8Options TODO type GetPrivateM3U8Options struct { Expires int `url:"expires"` } // GetPrivateM3U8 TODO // 获取私有m3u8资源接口 https://cloud.tencent.com/document/product/460/63738 func (s *CIService) GetPrivateM3U8(ctx context.Context, name string, opt *GetPrivateM3U8Options, id ...string) (*Response, error) { var u string if len(id) == 1 { u = fmt.Sprintf("/%s?versionId=%s&ci-process=pm3u8", encodeURIComponent(name), id[0]) } else if len(id) == 0 { u = fmt.Sprintf("/%s?ci-process=pm3u8", encodeURIComponent(name)) } else { return nil, fmt.Errorf("wrong params") } sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: u, method: http.MethodGet, optQuery: opt, disableCloseBody: true, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // TriggerWorkflowOptions TODO type TriggerWorkflowOptions struct { WorkflowId string `url:"workflowId"` Object string `url:"object"` Name string `url:"name"` } // TriggerWorkflowResult TODO type TriggerWorkflowResult struct { XMLName xml.Name `xml:"Response"` InstanceId string `xml:"InstanceId"` RequestId string `xml:"RequestId"` } // TriggerWorkflow TODO // 单文件触发工作流 https://cloud.tencent.com/document/product/460/54640 func (s *CIService) TriggerWorkflow(ctx context.Context, opt *TriggerWorkflowOptions) (*TriggerWorkflowResult, *Response, error) { var res TriggerWorkflowResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/triggerworkflow", optQuery: opt, method: http.MethodPost, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeWorkflowExecutionsOptions TODO type DescribeWorkflowExecutionsOptions struct { WorkflowId string `url:"workflowId,omitempty"` Name string `url:"name,omitempty"` OrderByTime string `url:"orderByTime,omitempty"` NextToken string `url:"nextToken,omitempty"` Size int `url:"size,omitempty"` States string `url:"states,omitempty"` StartCreationTime string `url:"startCreationTime,omitempty"` EndCreationTime string `url:"endCreationTime,omitempty"` JobId string `url:"jobId,omitempty"` } // WorkflowExecutionList TODO type WorkflowExecutionList struct { RunId string `xml:"RunId,omitempty"` WorkflowId string `xml:"WorkflowId,omitempty"` State string `xml:"State,omitempty"` CreationTime string `xml:"CreationTime,omitempty"` Object string `xml:"Object,omitempty"` } // DescribeWorkflowExecutionsResult TODO type DescribeWorkflowExecutionsResult struct { XMLName xml.Name `xml:"Response"` WorkflowExecutionList []WorkflowExecutionList `xml:"WorkflowExecutionList,omitempty"` NextToken string `xml:"NextToken,omitempty"` } // DescribeWorkflowExecutions TODO // 获取工作流实例列表 https://cloud.tencent.com/document/product/460/80050 func (s *CIService) DescribeWorkflowExecutions(ctx context.Context, opt *DescribeWorkflowExecutionsOptions) (*DescribeWorkflowExecutionsResult, *Response, error) { var res DescribeWorkflowExecutionsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflowexecution", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // NotifyConfig TODO type NotifyConfig struct { URL string `xml:"Url,omitempty"` Event string `xml:"Event,omitempty"` Type string `xml:"Type,omitempty"` ResultFormat string `xml:"ResultFormat,omitempty"` } // ExtFilter TODO type ExtFilter struct { State string `xml:"State,omitempty"` Audio string `xml:"Audio,omitempty"` Custom string `xml:"Custom,omitempty"` CustomExts string `xml:"CustomExts,omitempty"` AllFile string `xml:"AllFile,omitempty"` } // NodeInput TODO type NodeInput struct { QueueId string `xml:"QueueId,omitempty"` ObjectPrefix string `xml:"ObjectPrefix,omitempty"` NotifyConfig *NotifyConfig `xml:"NotifyConfig,omitempty" json:"NotifyConfig,omitempty"` ExtFilter *ExtFilter `xml:"ExtFilter,omitempty" json:"ExtFilter,omitempty"` } // NodeOutput TODO type NodeOutput struct { Region string `xml:"Region,omitempty"` Bucket string `xml:"Bucket,omitempty"` Object string `xml:"Object,omitempty"` AuObject string `xml:"AuObject,omitempty"` SpriteObject string `xml:"SpriteObject,omitempty"` BassObject string `xml:"BassObject,omitempty"` DrumObject string `xml:"DrumObject,omitempty"` StreamExtract []StreamExtract `xml:"StreamExtract,omitempty"` } // DelogoParam TODO type DelogoParam struct { Switch string `xml:"Switch,omitempty"` Dx string `xml:"Dx,omitempty"` Dy string `xml:"Dy,omitempty"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` } // NodeSDRtoHDR TODO type NodeSDRtoHDR struct { HdrMode string `xml:"HdrMode,omitempty"` } // NodeSCF TODO type NodeSCF struct { Region string `xml:"Region,omitempty"` FunctionName string `xml:"FunctionName,omitempty"` Namespace string `xml:"Namespace,omitempty"` } // VideoStreamConfig TODO type VideoStreamConfig struct { VideoStreamName string `xml:"VideoStreamName,omitempty"` BandWidth string `xml:"BandWidth,omitempty"` } // NodeHlsPackInfo TODO type NodeHlsPackInfo struct { VideoStreamConfig []VideoStreamConfig `xml:"VideoStreamConfig,omitempty"` } // WorkflowNodeCondition TODO type WorkflowNodeCondition struct { Express string `xml:"Express,omitempty"` } // SegmentVideoBody TODO type SegmentVideoBody struct { Mode string `xml:"Mode,omitempty"` SegmentType string `xml:"SegmentType,omitempty"` BackgroundBlue string `xml:"BackgroundBlue,omitempty"` BackgroundRed string `xml:"BackgroundRed,omitempty"` BackgroundGreen string `xml:"BackgroundGreen,omitempty"` BackgroundLogoUrl string `xml:"BackgroundLogoUrl,omitempty"` BinaryThreshold string `xml:"BinaryThreshold,omitempty"` RemoveRed string `xml:"RemoveRed,omitempty"` RemoveGreen string `xml:"RemoveGreen,omitempty"` RemoveBlue string `xml:"RemoveBlue,omitempty"` } // NodeSmartCover TODO type NodeSmartCover struct { Format string `xml:"Format,omitempty"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` Count string `xml:"Count,omitempty"` DeleteDuplicates string `xml:"DeleteDuplicates,omitempty"` } // NodeSegmentConfig TODO type NodeSegmentConfig struct { Format string `xml:"Format,omitempty"` Duration string `xml:"Duration,omitempty"` } // NodeStreamPackConfigInfo TODO type NodeStreamPackConfigInfo struct { PackType string `xml:"PackType,omitempty"` IgnoreFailedStream bool `xml:"IgnoreFailedStream,omitempty"` ReserveAllStreamNode string `xml:"ReserveAllStreamNode,omitempty"` } // NodeOperation TODO type NodeOperation struct { TemplateId string `xml:"TemplateId,omitempty" json:"TemplateId,omitempty"` Output *NodeOutput `xml:"Output,omitempty" json:"Output,omitempty"` WatermarkTemplateId interface{} `xml:"WatermarkTemplateId,omitempty" json:"WatermarkTemplateId,omitempty"` // xml解析map有问题,必须interface结构 DelogoParam *DelogoParam `xml:"DelogoParam,omitempty" json:"DelogoParam,omitempty"` SDRtoHDR *NodeSDRtoHDR `xml:"SDRtoHDR,omitempty" json:"SDRtoHDR,omitempty"` SCF *NodeSCF `xml:"SCF,omitempty" json:"SCF,omitempty"` HlsPackInfo *NodeHlsPackInfo `xml:"HlsPackInfo,omitempty" json:"HlsPackInfo,omitempty"` TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty" json:"TranscodeTemplateId,omitempty"` SmartCover *NodeSmartCover `xml:"SmartCover,omitempty" json:"SmartCover,omitempty"` SegmentConfig *NodeSegmentConfig `xml:"Segment,omitempty" json:"Segment,omitempty"` DigitalWatermark *DigitalWatermark `xml:"DigitalWatermark,omitempty" json:"DigitalWatermark,omitempty"` StreamPackConfigInfo *NodeStreamPackConfigInfo `xml:"StreamPackConfig,omitempty" json:"StreamPackConfig,omitempty"` StreamPackInfo *NodeHlsPackInfo `xml:"StreamPackInfo,omitempty" json:"StreamPackInfo,omitempty"` Condition *WorkflowNodeCondition `xml:"Condition,omitempty" json:"Condition,omitempty"` SegmentVideoBody *SegmentVideoBody `xml:"SegmentVideoBody,omitempty" json:"SegmentVideoBody,omitempty"` ImageInspect *ImageInspect `xml:"ImageInspect,omitempty" json:"ImageInspect,omitempty"` } // Node TODO type Node struct { Type string `xml:"Type"` Input *NodeInput `xml:"Input,omitempty" json:"Input,omitempty"` Operation *NodeOperation `xml:"Operation,omitempty" json:"Operation,omitempty"` } // Topology TODO type Topology struct { Dependencies map[string]string `xml:"Dependencies,omitempty" json:"Dependencies,omitempty"` Nodes map[string]Node `xml:"Nodes,omitempty" json:"Nodes,omitempty"` } // UnmarshalXML TODO func (m *Topology) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { var v struct { XMLName xml.Name //`xml:"Topology"` Dependencies struct { Inner []byte `xml:",innerxml"` } `xml:"Dependencies"` Nodes struct { Inner []byte `xml:",innerxml"` } `xml:"Nodes"` } err := d.DecodeElement(&v, &start) if err != nil { return err } myMap := make(map[string]interface{}) // ... do the mxj magic here ... - temp := v.Nodes.Inner prefix := "" postfix := "" str := prefix + string(temp) + postfix // fmt.Println(str) myMxjMap, _ := mxj.NewMapXml([]byte(str)) myMap, _ = myMxjMap["Nodes"].(map[string]interface{}) nodesMap := make(map[string]Node) for k, v := range myMap { var node Node // fmt.Printf("%+v\n", v) mapstructure.Decode(v, &node) // fmt.Printf("%+v\n", err) nodesMap[k] = node } // fill myMap m.Nodes = nodesMap deps := make(map[string]interface{}) tep := "" + string(v.Dependencies.Inner) + "" tepMxjMap, _ := mxj.NewMapXml([]byte(tep)) deps, _ = tepMxjMap["Dependencies"].(map[string]interface{}) depsString := make(map[string]string) for k, v := range deps { depsString[k] = v.(string) } m.Dependencies = depsString return nil } // WorkflowExecution TODO type WorkflowExecution struct { RunId string `xml:"RunId,omitempty" json:"RunId,omitempty"` WorkflowId string `xml:"WorkflowId,omitempty" json:"WorkflowId,omitempty"` WorkflowName string `xml:"WorkflowName,omitempty" json:"WorkflowName,omitempty"` State string `xml:"State,omitempty" json:"State,omitempty"` CreateTime string `xml:"CreateTime,omitempty" json:"CreateTime,omitempty"` Object string `xml:"Object,omitempty" json:"Object,omitempty"` Topology Topology `xml:"Topology,omitempty" json:"Topology,omitempty"` } // DescribeWorkflowExecutionResult TODO type DescribeWorkflowExecutionResult struct { XMLName xml.Name `xml:"Response"` WorkflowExecution []WorkflowExecution `xml:"WorkflowExecution,omitempty" json:"WorkflowExecution,omitempty"` NextToken string `xml:"NextToken,omitempty" json:"NextToken,omitempty"` } // DescribeWorkflowExecution TODO // 获取工作流实例详情 https://cloud.tencent.com/document/product/460/45949 func (s *CIService) DescribeWorkflowExecution(ctx context.Context, runId string) (*DescribeWorkflowExecutionResult, *Response, error) { var res DescribeWorkflowExecutionResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflowexecution/" + runId, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // SpeechRecognition TODO type SpeechRecognition struct { ChannelNum string `xml:"ChannelNum,omitempty"` ConvertNumMode string `xml:"ConvertNumMode,omitempty"` EngineModelType string `xml:"EngineModelType,omitempty"` FilterDirty string `xml:"FilterDirty,omitempty"` FilterModal string `xml:"FilterModal,omitempty"` ResTextFormat string `xml:"ResTextFormat,omitempty"` SpeakerDiarization string `xml:"SpeakerDiarization,omitempty"` SpeakerNumber string `xml:"SpeakerNumber,omitempty"` FilterPunc string `xml:"FilterPunc,omitempty"` OutputFileType string `xml:"OutputFileType,omitempty"` FlashAsr string `xml:"FlashAsr,omitempty"` Format string `xml:"Format,omitempty"` FirstChannelOnly string `xml:"FirstChannelOnly,omitempty"` WordInfo string `xml:"WordInfo,omitempty"` SentenceMaxLength string `xml:"SentenceMaxLength,omitempty"` } // SpeechRecognitionResult TODO type SpeechRecognitionResult struct { AudioTime float64 `xml:"AudioTime,omitempty"` Result []string `xml:"Result,omitempty"` ObjectName string `xml:"ObjectName,omitempty"` DetailObjectName string `xml:"DetailObjectName,omitempty"` SpeechRecognitionFlashResult *SpeechRecognitionFlashResult `xml:"FlashResult,omitempty"` SpeechRecognitionResultDetail *SpeechRecognitionResultDetail `xml:"ResultDetail,omitempty"` } type SpeechRecognitionFlashResult struct { ChannelId int32 `xml:"channel_id,omitempty"` Text string `xml:"text,omitempty"` SentenceList []SpeechRecognitionSentenceList `xml:"sentence_list,omitempty"` } type SpeechRecognitionSentenceList struct { Text string `xml:"text,omitempty"` StartTime string `xml:"start_time,omitempty"` EndTime string `xml:"end_time,omitempty"` SpeakerId string `xml:"speaker_id,omitempty"` WordList []SpeechRecognitionWordList `xml:"word_list,omitempty"` } type SpeechRecognitionWordList struct { Word string `xml:"word,omitempty"` StartTime string `xml:"start_time,omitempty"` EndTime string `xml:"end_time,omitempty"` } type SpeechRecognitionResultDetail struct { FinalSentence string `xml:"FinalSentence,omitempty"` SliceSentence string `xml:"SliceSentence,omitempty"` StartMs string `xml:"StartMs,omitempty"` EndMs string `xml:"EndMs,omitempty"` WordsNum string `xml:"WordsNum,omitempty"` SpeechSpeed string `xml:"SpeechSpeed,omitempty"` SpeakerId string `xml:"SpeakerId,omitempty"` Words []SpeechRecognitionWords `xml:"Words,omitempty"` } type SpeechRecognitionWords struct { Word string `xml:"Word,omitempty"` OffsetStartMs string `xml:"OffsetStartMs,omitempty"` OffsetEndMs string `xml:"OffsetEndMs,omitempty"` } // SoundHoundResult TODO type SoundHoundResult struct { SongList struct { Inlier int `xml:"Inlier,omitempty"` SingerName string `xml:"SingerName,omitempty"` SongName string `xml:"SongName,omitempty"` } `xml:"SongList,omitempty"` } // ASRJobOperation TODO type ASRJobOperation struct { Tag string `xml:"Tag,omitempty"` Output *JobOutput `xml:"Output,omitempty"` SpeechRecognition *SpeechRecognition `xml:"SpeechRecognition,omitempty"` SpeechRecognitionResult *SpeechRecognitionResult `xml:"SpeechRecognitionResult,omitempty"` SoundHoundResult *SoundHoundResult `xml:"SoundHoundResult,omitempty"` TemplateId string `xml:"TemplateId,omitempty"` UserData string `xml:"UserData,omitempty"` JobLevel int `xml:"JobLevel,omitempty"` } // CreateASRJobsOptions TODO type CreateASRJobsOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Input *JobInput `xml:"Input,omitempty"` Operation *ASRJobOperation `xml:"Operation,omitempty"` QueueId string `xml:"QueueId,omitempty"` CallBack string `xml:"CallBack,omitempty"` QueueType string `xml:"QueueType,omitempty"` CallBackFormat string `xml:"CallBackFormat,omitempty"` CallBackType string `xml:"CallBackType,omitempty"` CallBackMqConfig *NotifyConfigCallBackMqConfig `xml:"CallBackMqConfig,omitempty"` } // ASRJobDetail TODO type ASRJobDetail struct { Code string `xml:"Code,omitempty"` Message string `xml:"Message,omitempty"` JobId string `xml:"JobId,omitempty"` Tag string `xml:"Tag,omitempty"` State string `xml:"State,omitempty"` CreationTime string `xml:"CreationTime,omitempty"` QueueId string `xml:"QueueId,omitempty"` Input *JobInput `xml:"Input,omitempty"` Operation *ASRJobOperation `xml:"Operation,omitempty"` } // CreateASRJobsResult TODO type CreateASRJobsResult struct { XMLName xml.Name `xml:"Response"` JobsDetail *ASRJobDetail `xml:"JobsDetail,omitempty"` } // CreateASRJobs TODO func (s *CIService) CreateASRJobs(ctx context.Context, opt *CreateASRJobsOptions) (*CreateASRJobsResult, *Response, error) { var res CreateASRJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/asr_jobs", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeMutilASRJobResult TODO type DescribeMutilASRJobResult struct { XMLName xml.Name `xml:"Response"` JobsDetail []ASRJobDetail `xml:"JobsDetail,omitempty"` NonExistJobIds []string `xml:"NonExistJobIds,omitempty"` } // DescribeMultiASRJob TODO func (s *CIService) DescribeMultiASRJob(ctx context.Context, jobids []string) (*DescribeMutilASRJobResult, *Response, error) { jobidsStr := "" if len(jobids) < 1 { return nil, nil, errors.New("empty param jobids") } else { jobidsStr = strings.Join(jobids, ",") } var res DescribeMutilASRJobResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/asr_jobs/" + jobidsStr, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeMediaTemplateOptions TODO type DescribeMediaTemplateOptions struct { Tag string `url:"tag,omitempty"` Category string `url:"category,omitempty"` Ids string `url:"ids,omitempty"` Name string `url:"name,omitempty"` PageNumber int `url:"pageNumber,omitempty"` PageSize int `url:"pageSize,omitempty"` } // DescribeMediaTemplateResult TODO type DescribeMediaTemplateResult struct { XMLName xml.Name `xml:"Response"` TemplateList []Template `xml:"TemplateList,omitempty"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` } // DescribeMediaTemplate 搜索模板 func (s *CIService) DescribeMediaTemplate(ctx context.Context, opt *DescribeMediaTemplateOptions) (*DescribeMediaTemplateResult, *Response, error) { var res DescribeMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DeleteMediaTemplateResult TODO type DeleteMediaTemplateResult struct { RequestId string `xml:"RequestId,omitempty"` TemplateId string `xml:"TemplateId,omitempty"` } // DeleteMediaTemplate TODO func (s *CIService) DeleteMediaTemplate(ctx context.Context, tempalteId string) (*DeleteMediaTemplateResult, *Response, error) { var res DeleteMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + tempalteId, method: http.MethodDelete, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaSnapshotTemplateOptions TODO type CreateMediaSnapshotTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Snapshot *Snapshot `xml:"Snapshot,omitempty"` } // CreateMediaTranscodeTemplateOptions TODO type CreateMediaTranscodeTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Container *Container `xml:"Container,omitempty"` Video *Video `xml:"Video,omitempty"` Audio *Audio `xml:"Audio,omitempty"` TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"` TransConfig *TransConfig `xml:"TransConfig,omitempty"` AudioMix *AudioMix `xml:"AudioMix,omitempty"` AudioMixArray []AudioMix `xml:"AudioMixArray,omitempty"` } // CreateMediaAnimationTemplateOptions TODO type CreateMediaAnimationTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Container *Container `xml:"Container,omitempty"` Video *AnimationVideo `xml:"Video,omitempty"` TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"` } // CreateMediaConcatTemplateOptions TODO type CreateMediaConcatTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"` } // CreateMediaVideoProcessTemplateOptions TODO type CreateMediaVideoProcessTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` ColorEnhance *ColorEnhance `xml:"ColorEnhance,omitempty"` MsSharpen *MsSharpen `xml:"MsSharpen,omitempty"` } // CreateMediaVideoMontageTemplateOptions TODO type CreateMediaVideoMontageTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Duration string `xml:"Duration,omitempty"` Scene string `xml:"Scene,omitempty"` Container *Container `xml:"Container,omitempty"` Video *Video `xml:"Video,omitempty"` Audio *Audio `xml:"Audio,omitempty"` AudioMix *AudioMix `xml:"AudioMix,omitempty"` AudioMixArray []AudioMix `xml:"AudioMixArray,omitempty"` } // CreateMediaVoiceSeparateTemplateOptions TODO type CreateMediaVoiceSeparateTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` AudioMode string `xml:"AudioMode,omitempty"` AudioConfig *AudioConfig `xml:"AudioConfig,omitempty"` } // CreateMediaSuperResolutionTemplateOptions TODO type CreateMediaSuperResolutionTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Resolution string `xml:"Resolution,omitempty"` // sdtohd、hdto4k EnableScaleUp string `xml:"EnableScaleUp,omitempty"` Version string `xml:"Version,omitempty"` } // CreateMediaPicProcessTemplateOptions TODO type CreateMediaPicProcessTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` PicProcess *PicProcess `xml:"PicProcess,omitempty"` } // CreateMediaWatermarkTemplateOptions TODO type CreateMediaWatermarkTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Watermark *Watermark `xml:"Watermark,omitempty"` } // CreateMediaTranscodeProTemplateOptions TODO type CreateMediaTranscodeProTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Container *Container `xml:"Container,omitempty"` Video *TranscodeProVideo `xml:"Video,omitempty"` Audio *TranscodeProAudio `xml:"Audio,omitempty"` TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"` TransConfig *TransConfig `xml:"TransConfig,omitempty"` } // CreateMediaTtsTemplateOptions TODO type CreateMediaTtsTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` Mode string `xml:"Mode,omitempty"` Codec string `xml:"Codec,omitempty"` VoiceType string `xml:"VoiceType,omitempty"` Volume string `xml:"Volume,omitempty"` Speed string `xml:"Speed,omitempty"` Emotion string `xml:"Emotion,omitempty"` } // CreateMediaSmartcoverTemplateOptions TODO type CreateMediaSmartCoverTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` SmartCover *NodeSmartCover `xml:"SmartCover,omitempty" json:"SmartCover,omitempty"` } // CreateMediaSpeechRecognitionTemplateOptions TODO type CreateMediaSpeechRecognitionTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` SpeechRecognition *SpeechRecognition `xml:"SpeechRecognition,omitempty" json:"SpeechRecognition,omitempty"` } // CreateNoiseReductionTemplateOptions TODO type CreateNoiseReductionTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` NoiseReduction *NoiseReduction `xml:"NoiseReduction,omitempty" json:"NoiseReduction,omitempty"` } // NoiseReduction TODO type NoiseReduction struct { Format string `xml:"Format,omitempty"` Samplerate string `xml:"Samplerate,omitempty"` } // CreateVideoEnhanceTemplateOptions TODO type CreateVideoEnhanceTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` VideoEnhance *VideoEnhance `xml:"VideoEnhance,omitempty" json:"VideoEnhance,omitempty"` } // VideoEnhance TODO type VideoEnhance struct { Transcode *Transcode `xml:"Transcode,omitempty"` SuperResolution *SuperResolution `xml:"SuperResolution,omitempty"` ColorEnhance *ColorEnhance `xml:"ColorEnhance,omitempty"` MsSharpen *MsSharpen `xml:"MsSharpen,omitempty"` SDRtoHDR *SDRtoHDR `xml:"SDRtoHDR,omitempty"` FrameEnhance *FrameEnhance `xml:"FrameEnhance,omitempty"` } // FrameEnhance TODO type FrameEnhance struct { FrameDoubling string `xml:"FrameDoubling,omitempty"` } // CreateVideoTargetRecTemplateOptions TODO type CreateVideoTargetRecTemplateOptions struct { XMLName xml.Name `xml:"Request"` Tag string `xml:"Tag,omitempty"` Name string `xml:"Name,omitempty"` VideoTargetRec *VideoTargetRec `xml:"VideoTargetRec,omitempty" json:"VideoTargetRec,omitempty"` } // VideoTargetRec TODO type VideoTargetRec struct { Body string `xml:"Body,omitempty"` Pet string `xml:"Pet,omitempty"` Car string `xml:"Car,omitempty"` } // VideoTargetRecResult TODO type VideoTargetRecResult struct { BodyRecognition []*BodyRecognition `xml:"BodyRecognition,omitempty"` PetRecognition []*PetRecognition `xml:"PetRecognition,omitempty"` CarRecognition []*CarRecognition `xml:"CarRecognition,omitempty"` } // BodyRecognition TODO type BodyRecognition struct { Time string `xml:"Time,omitempty"` Url string `xml:"Url,omitempty"` BodyInfo []*VideoTargetRecInfo `xml:"BodyInfo,omitempty"` } // PetRecognition TODO type PetRecognition struct { Time string `xml:"Time,omitempty"` Url string `xml:"Url,omitempty"` PetInfo []*VideoTargetRecInfo `xml:"PetInfo,omitempty"` } // CarRecognition TODO type CarRecognition struct { Time string `xml:"Time,omitempty"` Url string `xml:"Url,omitempty"` CarInfo []*VideoTargetRecInfo `xml:"CarInfo,omitempty"` } // BodyInfo TODO type VideoTargetRecInfo struct { Name string `xml:"Name,omitempty"` Score string `xml:"Score,omitempty"` Location *VideoTargetRecLocation `xml:"Location,omitempty"` } // VideoTargetRecLocation TODO type VideoTargetRecLocation struct { X string `xml:"X,omitempty"` Y string `xml:"Y,omitempty"` Height string `xml:"Height,omitempty"` Width string `xml:"Width,omitempty"` } // SplitVideoParts TODO type SplitVideoParts struct { Mode string `xml:"Mode,omitempty"` } // SplitVideoInfoResult TODO type SplitVideoInfoResult struct { TimeInfo []struct { Index string `xml:"Index,omitempty"` PartBegin string `xml:"PartBegin,omitempty"` PartEnd string `xml:"PartEnd,omitempty"` } `xml:"TimeInfo,omitempty"` } // CreateMediaTemplateResult TODO type CreateMediaTemplateResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` Template *Template `xml:"Template,omitempty"` } // Template TODO type Template struct { TemplateId string `xml:"TemplateId,omitempty"` Tag string `xml:"Code,omitempty"` Name string `xml:"Name,omitempty"` TransTpl *Transcode `xml:"TransTpl,omitempty"` CreateTime string `xml:"CreateTime,omitempty"` UpdateTime string `xml:"UpdateTime,omitempty"` BucketId string `xml:"BucketId,omitempty"` Category string `xml:"Category,omitempty"` Snapshot *Snapshot `xml:"Snapshot,omitempty"` Animation *Animation `xml:"Animation,omitempty"` ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"` VideoProcess *VideoProcess `xml:"VideoProcess,omitempty"` VideoMontage *VideoMontage `xml:"VideoMontage,omitempty"` VoiceSeparate *VoiceSeparate `xml:"VoiceSeparate,omitempty"` SuperResolution *SuperResolution `xml:"SuperResolution,omitempty"` PicProcess *PicProcess `xml:"PicProcess,omitempty"` Watermark *Watermark `xml:"Watermark,omitempty"` TransProTpl *TranscodePro `xml:"TransProTpl,omitempty"` TtsTpl *TtsTpl `xml:"TtsTpl,omitempty"` SmartCover *NodeSmartCover `xml:"SmartCover,omitempty" json:"SmartCover,omitempty"` SpeechRecognition *SpeechRecognition `xml:"SpeechRecognition,omitempty" json:"SpeechRecognition,omitempty"` NoiseReduction *NoiseReduction `xml:"NoiseReduction,omitempty" json:"NoiseReduction,omitempty"` VideoEnhance *VideoEnhance `xml:"VideoEnhance,omitempty" json:"VideoEnhance,omitempty"` VideoTargetRec *VideoTargetRec `xml:"VideoTargetRec,omitempty" json:"VideoTargetRec,omitempty"` } // CreateMediaSnapshotTemplate 创建截图模板 func (s *CIService) CreateMediaSnapshotTemplate(ctx context.Context, opt *CreateMediaSnapshotTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaSnapshotTemplate 更新截图模板 func (s *CIService) UpdateMediaSnapshotTemplate(ctx context.Context, opt *CreateMediaSnapshotTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaTranscodeTemplate Options 创建转码模板 func (s *CIService) CreateMediaTranscodeTemplate(ctx context.Context, opt *CreateMediaTranscodeTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaTranscodeTemplate 更新转码模板 func (s *CIService) UpdateMediaTranscodeTemplate(ctx context.Context, opt *CreateMediaTranscodeTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaAnimationTemplate 创建动图模板 func (s *CIService) CreateMediaAnimationTemplate(ctx context.Context, opt *CreateMediaAnimationTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaAnimationTemplate 更新动图模板 func (s *CIService) UpdateMediaAnimationTemplate(ctx context.Context, opt *CreateMediaAnimationTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaConcatTemplate 创建拼接模板 func (s *CIService) CreateMediaConcatTemplate(ctx context.Context, opt *CreateMediaConcatTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaConcatTemplate 更新拼接模板 func (s *CIService) UpdateMediaConcatTemplate(ctx context.Context, opt *CreateMediaConcatTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaVideoProcessTemplate 创建视频增强模板 func (s *CIService) CreateMediaVideoProcessTemplate(ctx context.Context, opt *CreateMediaVideoProcessTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaVideoProcessTemplate 更新视频增强模板 func (s *CIService) UpdateMediaVideoProcessTemplate(ctx context.Context, opt *CreateMediaVideoProcessTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaVideoMontageTemplate 创建精彩集锦模板 func (s *CIService) CreateMediaVideoMontageTemplate(ctx context.Context, opt *CreateMediaVideoMontageTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaVideoMontageTemplate 更新精彩集锦模板 func (s *CIService) UpdateMediaVideoMontageTemplate(ctx context.Context, opt *CreateMediaVideoMontageTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaVoiceSeparateTemplate 创建人声分离模板 func (s *CIService) CreateMediaVoiceSeparateTemplate(ctx context.Context, opt *CreateMediaVoiceSeparateTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaVoiceSeparateTemplate 更新人声分离模板 func (s *CIService) UpdateMediaVoiceSeparateTemplate(ctx context.Context, opt *CreateMediaVoiceSeparateTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaSuperResolutionTemplate 创建超级分辨率模板 func (s *CIService) CreateMediaSuperResolutionTemplate(ctx context.Context, opt *CreateMediaSuperResolutionTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaSuperResolutionTemplate 更新超级分辨率模板 func (s *CIService) UpdateMediaSuperResolutionTemplate(ctx context.Context, opt *CreateMediaSuperResolutionTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaPicProcessTemplate 创建图片处理模板 func (s *CIService) CreateMediaPicProcessTemplate(ctx context.Context, opt *CreateMediaPicProcessTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaPicProcessTemplate 更新图片处理模板 func (s *CIService) UpdateMediaPicProcessTemplate(ctx context.Context, opt *CreateMediaPicProcessTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaWatermarkTemplate 创建水印模板 func (s *CIService) CreateMediaWatermarkTemplate(ctx context.Context, opt *CreateMediaWatermarkTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaWatermarkTemplate 更新水印模板 func (s *CIService) UpdateMediaWatermarkTemplate(ctx context.Context, opt *CreateMediaWatermarkTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaTranscodeProTemplate 创建广电转码模板 func (s *CIService) CreateMediaTranscodeProTemplate(ctx context.Context, opt *CreateMediaTranscodeProTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaTranscodeProTemplate 更新广电转码模板 func (s *CIService) UpdateMediaTranscodeProTemplate(ctx context.Context, opt *CreateMediaTranscodeProTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaTtsTemplate 创建语音合成模板 func (s *CIService) CreateMediaTtsTemplate(ctx context.Context, opt *CreateMediaTtsTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaTtsTemplate 更新语音合成模板 func (s *CIService) UpdateMediaTtsTemplate(ctx context.Context, opt *CreateMediaTtsTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaTtsTemplate 创建智能封面模板 func (s *CIService) CreateMediaSmartCoverTemplate(ctx context.Context, opt *CreateMediaSmartCoverTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaTtsTemplate 更新智能封面模板 func (s *CIService) UpdateMediaSmartCoverTemplate(ctx context.Context, opt *CreateMediaSmartCoverTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateMediaTtsTemplate 创建语音识别模板 func (s *CIService) CreateMediaSpeechRecognitionTemplate(ctx context.Context, opt *CreateMediaSpeechRecognitionTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaTtsTemplate 更新语音识别模板 func (s *CIService) UpdateMediaSpeechRecognitionTemplate(ctx context.Context, opt *CreateMediaSpeechRecognitionTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateNoiseReductionTemplate 创建音频降噪模板 func (s *CIService) CreateNoiseReductionTemplate(ctx context.Context, opt *CreateNoiseReductionTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateNoiseReductionTemplate 更新音频降噪模板 func (s *CIService) UpdateNoiseReductionTemplate(ctx context.Context, opt *CreateNoiseReductionTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateVideoEnhanceTemplate 创建画质增强模板 func (s *CIService) CreateVideoEnhanceTemplate(ctx context.Context, opt *CreateVideoEnhanceTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateVideoEnhanceTemplate 更新画质增强模板 func (s *CIService) UpdateVideoEnhanceTemplate(ctx context.Context, opt *CreateVideoEnhanceTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateVideoTargetRecTemplate 创建移动物体检测模板 func (s *CIService) CreateVideoTargetRecTemplate(ctx context.Context, opt *CreateVideoTargetRecTemplateOptions) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateVideoTargetRecTemplate 更新移动物体检测模板 func (s *CIService) UpdateVideoTargetRecTemplate(ctx context.Context, opt *CreateVideoTargetRecTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) { var res CreateMediaTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + templateId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // MediaWorkflow TODO type MediaWorkflow struct { Name string `xml:"Name,omitempty"` WorkflowId string `xml:"WorkflowId,omitempty"` State string `xml:"State,omitempty"` Topology *Topology `xml:"Topology,omitempty"` CreateTime string `xml:"CreateTime,omitempty"` UpdateTime string `xml:"UpdateTime,omitempty"` BucketId string `xml:"BucketId,omitempty"` } // MarshalXML TODO func (m *CreateMediaWorkflowOptions) MarshalXML(e *xml.Encoder, start xml.StartElement) error { if m == nil { return nil } type xmlMapEntry struct { XMLName xml.Name Type string `xml:"Type"` Input interface{} `xml:",innerxml"` Operation interface{} `xml:",innerxml"` } tokens := []xml.Token{} tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Request"}}) tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "MediaWorkflow"}}) t := xml.StartElement{Name: xml.Name{Local: "Name"}} tokens = append(tokens, t, xml.CharData(m.MediaWorkflow.Name), xml.EndElement{Name: t.Name}) t = xml.StartElement{Name: xml.Name{Local: "State"}} tokens = append(tokens, t, xml.CharData(m.MediaWorkflow.State), xml.EndElement{Name: t.Name}) tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Topology"}}) tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Dependencies"}}) var dependenciesKeys []string for k := range m.MediaWorkflow.Topology.Dependencies { dependenciesKeys = append(dependenciesKeys, k) } sort.Strings(dependenciesKeys) for _, k := range dependenciesKeys { t := xml.StartElement{Name: xml.Name{Local: k}} tokens = append(tokens, t, xml.CharData(m.MediaWorkflow.Topology.Dependencies[k]), xml.EndElement{Name: t.Name}) } tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Dependencies"}}) // Nodes tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Nodes"}}) for _, t := range tokens { err := e.EncodeToken(t) if err != nil { return err } } tokens = tokens[:0] var nodesKeys []string for k := range m.MediaWorkflow.Topology.Nodes { nodesKeys = append(nodesKeys, k) } sort.Strings(nodesKeys) for _, k := range nodesKeys { e.Encode(xmlMapEntry{XMLName: xml.Name{Local: k}, Type: m.MediaWorkflow.Topology.Nodes[k].Type, Input: m.MediaWorkflow.Topology.Nodes[k].Input, Operation: m.MediaWorkflow.Topology.Nodes[k].Operation}) } tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Nodes"}}) tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Topology"}}) tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "MediaWorkflow"}}) tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Request"}}) for _, t := range tokens { err := e.EncodeToken(t) if err != nil { return err } } return e.Flush() } // UnmarshalXML TODO func (m *CreateMediaWorkflowOptions) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { var v struct { XMLName xml.Name //`xml:"Topology"` Dependencies struct { Inner []byte `xml:",innerxml"` } `xml:"Dependencies"` Nodes struct { Inner []byte `xml:",innerxml"` } `xml:"Nodes"` } err := d.DecodeElement(&v, &start) if err != nil { return err } myMap := make(map[string]interface{}) // ... do the mxj magic here ... - temp := v.Nodes.Inner prefix := "" postfix := "" str := prefix + string(temp) + postfix myMxjMap, _ := mxj.NewMapXml([]byte(str)) myMap, _ = myMxjMap["Nodes"].(map[string]interface{}) nodesMap := make(map[string]Node) for k, v := range myMap { var node Node mapstructure.Decode(v, &node) nodesMap[k] = node } // fill myMap m.MediaWorkflow.Topology.Nodes = nodesMap deps := make(map[string]interface{}) tep := "" + string(v.Dependencies.Inner) + "" tepMxjMap, _ := mxj.NewMapXml([]byte(tep)) deps, _ = tepMxjMap["Dependencies"].(map[string]interface{}) depsString := make(map[string]string) for k, v := range deps { depsString[k] = v.(string) } m.MediaWorkflow.Topology.Dependencies = depsString return nil } // CreateMediaWorkflowOptions TODO type CreateMediaWorkflowOptions struct { XMLName xml.Name `xml:"Request"` MediaWorkflow *MediaWorkflow `xml:"MediaWorkflow,omitempty"` } // CreateMediaWorkflowResult TODO type CreateMediaWorkflowResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` MediaWorkflow *MediaWorkflow `xml:"MediaWorkflow,omitempty"` } // CreateMediaWorkflow 创建工作流 func (s *CIService) CreateMediaWorkflow(ctx context.Context, opt *CreateMediaWorkflowOptions) (*CreateMediaWorkflowResult, *Response, error) { var res CreateMediaWorkflowResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflow", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaWorkflow TODO func (s *CIService) UpdateMediaWorkflow(ctx context.Context, opt *CreateMediaWorkflowOptions, workflowId string) (*CreateMediaWorkflowResult, *Response, error) { var res CreateMediaWorkflowResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflow/" + workflowId, method: http.MethodPut, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // UpdateMediaWorkflow TODO func (s *CIService) ActiveMediaWorkflow(ctx context.Context, workflowId string) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflow/" + workflowId + "?active", method: http.MethodPut, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // UpdateMediaWorkflow TODO func (s *CIService) PausedMediaWorkflow(ctx context.Context, workflowId string) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflow/" + workflowId + "?paused", method: http.MethodPut, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // DescribeMediaWorkflowOptions TODO type DescribeMediaWorkflowOptions struct { Ids string `url:"ids,omitempty"` Name string `url:"name,omitempty"` PageNumber int `url:"pageNumber,omitempty"` PageSize int `url:"pageSize,omitempty"` } // DescribeMediaWorkflowResult TODO type DescribeMediaWorkflowResult struct { XMLName xml.Name `xml:"Response"` MediaWorkflowList []MediaWorkflow `xml:"MediaWorkflowList,omitempty"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` NonExistIDs []string `xml:"NonExistIDs,omitempty"` } // DescribeMediaWorkflow 搜索工作流 func (s *CIService) DescribeMediaWorkflow(ctx context.Context, opt *DescribeMediaWorkflowOptions) (*DescribeMediaWorkflowResult, *Response, error) { var res DescribeMediaWorkflowResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflow", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DeleteMediaWorkflowResult TODO type DeleteMediaWorkflowResult struct { RequestId string `xml:"RequestId,omitempty"` WorkflowId string `xml:"WorkflowId,omitempty"` } // DeleteMediaWorkflow 删除工作流 func (s *CIService) DeleteMediaWorkflow(ctx context.Context, workflowId string) (*DeleteMediaWorkflowResult, *Response, error) { var res DeleteMediaWorkflowResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/workflow/" + workflowId, method: http.MethodDelete, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // InventoryTriggerJobInput TODO type InventoryTriggerJobInput struct { Manifest string `xml:"Manifest,omitempty"` UrlFile string `xml:"UrlFile,omitempty"` Prefix string `xml:"Prefix,omitempty"` Object string `xml:"Object,omitempty"` } // InventoryTriggerJobOperationTimeInterval TODO type InventoryTriggerJobOperationTimeInterval struct { Start string `xml:"Start,omitempty"` End string `xml:"End,omitempty"` } // InventoryTriggerJobOperation TODO type InventoryTriggerJobOperation struct { WorkflowIds string `xml:"WorkflowIds,omitempty"` TimeInterval InventoryTriggerJobOperationTimeInterval `xml:"TimeInterval,omitempty"` QueueId string `xml:"QueueId,omitempty"` UserData string `xml:"UserData,omitempty"` JobLevel int `xml:"JobLevel,omitempty"` CallBackFormat string `xml:"CallBackFormat,omitempty"` CallBackType string `xml:"CallBackType,omitempty"` CallBack string `xml:"CallBack,omitempty"` CallBackMqConfig *NotifyConfigCallBackMqConfig `xml:"CallBackMqConfig,omitempty"` Tag string `xml:"Tag,omitempty"` JobParam *InventoryTriggerJobOperationJobParam `xml:"JobParam,omitempty"` Output *JobOutput `xml:"Output,omitempty"` } // InventoryTriggerJobOperationJobParam TODO type InventoryTriggerJobOperationJobParam struct { MediaResult *MediaResult `xml:"MediaResult,omitempty"` MediaInfo *MediaInfo `xml:"MediaInfo,omitempty"` Transcode *Transcode `xml:"Transcode,omitempty"` Watermark []Watermark `xml:"Watermark,omitempty"` TemplateId string `xml:"TemplateId,omitempty"` WatermarkTemplateId []string `xml:"WatermarkTemplateId,omitempty"` ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"` Snapshot *Snapshot `xml:"Snapshot,omitempty"` Animation *Animation `xml:"Animation,omitempty"` Segment *Segment `xml:"Segment,omitempty"` VideoMontage *VideoMontage `xml:"VideoMontage,omitempty"` VoiceSeparate *VoiceSeparate `xml:"VoiceSeparate,omitempty"` VideoProcess *VideoProcess `xml:"VideoProcess,omitempty"` TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty"` // 视频增强、超分、SDRtoHDR任务类型,可以选择转码模板相关参数 SDRtoHDR *SDRtoHDR `xml:"SDRtoHDR,omitempty"` SuperResolution *SuperResolution `xml:"SuperResolution,omitempty"` DigitalWatermark *DigitalWatermark `xml:"DigitalWatermark,omitempty"` ExtractDigitalWatermark *ExtractDigitalWatermark `xml:"ExtractDigitalWatermark,omitempty"` VideoTag *VideoTag `xml:"VideoTag,omitempty"` VideoTagResult *VideoTagResult `xml:"VideoTagResult,omitempty"` SmartCover *NodeSmartCover `xml:"SmartCover,omitempty"` QualityEstimate *QualityEstimate `xml:"QualityEstimate,omitempty"` TtsTpl *TtsTpl `xml:"TtsTpl,omitempty"` TtsConfig *TtsConfig `xml:"TtsConfig,omitempty"` Translation *Translation `xml:"Translation,omitempty"` WordsGeneralize *WordsGeneralize `xml:"WordsGeneralize,omitempty"` WordsGeneralizeResult *WordsGeneralizeResult `xml:"WordsGeneralizeResult,omitempty"` NoiseReduction *NoiseReduction `xml:"NoiseReduction,omitempty"` DnaConfig *DnaConfig `xml:"DnaConfig,omitempty"` DnaResult *DnaResult `xml:"DnaResult,omitempty"` VocalScore *VocalScore `xml:"VocalScore,omitempty"` VocalScoreResult *VocalScoreResult `xml:"VocalScoreResult,omitempty"` ImageInspect *ImageInspect `xml:"ImageInspect,omitempty"` ImageInspectResult *ImageInspectResult `xml:"ImageInspectResult,omitempty"` } // InventoryTriggerJob TODO type InventoryTriggerJob struct { Name string `xml:"Name,omitempty"` Input *InventoryTriggerJobInput `xml:"Input,omitempty"` Operation *InventoryTriggerJobOperation `xml:"Operation,omitempty"` } // CreateInventoryTriggerJobOptions TODO type CreateInventoryTriggerJobOptions struct { XMLName xml.Name `xml:"Request"` Name string `xml:"Name,omitempty"` Type string `xml:"Type,omitempty"` Input *InventoryTriggerJobInput `xml:"Input,omitempty"` Operation *InventoryTriggerJobOperation `xml:"Operation,omitempty"` } // InventoryTriggerJobDetail TODO type InventoryTriggerJobDetail struct { Code string `xml:"Code,omitempty"` Message string `xml:"Message,omitempty"` JobId string `xml:"JobId,omitempty"` Tag string `xml:"Tag,omitempty"` Progress string `xml:"Progress,omitempty"` State string `xml:"State,omitempty"` CreationTime string `xml:"CreationTime,omitempty"` StartTime string `xml:"StartTime,omitempty"` EndTime string `xml:"EndTime,omitempty"` QueueId string `xml:"QueueId,omitempty"` Input *InventoryTriggerJobInput `xml:"Input,omitempty"` Operation *InventoryTriggerJobOperation `xml:"Operation,omitempty"` } // CreateInventoryTriggerJobResult TODO type CreateInventoryTriggerJobResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` JobsDetail *InventoryTriggerJobDetail `xml:"JobsDetail,omitempty"` } // CreateInventoryTriggerJob TODO func (s *CIService) CreateInventoryTriggerJob(ctx context.Context, opt *CreateInventoryTriggerJobOptions) (*CreateInventoryTriggerJobResult, *Response, error) { var res CreateInventoryTriggerJobResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/inventorytriggerjob", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeInventoryTriggerJobResult TODO type DescribeInventoryTriggerJobResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` JobsDetail *InventoryTriggerJobDetail `xml:"JobsDetail,omitempty"` NonExistJobId string `xml:"NonExistJobId,omitempty"` } // DescribeInventoryTriggerJob 查询指定存量触发工作流的任务 func (s *CIService) DescribeInventoryTriggerJob(ctx context.Context, jobId string) (*DescribeInventoryTriggerJobResult, *Response, error) { var res DescribeInventoryTriggerJobResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/inventorytriggerjob/" + jobId, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeInventoryTriggerJobsOptions TODO type DescribeInventoryTriggerJobsOptions struct { NextToken string `url:"nextToken,omitempty"` Size string `url:"size,omitempty"` Type string `url:"type,omitempty"` OrderByTime string `url:"orderByTime,omitempty"` States string `url:"states,omitempty"` StartCreationTime string `url:"startCreationTime,omitempty"` EndCreationTime string `url:"endCreationTime,omitempty"` WorkflowId string `url:"workflowId,omitempty"` JobId string `url:"jobId,omitempty"` Name string `url:"name,omitempty"` } // DescribeInventoryTriggerJobsResult TODO type DescribeInventoryTriggerJobsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` JobsDetail *InventoryTriggerJobDetail `xml:"JobsDetail,omitempty"` NextToken string `xml:"NextToken,omitempty"` } // DescribeInventoryTriggerJobs 查询存量触发工作流的任务 func (s *CIService) DescribeInventoryTriggerJobs(ctx context.Context, opt *DescribeInventoryTriggerJobsOptions) (*DescribeInventoryTriggerJobsResult, *Response, error) { var res DescribeInventoryTriggerJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/inventorytriggerjob", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CancelInventoryTriggerJob TODO func (s *CIService) CancelInventoryTriggerJob(ctx context.Context, jobId string) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/inventorytriggerjob/" + jobId, method: http.MethodPut, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // CreateImageSearchBucketOptions 开通以图搜图选项 type CreateImageSearchBucketOptions struct { XMLName xml.Name `xml:"Request"` MaxCapacity string `xml:"MaxCapacity,omitempty"` MaxQps string `xml:"MaxQps,omitempty"` } // CreateImageSearchBucket 开通以图搜图 func (s *CIService) CreateImageSearchBucket(ctx context.Context, opt *CreateImageSearchBucketOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/ImageSearchBucket", body: opt, method: http.MethodPost, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // AddImageOptions 添加图库图片选项 type AddImageOptions struct { XMLName xml.Name `xml:"Request"` EntityId string `xml:"EntityId,omitempty"` CustomContent string `xml:"CustomContent,omitempty"` Tags string `xml:"Tags,omitempty"` } // AddImage 添加图库图片 func (s *CIService) AddImage(ctx context.Context, name string, opt *AddImageOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: "/" + encodeURIComponent(name) + "?ci-process=ImageSearch&action=AddImage", body: opt, method: http.MethodPost, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // ImageSearchOptions 图片搜索接口选项 type ImageSearchOptions struct { MatchThreshold int `url:"MatchThreshold,omitempty"` Offset int `url:"Offset,omitempty"` Limit int `url:"Limit,omitempty"` Filter string `url:"Filter,omitempty"` } // ImageSearchResult 图片搜索接口结果 type ImageSearchResult struct { XMLName xml.Name `xml:"Response"` Count int `xml:"Count"` RequestId string `xml:"RequestId"` ImageInfos []*struct { EntityId string `xml:"EntityId"` CustomContent string `xml:"CustomContent"` Tags string `xml:"Tags"` PicName string `xml:"PicName"` Score int `xml:"Score"` } `xml:"ImageInfos,omitempty"` } // ImageSearch 图片搜索接口 func (s *CIService) ImageSearch(ctx context.Context, name string, opt *ImageSearchOptions) (*ImageSearchResult, *Response, error) { var res ImageSearchResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: "/" + encodeURIComponent(name) + "?ci-process=ImageSearch&action=SearchImage", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DelImageOptions 删除图库图片选项 type DelImageOptions struct { XMLName xml.Name `xml:"Request"` EntityId string `xml:"EntityId,omitempty"` } // DelImage 删除图库图片 func (s *CIService) DelImage(ctx context.Context, name string, opt *DelImageOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: "/" + encodeURIComponent(name) + "?ci-process=ImageSearch&action=DeleteImage", body: opt, method: http.MethodPost, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // CreateJobsOptions 提交任务的公用结构体 type CreateJobsOptions CreateMediaJobsOptions // CreateJobsOptions 任务结果的公用结构体 type CreateJobsResult CreateMediaJobsResult // CreateJobsOptions 提交任务的公用方法 func (s *CIService) CreateJob(ctx context.Context, opt *CreateJobsOptions) (*CreateJobsResult, *Response, error) { var res CreateJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs", method: http.MethodPost, body: opt, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // CreateJobsOptions 提交任务的公用方法 func (s *CIService) CancelJob(ctx context.Context, jobId string) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs/" + jobId + "?cancel", method: http.MethodPut, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // DescribeJobsOptions 查询任务的公用选项 type DescribeJobsOptions DescribeMediaJobsOptions // DescribeJobsResult 查询任务结果的公用结构体 type DescribeJobsResult DescribeMediaJobsResult // DescribeJobs 查询任务列表的公用方法 func (s *CIService) DescribeJobs(ctx context.Context, opt *DescribeJobsOptions) (*DescribeJobsResult, *Response, error) { var res DescribeJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeJobs 查询指定任务的公用方法 func (s *CIService) DescribeJob(ctx context.Context, jobid string) (*DescribeJobsResult, *Response, error) { var res DescribeJobsResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/jobs/" + jobid, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // JobsNotifyBody TODO type JobsNotifyBody struct { XMLName xml.Name `xml:"Response"` EventName string `xml:"EventName"` JobsDetail []MediaProcessJobDetail `xml:"JobsDetail,omitempty"` } // ModifyM3U8TokenOptions TODO type ModifyM3U8TokenOptions struct { Token string `url:"token"` } // ModifyM3U8Token TODO func (s *CIService) ModifyM3U8Token(ctx context.Context, name string, opt *ModifyM3U8TokenOptions, id ...string) (*Response, error) { var u string if len(id) == 1 { u = fmt.Sprintf("/%s?versionId=%s&ci-process=modifym3u8token", encodeURIComponent(name), id[0]) } else if len(id) == 0 { u = fmt.Sprintf("/%s?ci-process=modifym3u8token", encodeURIComponent(name)) } else { return nil, fmt.Errorf("wrong params") } sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: u, method: http.MethodGet, optQuery: opt, disableCloseBody: true, } resp, err := s.client.send(ctx, &sendOpt) return resp, err } // DescribeJobsOptions 查询模板的公用选项 type DescribeTemplateOptions DescribeMediaTemplateOptions // DescribeJobsResult 查询模板结果的公用结构体 type DescribeTemplateResult DescribeMediaTemplateResult // DescribeTemplate 搜索模板的公用方法 func (s *CIService) DescribeTemplate(ctx context.Context, opt *DescribeTemplateOptions) (*DescribeTemplateResult, *Response, error) { var res DescribeTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // DescribeJobsResult 删除模板结果的公用结构体 type DeleteTemplateResult DeleteMediaTemplateResult // DeleteTemplate 删除模板的公用方法 func (s *CIService) DeleteTemplate(ctx context.Context, tempalteId string) (*DeleteTemplateResult, *Response, error) { var res DeleteTemplateResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/template/" + tempalteId, method: http.MethodDelete, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // FillConcat 填充拼接 type FillConcat struct { Format string `xml:"Format,omitempty"` FillInput []FillConcatInput `xml:"FillInput,omitempty"` } // FillConcatInput 填充拼接输入 type FillConcatInput struct { Url string `xml:"Url,omitempty"` FillTime string `xml:"FillTime,omitempty"` } // VideoSynthesis 视频合成 type VideoSynthesis struct { KeepAudioTrack string `xml:"KeepAudioTrack,omitempty"` SpliceInfo []VideoSynthesisSpliceInfo `xml:"SpliceInfo,omitempty"` } // VideoSynthesisSpliceInfo 视频合成输入 type VideoSynthesisSpliceInfo struct { Url string `xml:"Url,omitempty"` X string `xml:"X,omitempty"` Y string `xml:"Y,omitempty"` Width string `xml:"Width,omitempty"` Height string `xml:"Height,omitempty"` } // DnaConfig DNA任务配置 type DnaConfig struct { RuleType string `xml:"RuleType,omitempty"` DnaDbId string `xml:"DnaDbId,omitempty"` VideoId string `xml:"VideoId,omitempty"` } // DnaResult DNA任务结果 type DnaResult struct { VideoId string `xml:"VideoId,omitempty"` Duration int `xml:"Duration,omitempty"` Detection *DnaResultDetection `xml:"Detection,omitempty"` } // DnaResultDetection DNA任务结果 type DnaResultDetection struct { VideoId string `xml:"VideoId,omitempty"` Similar int `xml:"Similar,omitempty"` SimilarDuration int `xml:"SimilarDuration,omitempty"` Duration int `xml:"Duration,omitempty"` MatchDetail []DnaResultMatchDetail `xml:"MatchDetail,omitempty"` Audio DnaResultAudio `xml:"Audio,omitempty"` } // DnaResultDetection DNA任务结果 type DnaResultMatchDetail struct { MatchStartTime int `xml:"MatchStartTime,omitempty"` MatchEndTime int `xml:"MatchEndTime,omitempty"` SrcStartTime int `xml:"SrcStartTime,omitempty"` SrcEndTime int `xml:"SrcEndTime,omitempty"` } // DnaResultAudio DNA任务结果 type DnaResultAudio struct { Similar int `xml:"Similar,omitempty"` } // GetDnaDbOptions 查询 DNA 库列表参数 type GetDnaDbOptions struct { Ids string `url:"ids,omitempty"` PageNumber string `url:"pageNumber,omitempty"` PageSize string `url:"pageSize,omitempty"` } // GetDnaDbResult 查询 DNA 库列表结果 type GetDnaDbResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` DNADbConfig []DNADbConfig `xml:"DNADbConfig,omitempty"` NonExistIDs []string `xml:"NonExistIDs,omitempty"` } // DNADbConfig DNA 库详情 type DNADbConfig struct { BucketId string `xml:"BucketId,omitempty"` Region string `xml:"Region,omitempty"` DNADbId string `xml:"DNADbId,omitempty"` DNADbName string `xml:"DNADbName,omitempty"` Capacity int `xml:"Capacity,omitempty"` Description string `xml:"Description,omitempty"` UpdateTime string `xml:"UpdateTime,omitempty"` CreateTime string `xml:"CreateTime,omitempty"` } // GetDnaDb 查询 DNA 库列表 func (s *CIService) GetDnaDb(ctx context.Context, opt *GetDnaDbOptions) (*GetDnaDbResult, *Response, error) { var res GetDnaDbResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/dnadb", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // GetDnaDbFilesOptions 获取 DNA 库中文件列表参数 type GetDnaDbFilesOptions struct { object string `url:"object,omitempty"` DnaDbId string `url:"dnaDbId,omitempty"` PageNumber string `url:"pageNumber,omitempty"` PageSize string `url:"pageSize,omitempty"` } // GetDnaDbFilesResult 查询 DNA 库列表结果 type GetDnaDbFilesResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` TotalCount int `xml:"TotalCount,omitempty"` PageNumber int `xml:"PageNumber,omitempty"` PageSize int `xml:"PageSize,omitempty"` DNADbFiles []DNADbFiles `xml:"DNADbFiles,omitempty"` } // DNADbFiles DNA 文件详情 type DNADbFiles struct { BucketId string `xml:"BucketId,omitempty"` Region string `xml:"Region,omitempty"` DNADbId string `xml:"DNADbId,omitempty"` VideoId string `xml:"VideoId,omitempty"` Object int `xml:"Object,omitempty"` ETag string `xml:"ETag,omitempty"` UpdateTime string `xml:"UpdateTime,omitempty"` CreateTime string `xml:"CreateTime,omitempty"` } // GetDnaDb 查询 DNA 库列表 func (s *CIService) GetDnaDbFiles(ctx context.Context, opt *GetDnaDbFilesOptions) (*GetDnaDbFilesResult, *Response, error) { var res GetDnaDbFilesResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, uri: "/dnadb_files", optQuery: opt, method: http.MethodGet, result: &res, } resp, err := s.client.send(ctx, &sendOpt) return &res, resp, err } // VocalScore 音乐评分 type VocalScore struct { StandardObject string `xml:"StandardObject,omitempty"` } // VocalScore 音乐评分结果 type VocalScoreResult struct { PitchScore *VocalScoreResultPitchScore `xml:"PitchScore,omitempty"` RhythemScore *VocalScoreResultRhythemScore `xml:"RhythemScore,omitempty"` } type VocalScoreResultPitchScore struct { TotalScore float64 `xml:"TotalScore,omitempty"` SentenceScores []VocalScoreResultSentenceScores `xml:"SentenceScores,omitempty"` } type VocalScoreResultSentenceScores struct { StartTime float64 `xml:"StartTime,omitempty"` EndTime float64 `xml:"EndTime,omitempty"` Score float64 `xml:"Score,omitempty"` } type VocalScoreResultRhythemScore struct { TotalScore float64 `xml:"TotalScore,omitempty"` SentenceScores []VocalScoreResultSentenceScores `xml:"SentenceScores,omitempty"` } // ImageInspect 黑产检测 type ImageInspect struct { AutoProcess string `xml:"AutoProcess,omitempty"` ProcessType string `xml:"ProcessType,omitempty"` } // ImageInspectResult 黑产检测结果 type ImageInspectResult struct { State string `xml:"State,omitempty"` Code string `xml:"Code,omitempty"` Message string `xml:"Message,omitempty"` InputObjectName string `xml:"InputObjectName,omitempty"` InputObjectUrl string `xml:"InputObjectUrl,omitempty"` ProcessResult *ImageInspectProcessResult `xml:"ProcessResult,omitempty"` } // ImageInspectProcessResult 黑产检测结果 type ImageInspectProcessResult struct { PicSize int `xml:"PicSize,omitempty"` PicType string `xml:"PicType,omitempty"` Suspicious string `xml:"Suspicious,omitempty"` SuspiciousBeginByte int `xml:"SuspiciousBeginByte,omitempty"` SuspiciousEndByte int `xml:"SuspiciousEndByte,omitempty"` SuspiciousSize int `xml:"SuspiciousSize,omitempty"` SuspiciousType string `xml:"SuspiciousType,omitempty"` AutoProcessResult *ImageInspectAutoProcessResult `xml:"AutoProcessResult,omitempty"` } // ImageInspectResult 黑产检测结果 type ImageInspectAutoProcessResult struct { Code string `xml:"Code,omitempty"` Message string `xml:"Message,omitempty"` }