Media asset moderation

更新时间:
复制 MD 格式

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