This topic provides sample code that shows how to use a server-side software development kit (SDK) to call OpenAPI for media asset moderation in Intelligent Media Services.
Sample code
Debug the code online in the Alibaba Cloud OpenAPI Developer Portal.
package main
import (
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
ice "github.com/alibabacloud-go/ice-20201109/v2/client"
"github.com/aliyun/credentials-go/credentials"
"github.com/alibabacloud-go/tea/tea"
)
func main() {
// The AccessKey of an Alibaba Cloud account has access permissions for all APIs. Use a Resource Access Management (RAM) user to call APIs or perform daily O&M.
// This example shows how to save the AccessKey ID and AccessKey secret in environment variables.
credential, _err := credentials.NewCredential(nil)
if _err != nil {
panic(_err)
}
iceClient, _err := ice.NewClient(&openapi.Config{
Credential: credential,
Endpoint: tea.String("ice.cn-shanghai.aliyuncs.com"),
})
// To hard code the AccessKey ID and AccessKey secret, use the following code. Do not save the AccessKey ID and AccessKey secret in your project code. This can cause an AccessKey leak and compromise the security of all resources in your account.
// config := new(openapi.Config)
// config.SetAccessKeyId("<accessKeyId>").
// SetAccessKeySecret("<accessKeySecret>").
// SetRegionId("<regionId>").
// SetEndpoint("<endpoint>")
// iceClient, _err := ice.NewClient(config)
if _err != nil {
panic(_err)
}
// Create a moderation template.
templateName := "sdk_sample_censor_template"
templateType := int32(7)
templateSubType := int32(1)
censorTemplateConfig := "{\"Scene\":[\"porn\",\"terrorism\"],\"Scope\":[\"title\",\"video\",\"audio\",\"cover\"]}"
createCustomTemplateRequest := &ice.CreateCustomTemplateRequest{
Name: &templateName,
Type: &templateType,
Subtype: &templateSubType,
TemplateConfig: &censorTemplateConfig,
}
createCustomTemplateResponse, err := iceClient.CreateCustomTemplate(createCustomTemplateRequest)
fmt.Println(createCustomTemplateResponse, err)
// Submit a media content moderation job.
templateId := createCustomTemplateResponse.Body.CustomTemplate.TemplateId
inputType := "Media"
inputMedia := "3945e42d-1823498****"
output := "oss://testbucket/censor/snapshot-{Count}.jpg"
submitMediaCensorJobRequest := &ice.SubmitMediaCensorJobRequest{
Input: &ice.SubmitMediaCensorJobRequestInput{
Type: &inputType,
Media: &inputMedia,
},
Output: &output,
TemplateId: templateId,
}
submitMediaCensorJobResponse, err := iceClient.SubmitMediaCensorJob(submitMediaCensorJobRequest)
fmt.Println(submitMediaCensorJobResponse, err)
// Query the details of the media content moderation job.
jobId := submitMediaCensorJobResponse.Body.JobId
queryMediaCensorJobDetailRequest := &ice.QueryMediaCensorJobDetailRequest{
JobId: jobId,
}
queryMediaCensorJobDetailResponse, err := iceClient.QueryMediaCensorJobDetail(queryMediaCensorJobDetailRequest)
fmt.Println(queryMediaCensorJobDetailResponse, err)
// Query the list of media content moderation jobs.
queryMediaCensorJobListRequest := &ice.QueryMediaCensorJobListRequest{
JobIds: jobId,
}
queryMediaCensorJobListResponse, err := iceClient.QueryMediaCensorJobList(queryMediaCensorJobListRequest)
fmt.Println(queryMediaCensorJobListResponse, err)
}
Related API operations
该文章对您有帮助吗?