OSS内容检测

本文介绍了如何使用Java SDK检测OSS违规的内容。

前提条件

  • 安装Java依赖。关于安装Java依赖的具体操作,请参见安装Java依赖

    说明

    请一定按照安装Java依赖页面中的版本安装,否则会导致调用失败。

  • 如果使用本地文件或者二进制文件检测,请下载并在项目工程中引入Extension.Uploader工具类

获取OSS违规检测数据

您可以参考以下代码示例获取OSS违规检测数据:

说明

以下代码仅为简单示例,具体的接口参数请参考OSS违规检测API

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.green.model.v20170823.DescribeOssResultItemsRequest;
import com.aliyuncs.green.model.v20170823.DescribeOssResultItemsResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class Main {

    public static void main(String[] args) {
        /**
         * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 
         * 常见获取环境变量方式:
         * 方式一:
         *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二:
         *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-shanghai",
                "建议从环境变量中获取RAM用户AccessKey ID",
                "建议从环境变量中获取RAM用户AccessKey Secret");
        DefaultProfile.addEndpoint("cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
        IAcsClient client = new DefaultAcsClient(profile);

        DescribeOssResultItemsRequest describeKeywordLibRequest = new DescribeOssResultItemsRequest();
        describeKeywordLibRequest.setResourceType("VIDEO");
        describeKeywordLibRequest.setScene("porn");
        describeKeywordLibRequest.setStock(false);
        describeKeywordLibRequest.setStartDate("2018-12-07 00:00:00 +0800");
        describeKeywordLibRequest.setEndDate("2018-12-13 15:00:53 +0800");
        try {
            DescribeOssResultItemsResponse describeOssResultItemsResponse = client.getAcsResponse(describeKeywordLibRequest);
            // 结果总数。
            describeOssResultItemsResponse.getTotalCount();
            // 当前页码。
            describeOssResultItemsResponse.getCurrentPage();
            // 分页大小。
            describeOssResultItemsResponse.getPageSize();
            // 扫描结果列表。
            for (DescribeOssResultItemsResponse.ScanResult scanResult : describeOssResultItemsResponse.getScanResultList()) {
                // 资源所在的OSS Bucket。
                scanResult.getBucket();
                // 数据ID。
                scanResult.getDataId();
                // 资源的处理状态
                scanResult.getHandleStatus();
                // 扫描结果的唯一标识。
                scanResult.getId();
                // 原始文件链接地址。
                scanResult.getNewUrl();
                // OSS Object名称。
                scanResult.getObject();
                // 请求时间。
                scanResult.getRequestTime();
                // 资源的状态
                scanResult.getResourceStatus();
                // 扫描完成时间。
                scanResult.getScanFinishedTime();
                scanResult.getScore();
                // 建议您执行的后续操作。
                scanResult.getSuggestion();
                // 任务ID。
                scanResult.getTaskId();
                // 缩略图链接。
                scanResult.getThumbnail();
                // (仅使用视频对象)存在风险的问题帧。
                for (DescribeOssResultItemsResponse.ScanResult.FrameResult frameResult : scanResult.getFrameResults()) {
                    // 该帧的位置,即距离视频开头的偏移量,单位为秒。
                    frameResult.getOffset();
                    // 该帧的缩略图链接。
                    frameResult.getThumbnail();
                    // 该帧的链接。
                    frameResult.getUrl();
                }
            }
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

}

对OSS的审核结果进行标记

该接口能够对OSS的扫描结果进行标记和操作。如果需要对已检测出结果的内容执行删除、标记为正常并忽略,或者解除冻结等操作,您可以调用本接口。

说明

以下代码仅为简单示例,具体的接口参数请参考OSS违规检测API

import com.alibaba.fastjson.JSON;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.green.model.v20170823.MarkOssResultRequest;
import com.aliyuncs.green.model.v20170823.MarkOssResultResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        /**
         * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 
         * 常见获取环境变量方式:
         * 方式一:
         *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二:
         *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-shanghai",
                "建议从环境变量中获取RAM用户AccessKey ID",
                "建议从环境变量中获取RAM用户AccessKey Secret");
        DefaultProfile.addEndpoint("cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
        IAcsClient client = new DefaultAcsClient(profile);

        MarkOssResultRequest markOssResultRequest = new MarkOssResultRequest();
        markOssResultRequest.setResourceType("VIDEO");
        markOssResultRequest.setScene("terrorism ");
        markOssResultRequest.setStock(false);
        markOssResultRequest.setIds(JSON.toJSONString(Arrays.asList(24930001L)));
        markOssResultRequest.setOperation("ignore");
        try {
            MarkOssResultResponse markOssResultResponse = client.getAcsResponse(markOssResultRequest);
            // 请求ID,无异常则表示创建成功。
            String requestId = markOssResultResponse.getRequestId();
            System.out.println("mark success." + JSON.toJSONString(markOssResultResponse));
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

}

以文件形式导出OSS违规检测结果

您可以参考以下代码示例通过文件形式导出OSS违规检测结果:

说明

以下代码仅为简单示例,具体的接口参数请参考OSS违规检测API

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.green.model.v20170823.ExportOssResultRequest;
import com.aliyuncs.green.model.v20170823.ExportOssResultResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class Main {

    public static void main(String[] args) {
        /**
         * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 
         * 常见获取环境变量方式:
         * 方式一:
         *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二:
         *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-shanghai",
                "建议从环境变量中获取RAM用户AccessKey ID",
                "建议从环境变量中获取RAM用户AccessKey Secret");
        DefaultProfile.addEndpoint("cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
        IAcsClient client = new DefaultAcsClient(profile);

        ExportOssResultRequest exportOssResultRequest = new ExportOssResultRequest();
        exportOssResultRequest.setResourceType("VIDEO");
        exportOssResultRequest.setScene("porn");
        exportOssResultRequest.setStock(false);
        exportOssResultRequest.setStartDate("2018-12-07 00:00:00 +0800");
        exportOssResultRequest.setEndDate("2018-12-13 15:00:53 +0800");
        try {
            ExportOssResultResponse exportOssResultResponse = client.getAcsResponse(exportOssResultRequest);
            // 返回文件的链接地址。
            String fileUrl = exportOssResultResponse.getFileUrl();
            System.out.println("export success. file url:" + fileUrl);
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

}