1// Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//    http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package v20201229
16
17import (
18    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
19    tchttp "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http"
20    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
21)
22
23const APIVersion = "2020-12-29"
24
25type Client struct {
26    common.Client
27}
28
29// Deprecated
30func NewClientWithSecretId(secretId, secretKey, region string) (client *Client, err error) {
31    cpf := profile.NewClientProfile()
32    client = &Client{}
33    client.Init(region).WithSecretId(secretId, secretKey).WithProfile(cpf)
34    return
35}
36
37func NewClient(credential common.CredentialIface, region string, clientProfile *profile.ClientProfile) (client *Client, err error) {
38    client = &Client{}
39    client.Init(region).
40        WithCredential(credential).
41        WithProfile(clientProfile)
42    return
43}
44
45
46func NewCancelTaskRequest() (request *CancelTaskRequest) {
47    request = &CancelTaskRequest{
48        BaseRequest: &tchttp.BaseRequest{},
49    }
50    request.Init().WithApiInfo("vm", APIVersion, "CancelTask")
51    return
52}
53
54func NewCancelTaskResponse() (response *CancelTaskResponse) {
55    response = &CancelTaskResponse{
56        BaseResponse: &tchttp.BaseResponse{},
57    }
58    return
59}
60
61// CancelTask
62// 可使用该接口取消审核任务,成功取消后,该接口返回已取消任务的TaskId。<br>
63//
64//
65//
66// 默认接口请求频率限制:**20次/秒**。
67//
68// 可能返回的错误码:
69//  DRYRUNOPERATION = "DryRunOperation"
70//  FAILEDOPERATION = "FailedOperation"
71//  INVALIDPARAMETER = "InvalidParameter"
72//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
73//  LIMITEXCEEDED = "LimitExceeded"
74//  MISSINGPARAMETER = "MissingParameter"
75//  OPERATIONDENIED = "OperationDenied"
76//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
77//  RESOURCEINUSE = "ResourceInUse"
78//  RESOURCEINSUFFICIENT = "ResourceInsufficient"
79//  RESOURCENOTFOUND = "ResourceNotFound"
80//  RESOURCEUNAVAILABLE = "ResourceUnavailable"
81//  RESOURCESSOLDOUT = "ResourcesSoldOut"
82//  UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
83//  UNKNOWNPARAMETER = "UnknownParameter"
84//  UNSUPPORTEDOPERATION = "UnsupportedOperation"
85func (c *Client) CancelTask(request *CancelTaskRequest) (response *CancelTaskResponse, err error) {
86    if request == nil {
87        request = NewCancelTaskRequest()
88    }
89    response = NewCancelTaskResponse()
90    err = c.Send(request, response)
91    return
92}
93
94func NewCreateVideoModerationTaskRequest() (request *CreateVideoModerationTaskRequest) {
95    request = &CreateVideoModerationTaskRequest{
96        BaseRequest: &tchttp.BaseRequest{},
97    }
98    request.Init().WithApiInfo("vm", APIVersion, "CreateVideoModerationTask")
99    return
100}
101
102func NewCreateVideoModerationTaskResponse() (response *CreateVideoModerationTaskResponse) {
103    response = &CreateVideoModerationTaskResponse{
104        BaseResponse: &tchttp.BaseResponse{},
105    }
106    return
107}
108
109// CreateVideoModerationTask
110// 本接口(Video Moderation System,VM)用于提交视频文件或视频流进行智能审核任务。使用前请您使用腾讯云主账号登录控制台[开通视频内容安全服务](https://console.cloud.tencent.com/cms/video/package)并调整好对应的业务配置。<br>
111//
112// ### 功能使用说明:
113//
114//
115//
116// - 前往“[内容安全控制台-视频内容安全](https://console.cloud.tencent.com/cms/video/package)”开启使用视频内容安全服务,首次开通服务的用户可免费领用试用套餐包,包含600分钟的处理量(换算1s每帧截图,赠送**36000张图**、**600分钟的音频**处理量),有效期为1个月。
117//
118//
119//
120// - 该接口为收费接口,计费方式敬请参见[腾讯云视频内容安全定价](https://cloud.tencent.com/product/vm/pricing)
121//
122//
123//
124// - 默认接口请求频率限制:**20次/秒**,对于异步审核任务(点播视频),超出频率限制的请求会自动排入待审核队列,对于同步审核任务(直播视频),超出频率限制将会报错。
125//
126// - 默认并发审核路数限制:10路,异步审核任务(点播视频)数量超过并发审核路数时,将会进入排队;同步审核任务(直播视频)超过并发审核路数,接口会返回错误。
127//
128//
129//
130//
131//
132// ### 接口功能说明:
133//
134//
135//
136// - 支持对视频文件或视频流进行自动检测,从 OCR文本识别、物体检测(实体、广告台标、二维码等)、图像识别及音频审核四个维度,通过深度学习技术识别视频中的违规内容;
137//
138// - 支持设置回调地址 Callback 获取检测结果,或通过接口(查看任务详情)主动轮询获取检测结果详情;对于正常审核中的视频任务,如含有违规内容,则截帧图片最长会在**3s**内回调,音频片段会在用户配置的**切片时长 + 2s**内回调;对于在队列中的待审核任务,回调时间为正常审核回调时间+等待时间;
139//
140// - 支持通过接口(查看审核任务列表)查询任务队列,用户可根据多种业务信息(业务类型、审核结果、任务状态等)筛选审核任务列表;
141//
142// - 支持识别多种违规场景,包括:低俗、谩骂、色情、广告等场景;
143//
144// - 支持根据不同的业务场景配置自定义的审核策略;
145//
146// - 支持用户自定义配置黑白词库及图片库,打击自定义违规内容(目前仅支持黑名单配置);
147//
148// - 支持用户自定义配置审核任务优先级,当有多个任务排队时,可根据用户配置自动调整任务优先级;
149//
150// - 支持批量提交检测任务,**最多可同时创建10个任务**;
151//
152//
153//
154// ### 视频文件调用说明:
155//
156//
157//
158// - 视频文件大小支持:**文件 < 3GB**
159//
160// - 视频文件分辨率支持:**最佳分辨率为1920x1080 (1080p)**,如果视频文件小于300MB,则分辨率可以大于1080p,更大视频可以调用[云转码服务](https://cloud.tencent.com/product/mps/details)转码后再送审;
161//
162// - 视频文件支持格式:flv、mkv 、mp4 、rmvb 、avi 、wmv、3gp、ts、mov、rm、mpeg、wmf等。
163//
164// - 视频文件支持的访问方式:链接地址(支持HTTP/HTTPS)、腾讯云COS存储;
165//
166// - 若传入视频文件的访问链接,则需要注意视频**头文件的读取时间限制为3秒**,为保障被检测视频的稳定性和可靠性,建议您使用腾讯云COS存储或者CDN缓存等;
167//
168// - 支持用户配置是否需要开启音频审核,若不开启则将仅对视频文件图像内容进行审核。
169//
170//
171//
172// ### 视频流调用说明:
173//
174//
175//
176// - 视频流时长支持:**5小时以内**
177//
178// - 视频流分辨率支持:支持**1920x1080 (1080p)**,更高分辨率视频可以调用[直播云转码服务](https://cloud.tencent.com/document/product/267/39889)转码后再送审;
179//
180// - 视频流支持格式:rmtp,flv 等主流视频流编码格式。
181//
182// - 视频文件支持的传输协议:HTTP/HTTPS/RTMP
183//
184// - 支持用户配置是否需要开启音频审核,若不开启则将仅对视频流图像内容进行审核。
185//
186// 可能返回的错误码:
187//  DRYRUNOPERATION = "DryRunOperation"
188//  FAILEDOPERATION = "FailedOperation"
189//  INTERNALERROR = "InternalError"
190//  INVALIDPARAMETER = "InvalidParameter"
191//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
192//  LIMITEXCEEDED = "LimitExceeded"
193//  MISSINGPARAMETER = "MissingParameter"
194//  OPERATIONDENIED = "OperationDenied"
195//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
196//  RESOURCEINUSE = "ResourceInUse"
197//  RESOURCEINSUFFICIENT = "ResourceInsufficient"
198//  RESOURCENOTFOUND = "ResourceNotFound"
199//  RESOURCEUNAVAILABLE = "ResourceUnavailable"
200//  RESOURCESSOLDOUT = "ResourcesSoldOut"
201//  UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
202//  UNKNOWNPARAMETER = "UnknownParameter"
203//  UNSUPPORTEDOPERATION = "UnsupportedOperation"
204func (c *Client) CreateVideoModerationTask(request *CreateVideoModerationTaskRequest) (response *CreateVideoModerationTaskResponse, err error) {
205    if request == nil {
206        request = NewCreateVideoModerationTaskRequest()
207    }
208    response = NewCreateVideoModerationTaskResponse()
209    err = c.Send(request, response)
210    return
211}
212
213func NewDescribeTaskDetailRequest() (request *DescribeTaskDetailRequest) {
214    request = &DescribeTaskDetailRequest{
215        BaseRequest: &tchttp.BaseRequest{},
216    }
217    request.Init().WithApiInfo("vm", APIVersion, "DescribeTaskDetail")
218    return
219}
220
221func NewDescribeTaskDetailResponse() (response *DescribeTaskDetailResponse) {
222    response = &DescribeTaskDetailResponse{
223        BaseResponse: &tchttp.BaseResponse{},
224    }
225    return
226}
227
228// DescribeTaskDetail
229// 通过查看任务详情 DescribeTaskDetail 接口,可主动轮询获取检测结果详情。<br>
230//
231//
232//
233// 默认接口请求频率限制:**200次/秒**。
234//
235// 可能返回的错误码:
236//  DRYRUNOPERATION = "DryRunOperation"
237//  FAILEDOPERATION = "FailedOperation"
238//  INTERNALERROR = "InternalError"
239//  INVALIDPARAMETER = "InvalidParameter"
240//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
241//  LIMITEXCEEDED = "LimitExceeded"
242//  MISSINGPARAMETER = "MissingParameter"
243//  OPERATIONDENIED = "OperationDenied"
244//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
245//  RESOURCEINUSE = "ResourceInUse"
246//  RESOURCEINSUFFICIENT = "ResourceInsufficient"
247//  RESOURCENOTFOUND = "ResourceNotFound"
248//  RESOURCEUNAVAILABLE = "ResourceUnavailable"
249//  RESOURCESSOLDOUT = "ResourcesSoldOut"
250//  UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
251//  UNKNOWNPARAMETER = "UnknownParameter"
252//  UNSUPPORTEDOPERATION = "UnsupportedOperation"
253func (c *Client) DescribeTaskDetail(request *DescribeTaskDetailRequest) (response *DescribeTaskDetailResponse, err error) {
254    if request == nil {
255        request = NewDescribeTaskDetailRequest()
256    }
257    response = NewDescribeTaskDetailResponse()
258    err = c.Send(request, response)
259    return
260}
261
262func NewDescribeTasksRequest() (request *DescribeTasksRequest) {
263    request = &DescribeTasksRequest{
264        BaseRequest: &tchttp.BaseRequest{},
265    }
266    request.Init().WithApiInfo("vm", APIVersion, "DescribeTasks")
267    return
268}
269
270func NewDescribeTasksResponse() (response *DescribeTasksResponse) {
271    response = &DescribeTasksResponse{
272        BaseResponse: &tchttp.BaseResponse{},
273    }
274    return
275}
276
277// DescribeTasks
278// 通过查看审核任务列表接口,可查询任务队列;您可根据多种业务信息(业务类型、审核结果、任务状态等)筛选审核任务列表。<br>
279//
280//
281//
282// 默认接口请求频率限制:**20次/秒**。
283//
284// 可能返回的错误码:
285//  AUTHFAILURE = "AuthFailure"
286//  DRYRUNOPERATION = "DryRunOperation"
287//  FAILEDOPERATION = "FailedOperation"
288//  INTERNALERROR = "InternalError"
289//  INVALIDPARAMETER = "InvalidParameter"
290//  INVALIDPARAMETERVALUE = "InvalidParameterValue"
291//  LIMITEXCEEDED = "LimitExceeded"
292//  MISSINGPARAMETER = "MissingParameter"
293//  OPERATIONDENIED = "OperationDenied"
294//  REQUESTLIMITEXCEEDED = "RequestLimitExceeded"
295//  RESOURCEINUSE = "ResourceInUse"
296//  RESOURCEINSUFFICIENT = "ResourceInsufficient"
297//  RESOURCENOTFOUND = "ResourceNotFound"
298//  RESOURCEUNAVAILABLE = "ResourceUnavailable"
299//  RESOURCESSOLDOUT = "ResourcesSoldOut"
300//  UNAUTHORIZEDOPERATION = "UnauthorizedOperation"
301//  UNKNOWNPARAMETER = "UnknownParameter"
302//  UNSUPPORTEDOPERATION = "UnsupportedOperation"
303func (c *Client) DescribeTasks(request *DescribeTasksRequest) (response *DescribeTasksResponse, err error) {
304    if request == nil {
305        request = NewDescribeTasksRequest()
306    }
307    response = NewDescribeTasksResponse()
308    err = c.Send(request, response)
309    return
310}
311