Data Statistics Service

1、查询某一天视频观看日志

描述

通过日志时间查询某一天的视频观看日志
接口地址(仅做说明使用):https://api.polyv.net/v2/data/%s/viewlog

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、从播放行为产生到数据可查询的间隔时间为1~2小时。但是每条观看记录所消耗的流量计算(flowSize字段)依赖于CDN日志,为了保证数据完整性,流量数据需要间隔一个自然日才会生成。例如1号产生的流量消耗,会在2

号晚上汇总计算,在3号才可查询到流量数据。

3、注意视频ID和分类ID为空时,查询账号当天所有视频日志;当视频ID为空、分类ID不为空时,查询对应分类ID下的日志;当视频ID不为空时查询对应视频ID的日志

单元测试

	@Test
	public void testQueryViewLogByDay() throws IOException, NoSuchAlgorithmException {
        VodQueryViewLogByDayRequest vodQueryViewLogByDayRequest = new VodQueryViewLogByDayRequest();
        List<VodQueryViewLogByDayResponse> vodQueryViewLogByDayResponseList = null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryViewLogByDayRequest.setDay(super.getDate(year, 2, 4))
                    .setVideoId(super.getTestVideoId())
                    .setCategoryId("1602300731843")
                    .setSessionId(null)
                    .setViewerId(null);
            vodQueryViewLogByDayResponseList = new VodDataStatisticsServiceImpl().queryViewLogByDay(
                    vodQueryViewLogByDayRequest);
            Assert.assertNotNull(vodQueryViewLogByDayResponseList);
            if (vodQueryViewLogByDayResponseList != null) {
                log.debug("测试查询某一天视频观看日志成功,{}", JSON.toJSONString(vodQueryViewLogByDayResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryViewLogByDayResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

day

true

Date

查询某天的日志时间,格式:yyyy-MM-dd

timeStart

false

String

范围查询,需查询日志信息的具体时分秒,格式:HHmmss,例如:000000,timeStart和timeEnd需要搭配使用

timeEnd

false

String

范围查询,需查询日志信息的具体时分秒,格式:HHmmss,例如:235959,timeStart和timeEnd需要搭配使用

videoId

false

String

视频ID【对应api文档的vid字段】

categoryId

false

String

分类ID【对应api文档的cataid字段】

sessionId

false

String

用户自定义ID,自定义值(比如,表示学员信息的学员ID),最长不能超过50个英文字符。

viewerId

false

String

用户自定义ID,当和sessionId同时传递时,会以viewerId为准

param4

false

String

自定义参数

返回对象描述

返回对象是List<VodQueryViewLogByDayResponse>,VodQueryViewLogByDayResponse具体元素内容如下:

参数名类型说明

playId

String

表示此次播放动作的ID

userId

String

用户ID

videoId

String

视频ID

playDuration

Integer

播放时长,单位为秒 (用户观看的总时间 ,例如:18:00开始看一个视频,看到了18:30,这30分钟就是播放时长)

stayDuration

Integer

缓存时长,单位为秒

currentTimes

Integer

播放时间,单位为秒 (用户观看的最后时间,例如:停止观看视频的时候,进度条最后的分钟数为35分钟,播放时间就是35分钟)

duration

Integer

视频总时长,单位为秒

flowSize

Long

流量大小,单位为字节

sessionId

String

用户自定义参数,如学员ID等

param1

String

POLYV系统参数

param2

String

POLYV系统参数

param3

String

POLYV系统参数

param4

String

POLYV系统参数

param5

String

POLYV系统参数

ipAddress

String

IP地址

country

String

国家

province

String

省份

city

String

城市

isp

String

ISP运营商

referer

String

播放视频页面地址

userAgent

String

用户设备

operatingSystem

String

操作系统

browser

String

浏览器

isMobile

String

是否为移动端,Y:是;N:否

currentDay

Date

日志查询日期 (格式为:yyyy-MM-dd)

currentHour

Integer

日志查看时间,单位为小时

viewSource

String

用户观看渠道,取值有:vod_ios_sdk:ios端、vod_android_sdk:安卓端、vod_flash:flash、vod_wechat_mini_program:微信小程序;vod_pc_html5:pc端web、vod_mobile_html5:移动端web、vod_mobile_html5_v2:移动端web v2

createdTime

Date

日志创建时间,格式:yyyy-MM-dd HH:mm

lastModified

Date

日志更新日期,格式:yyyy-MM-dd HH:mm


2、批量查询视频观看日志

描述

通过日志月份批量查询视频观看日志信息
接口地址(仅做说明使用):https://api.polyv.net/v2/viewlog/%s/monthly/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testGetVideoPlayLog() throws IOException, NoSuchAlgorithmException {
        VodGetVideoPlayLogRequest vodGetVideoPlayLogRequest = new VodGetVideoPlayLogRequest();
        VodGetVideoPlayLogResponse vodGetVideoPlayLogResponse = null;
        try {
            int year = new Date().getYear() + 1900;
            vodGetVideoPlayLogRequest.setMonth(super.getDate(year, 2, 1))
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 1))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 31))
                    .setVideoId(super.getTestVideoId())
                    .setCurrentDay(null)
                    .setCurrentPage(1)
                    .setPageSize(10);
            vodGetVideoPlayLogResponse = new VodDataStatisticsServiceImpl().getVideoPlayLog(vodGetVideoPlayLogRequest);
            Assert.assertNotNull(vodGetVideoPlayLogResponse);
            if (vodGetVideoPlayLogResponse != null) {
                log.debug("测试批量查询视频观看日志成功,{}", JSON.toJSONString(vodGetVideoPlayLogResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodGetVideoPlayLogResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

month

true

Date

查询月份,格式为yyyyMM

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

videoId

false

String

所查询视频vid,当vid为空时,查询该用户所有视频的日志【对应api文档的vid字段】

sessionId

false

String

用户自定义ID,自定义值

currentDay

false

Date

月内某一天的数据,格式为yyyy-MM-dd

param4

false

String

自定义参数

currentPage

false

Integer

页数,默认为1【对应api文档的page字段】

pageSize

false

Integer

每页显示的数据条数,默认每页显示20条数据

返回对象描述

参数名类型说明

contents

Array

返回的结果集【详见VideoPlayLog参数描述

pageSize

Integer

每页显示的数据条数,默认每页显示20条数据

currentPage

Integer

当前页【对应api文档的pageNumber字段】

totalItems

Integer

记录总条数

totalPage

Integer

总页数【对应api文档的totalPages字段】

VideoPlayLog参数描述

参数名类型说明

playId

String

表示此次播放动作的ID

userId

String

用户ID

videoId

String

视频ID

playDuration

Integer

播放时长 (用户观看的总时间 ,例如:18:00开始看一个视频,看到了18:30,这30分钟就是播放时长)。单位:秒

stayDuration

Integer

缓存时长。单位:秒

currentTimes

Integer

播放时间 (用户观看的最后时间,例如:停止观看视频的时候,进度条最后的分钟数为35分钟,播放时间就是35分钟)。单位:秒

duration

Integer

视频总时长。单位:秒

flowSize

Long

流量大小,单位:Bytes

sessionId

String

用户自定义参数,如学员ID等 ,该参数做了UrlSafeBase64的加密,需要做解密

param1

String

POLYV系统参数

param2

String

POLYV系统参数

param3

String

POLYV系统参数

param4

String

POLYV系统参数

param5

String

POLYV系统参数

ipAddress

String

IP地址

country

String

国家

province

String

省份

city

String

城市

isp

String

ISP运营商

referer

String

播放视频页面地址

userAgent

String

用户设备

operatingSystem

String

操作系统

browser

String

浏览器

isMobile

String

是否为移动端

currentDay

Date

日志查询日期 (格式为:yyyy-MM-dd)

currentHour

Integer

日志查看时间。单位:小时

viewSource

String

用户观看渠道,取值有:vod_ios_sdk、vod_android_sdk、vod_flash、vod_pc_html5、vod_wechat_mini_program、vod_mobile_html5

createdTime

Date

日志创建时间

lastModified

Date

日志更新日期


3、查询视频播放量统计数据

描述

通过视频id或时间范围查询视频播放量统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/videoview/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、查询视频播放量统计数据,从播放行为产生到数据可查询的间隔时间为1~2小时。

单元测试

	@Test
	public void testQueryVideoPlaybackStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoPlaybackStatisticsRequest vodQueryVideoPlaybackStatisticsRequest =
                new VodQueryVideoPlaybackStatisticsRequest();
        List<VodQueryVideoPlaybackStatisticsResponse> vodQueryVideoPlaybackStatisticsResponseList = null;
        try {
            vodQueryVideoPlaybackStatisticsRequest.setDr("7days").setPeriod("daily");
            vodQueryVideoPlaybackStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryVideoPlaybackStatistics(
                    vodQueryVideoPlaybackStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoPlaybackStatisticsResponseList);
            if (vodQueryVideoPlaybackStatisticsResponseList != null) {
                log.debug("测试查询视频播放量统计数据成功,{}", JSON.toJSONString(vodQueryVideoPlaybackStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoPlaybackStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

false

String

视频videoId,不填vid会查所有视频的播放量统计数据【对应api文档的vid字段】

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

period

false

String

显示周期,具体为以下几个值:daily(按日显示),weekly(按周显示),monthly(按月显示)。默认值为daily:按日显示。period的值受限于dr的值,当dr的值为today,yesterday,this_week,last_week,7days时,period只能为daily,当dr的值为this_month,last_month时,period只能为daily或者weekly

返回对象描述

返回对象是List<VodQueryVideoPlaybackStatisticsResponse>,VodQueryVideoPlaybackStatisticsResponse具体元素内容如下:

参数名类型说明

currentTime

String

当前日期,格式为:yyyy-MM-dd或yyyy-MM

pcVideoView

Integer

pc端播放量

mobileVideoView

Integer

移动端播放量


4、查询播放域名统计数据

描述

通过时间范围查询播放域名统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/domain/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、查询播放域名统计数据

3、从播放行为产生到数据可查询的间隔时间为1~2小时。但是消耗流量(PCFlowSize字段)的计算依赖于CDN日志,为了保证数据完整性,流量数据需要间隔一个自然日才会生成。例如1号产生的流量消耗,会在2

3、号晚上汇总计算,在3号才可查询到流量数据。

单元测试

	@Test
	public void testQueryPlayDomainNameStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryPlayDomainNameStatisticsRequest vodQueryPlayDomainNameStatisticsRequest =
                new VodQueryPlayDomainNameStatisticsRequest();
        List<VodQueryPlayDomainNameStatisticsResponse> vodQueryPlayDomainNameStatisticsResponseList = null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryPlayDomainNameStatisticsRequest.setDr("7days")
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 18))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 24));
            vodQueryPlayDomainNameStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryPlayDomainNameStatistics(
                    vodQueryPlayDomainNameStatisticsRequest);
            Assert.assertNotNull(vodQueryPlayDomainNameStatisticsResponseList);
            if (vodQueryPlayDomainNameStatisticsResponseList != null) {
                log.debug("测试查询播放域名统计数据成功,{}", JSON.toJSONString(vodQueryPlayDomainNameStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryPlayDomainNameStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

返回对象是List<VodQueryPlayDomainNameStatisticsResponse>,VodQueryPlayDomainNameStatisticsResponse具体元素内容如下:

参数名类型说明

domain

String

域名

pcPlayDuration

Integer

PC端播放时长(单位:秒)

pcFlowSize

Long

PC端消耗流量(单位:字节)

pcVideoView

Integer

PC端总播放量

pcUniqueViewer

Integer

PC端唯一观众数

mobilePlayDuration

Integer

移动端播放时长(单位:秒)

mobileVideoView

Integer

移动端播放量

mobileUniqueViewer

Integer

移动端播放者数量


5、查询视频终端环境统计数据

描述

通过时间范围查询视频终端环境统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/device/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、查询视频终端环境统计数据,包括浏览器环境,操作系统环境,终端环境。从播放行为产生到数据可查询的间隔时间为1~2小时。

单元测试

	@Test
	public void testQueryVideoDeviceStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoDeviceStatisticsRequest vodQueryVideoDeviceStatisticsRequest =
                new VodQueryVideoDeviceStatisticsRequest();
        VodQueryVideoDeviceStatisticsResponse vodQueryVideoDeviceStatisticsResponse = null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryVideoDeviceStatisticsRequest.setDr("7days")
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 18))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 24));
            vodQueryVideoDeviceStatisticsResponse = new VodDataStatisticsServiceImpl().queryVideoDeviceStatistics(
                    vodQueryVideoDeviceStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoDeviceStatisticsResponse);
            if (vodQueryVideoDeviceStatisticsResponse != null) {
                log.debug("测试查询视频终端环境统计数据成功,{}", JSON.toJSONString(vodQueryVideoDeviceStatisticsResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoDeviceStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

参数名类型说明

device

Array

终端环境统计数据【详见Device参数描述

operatingSystem

Array

操作系统环境统计数据【详见OperatingSystem参数描述

browser

Array

浏览器环境统计数据【详见Browser参数描述

Device参数描述

参数名类型说明

deviceName

String

终端环境名称,PC端或移动端

videoView

Integer

视频总播放量

formatPlayDuration

String

视频总播放时长,格式 hh:mm:ss 例如00:03:22

playDuration

Integer

视频总播放时长,单位:秒

uniqueViewer

Integer

视频总观众数

percentage

Float

总占比

OperatingSystem参数描述

参数名类型说明

operateSystemName

String

操作系统环境名称

videoView

Integer

视频总播放量

formatPlayDuration

String

视频总播放时长,格式 hh:mm:ss 例如00:03:22

playDuration

String

视频总播放时长,格式 hh:mm:ss 例如00:03:22

uniqueViewer

Integer

视频总观众数

percentage

Float

总占比

Browser参数描述

参数名类型说明

browserName

String

浏览器环境名称

formatPcPlayDuration

String

格式化的PC播放时长,格式 hh:mm:ss 例如00:00:00

pcPlayDuration

Integer

PC端播放时长,单位秒

pcVideoView

Integer

PC端播放量

pcUniqueViewer

Integer

PC端唯一观众数

formatMobilePlayDuration

String

格式化的移动端播放时长,格式 hh:mm:ss 例如00:00:00

mobilePlayDuration

Integer

移动端播放时长,单位秒

mobileVideoView

Integer

移动端播放量

mobileUniqueViewer

Integer

移动端唯一观众数

pcPercentage

Float

PC端数据占比

mobilePercentage

Float

移动端数据占比


6、查询视频播放时段统计数据

描述

通过时间范围查询视频播放时段统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/hourly/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、从播放行为产生到数据可查询的间隔时间为1~2小时,但是统计结果中流量消耗(PCFlowSize、mobileFlowSize字段)的计算依赖于CDN

日志,为了保证数据完整性,流量数据需要间隔一个自然日才会生成。例如1号产生的流量消耗,会在2号晚上汇总计算,在3号才可查询到流量数据。

单元测试

	@Test
	public void testQueryVideoPlaybackHourlyStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoPlaybackHourlyStatisticsRequest vodQueryVideoPlaybackHourlyStatisticsRequest =
                new VodQueryVideoPlaybackHourlyStatisticsRequest();
        List<VodQueryVideoPlaybackHourlyStatisticsResponse> vodQueryVideoPlaybackHourlyStatisticsResponseList = null;
        try {
            vodQueryVideoPlaybackHourlyStatisticsRequest.setDr("7days");
            vodQueryVideoPlaybackHourlyStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryVideoPlaybackHourlyStatistics(
                    vodQueryVideoPlaybackHourlyStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoPlaybackHourlyStatisticsResponseList);
            if (vodQueryVideoPlaybackHourlyStatisticsResponseList != null) {
                log.debug("测试查询视频播放时段统计数据成功,{}", JSON.toJSONString(vodQueryVideoPlaybackHourlyStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoPlaybackHourlyStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

返回对象是List<VodQueryVideoPlaybackHourlyStatisticsResponse>,VodQueryVideoPlaybackHourlyStatisticsResponse具体元素内容如下:

参数名类型说明

currentHour

Integer

时间段,24小时制,例如 18

pcPlayDuration

Integer

pc播放时长,单位为秒

formatPcPlayDuration

String

pc播放时长,格式 hh:mm:ss 例如03:02:22

pcFlowSize

Long

pc消耗流量,单位为字节

pcVideoView

Integer

pc端播放量

pcUniqueViewer

Integer

pc端观众量

mobilePlayDuration

Integer

移动端播放时长,单位为秒

formatMobilePlayDuration

String

移动端播放时长,格式 hh:mm:ss 例如03:02:22

mobileFlowSize

Long

移动端消耗流量,单位为字节

mobileVideoView

Integer

移动端播放量

mobileUniqueViewer

Integer

移动端观众量


7、查询视频播放流量统计数据

描述

通过时间范围查询视频播放流量统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/traffic/%s/video/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、自2018年7月10日起,才可以统计到单个视频的移动端流量数据,在此之前没有移动端流量数据

3、流量消耗的计算依赖于CDN日志,为了保证数据完整性,流量数据需要间隔一个自然日才会生成。例如1号产生的流量消耗,会在2号晚上汇总计算,在3号才可查询到流量数据

单元测试

	@Test
	public void testQueryVideoPlaybackFlowSizeStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoPlaybackFlowSizeStatisticsRequest vodQueryVideoPlaybackFlowSizeStatisticsRequest =
                new VodQueryVideoPlaybackFlowSizeStatisticsRequest();
        List<VodQueryVideoPlaybackFlowSizeStatisticsResponse> vodQueryVideoPlaybackFlowSizeStatisticsResponseList =
                null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryVideoPlaybackFlowSizeStatisticsRequest.setDr("7days")
                    .setVideoId("1b448be32345b255cabc3fe8d65a4d00_1")
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 18))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 24));
            vodQueryVideoPlaybackFlowSizeStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryVideoPlaybackFlowSizeStatistics(
                    vodQueryVideoPlaybackFlowSizeStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoPlaybackFlowSizeStatisticsResponseList);
            if (vodQueryVideoPlaybackFlowSizeStatisticsResponseList != null) {
                log.debug("测试查询视频播放流量统计数据成功,{}",
                        JSON.toJSONString(vodQueryVideoPlaybackFlowSizeStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoPlaybackFlowSizeStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

true

String

视频ID【对应api文档的vid字段】

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

返回对象是List<VodQueryVideoPlaybackFlowSizeStatisticsResponse>,VodQueryVideoPlaybackFlowSizeStatisticsResponse具体元素内容如下:

参数名类型说明

currentDay

Date

日期,格式 yyyy-MM-dd 例如 2021-03-24

pcFlowSize

Long

PC端消耗流量,单位字节

mobileFlowSize

Long

移动端消耗流量,单位字节

totalFlowSize

Long

总流量消耗,单位字节


8、查询视频播放地理位置统计数据

描述

通过时间范围查询视频播放地理位置统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/geo/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、从播放行为产生到数据可查询的间隔时间为1~2小时,但是统计结果中流量消耗(PCFlowSize、mobileFlowSize字段)的计算依赖于CDN

日志,为了保证数据完整性,流量数据需要间隔一个自然日才会生成。例如1号产生的流量消耗,会在2号晚上汇总计算,在3号才可查询到流量数据。

单元测试

	@Test
	public void testQueryVideoGeographicStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoGeographicStatisticsRequest vodQueryVideoGeographicStatisticsRequest =
                new VodQueryVideoGeographicStatisticsRequest();
        List<VodQueryVideoGeographicStatisticsResponse> vodQueryVideoGeographicStatisticsResponseList = null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryVideoGeographicStatisticsRequest.setDr("7days")
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 18))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 24));
            vodQueryVideoGeographicStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryVideoGeographicStatistics(
                    vodQueryVideoGeographicStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoGeographicStatisticsResponseList);
            if (vodQueryVideoGeographicStatisticsResponseList != null) {
                log.debug("测试查询视频播放地理位置统计数据成功,{}", JSON.toJSONString(vodQueryVideoGeographicStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoGeographicStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

返回对象是List<VodQueryVideoGeographicStatisticsResponse>,VodQueryVideoGeographicStatisticsResponse具体元素内容如下:

参数名类型说明

province

String

省份

pcPlayDuration

Integer

pc端播放时长,单位为秒

formatPcPlayDuration

String

播放时长,格式 hh:mm:ss 例如00:03:22

pcFlowSize

Long

PC端消耗流量,单位字节

pcVideoView

Integer

PC端播放量

pcUniqueViewer

Integer

PC端观众量

mobilePlayDuration

Integer

移动端播放时长,单位为秒

formatMobilePlayDuration

String

移动端播放时长,格式 hh:mm:ss 例如00:03:22

mobileFlowSize

Long

移动端消耗流量,单位字节

mobileVideoView

Integer

移动端播放量

mobileUniqueViewer

Integer

移动端观众量


9、查询视频观众量统计数据

描述

通过视频id或时间范围查询视频观众量统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/data/visitor/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、按照日期区间或区段及视频ID查询视频的观众量统计数据,不传vid参数就表示查询用户下所有视频的观众量。

2、从播放行为产生到数据可查询的间隔时间为1~2小时。

单元测试

	@Test
	public void testQueryVideoViewership() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoViewershipRequest vodQueryVideoViewershipRequest = new VodQueryVideoViewershipRequest();
        List<VodQueryVideoViewershipResponse> vodQueryVideoViewershipResponseList = null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryVideoViewershipRequest.setDr("7days")
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 18))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 24));
            vodQueryVideoViewershipResponseList = new VodDataStatisticsServiceImpl().queryVideoViewership(
                    vodQueryVideoViewershipRequest);
            Assert.assertNotNull(vodQueryVideoViewershipResponseList);
            if (vodQueryVideoViewershipResponseList != null) {
                log.debug("测试查询视频观众量统计数据成功,{}", JSON.toJSONString(vodQueryVideoViewershipResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoViewershipResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

false

String

视频ID【对应api文档的vid字段】

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的startDate字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的endDate字段】

返回对象描述

返回对象是List<VodQueryVideoViewershipResponse>,VodQueryVideoViewershipResponse具体元素内容如下:

参数名类型说明

date

Date

日期,格式 yyyy-MM-dd 例如 2021-03-24

pcUniqueViewer

Integer

pc端的观看量

mobileUniqueViewer

Integer

移动端的观看量

totalUniqueViewer

Integer

总的观众量


10、查询视频的播放时长统计数据

描述

描述:通过视频id或时间范围查询视频的播放时长统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/play-duration/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、按照日期区间或时段查询视频播放时长统计数据,从播放行为产生到数据可查询的间隔时间为1~2小时。

单元测试

	@Test
	public void testQueryVideoPlayTimeStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoPlayTimeStatisticsRequest vodQueryVideoPlayTimeStatisticsRequest =
                new VodQueryVideoPlayTimeStatisticsRequest();
        List<VodQueryVideoPlayTimeStatisticsResponse> vodQueryVideoPlayTimeStatisticsResponseList = null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryVideoPlayTimeStatisticsRequest.setDr("7days")
                    .setVideoId("1b448be32345b255cabc3fe8d65a4d00_1")
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 18))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 24));
            vodQueryVideoPlayTimeStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryVideoPlayTimeStatistics(
                    vodQueryVideoPlayTimeStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoPlayTimeStatisticsResponseList);
            if (vodQueryVideoPlayTimeStatisticsResponseList != null) {
                log.debug("测试查询视频的播放时长统计数据成功,{}", JSON.toJSONString(vodQueryVideoPlayTimeStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoPlayTimeStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

false

String

视频ID,不传为查询用户级别统计【对应api文档的vid字段】

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

返回对象是List<VodQueryVideoPlayTimeStatisticsResponse>,VodQueryVideoPlayTimeStatisticsResponse具体元素内容如下:

参数名类型说明

currentDay

Date

日期,格式 yyyy-MM-dd 例如 2021-03-24

pcPlayDuration

Integer

PC端播放时长(单位:秒)

formatPcPlayDuration

String

格式化pc端播放时长,格式 hh:mm:ss 例如00:03:22

pcPlayDurationVideoAvg

Integer

PC端视频平均播放时长,单位秒

formatPcPlayDurationVideoAvg

String

格式化PC端视频平均播放时长,格式 hh:mm:ss 例如00:03:22

pcPlayDurationPersonAvg

Integer

PC端人均播放时长,单位秒

formatPcPlayDurationPersonAvg

String

格式化PC端人均播放时长,格式 hh:mm:ss 例如00:03:22

mobilePlayDuration

Integer

移动端播放时长,单位秒

formatMobilePlayDuration

String

格式化移动端播放时长,格式 hh:mm:ss 例如00:03:22

mobilePlayDurationVideoAvg

Integer

移动端视频平均播放时长,单位秒

formatMobilePlayDurationVideoAvg

String

格式化移动端视频平均播放时长,格式 hh:mm:ss 例如00:03:22

mobilePlayDurationPersonAvg

Integer

移动端人均播放时长,单位秒

formatMobilePlayDurationPersonAvg

String

格式化移动端人均播放时长,格式 hh:mm:ss 例如00:03:22


11、查询单个视频的观看热点统计数据

描述

通过视频id查询单个视频的观看热点统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/videohot/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、按照日期区间或时间段查询单个视频的观看热点统计数据,从播放行为产生到数据可查询的间隔时间为1~2小时。

单元测试

	@Test
	public void testQueryVideoViewingHotspotStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoViewingHotspotStatisticsRequest vodQueryVideoViewingHotspotStatisticsRequest =
                new VodQueryVideoViewingHotspotStatisticsRequest();
        List<VodQueryVideoViewingHotspotStatisticsResponse> vodQueryVideoViewingHotspotStatisticsResponseList = null;
        try {
            int year = new Date().getYear() + 1900;
            vodQueryVideoViewingHotspotStatisticsRequest.setDr("7days")
                    .setVideoId("1b448be3234406608b7838c7ef6b597c_1")
                    //根据自己实际需要传 Date 即可
                    .setStartTime(super.getDate(year, 2, 18))
                    //根据自己实际需要传 Date 即可
                    .setEndTime(super.getDate(year, 2, 24));
            vodQueryVideoViewingHotspotStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryVideoViewingHotspotStatistics(
                    vodQueryVideoViewingHotspotStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoViewingHotspotStatisticsResponseList);
            if (vodQueryVideoViewingHotspotStatisticsResponseList != null) {
                log.debug("测试查询单个视频的观看热点统计数据成功,{}",
                        JSON.toJSONString(vodQueryVideoViewingHotspotStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoViewingHotspotStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

true

String

视频ID【对应api文档的vid字段】

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

返回对象是List<VodQueryVideoViewingHotspotStatisticsResponse>,VodQueryVideoViewingHotspotStatisticsResponse具体元素内容如下:

参数名类型说明

second

Integer

视频时长(单位:秒)

viewCount

Integer

播放量【对应api文档的viewcount字段】


12、查询视频的观看比例统计数据

描述

通过视频id或时间范围查询视频的观看比例统计数据
接口地址(仅做说明使用):https://api.polyv.net/v2/play-ratio/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、查询单个视频或全部视频在一定时间范围内的观看比例统计数据,从播放行为产生到数据可查询的间隔时间为1~2小时。

单元测试

	@Test
	public void testQueryVideoViewingRatioStatistics() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoViewingRatioStatisticsRequest vodQueryVideoViewingRatioStatisticsRequest =
                new VodQueryVideoViewingRatioStatisticsRequest();
        List<VodQueryVideoViewingRatioStatisticsResponse> vodQueryVideoViewingRatioStatisticsResponseList = null;
        try {
            vodQueryVideoViewingRatioStatisticsRequest.setDr("7days");
            vodQueryVideoViewingRatioStatisticsResponseList =
                    new VodDataStatisticsServiceImpl().queryVideoViewingRatioStatistics(
                    vodQueryVideoViewingRatioStatisticsRequest);
            Assert.assertNotNull(vodQueryVideoViewingRatioStatisticsResponseList);
            if (vodQueryVideoViewingRatioStatisticsResponseList != null) {
                log.debug("测试查询视频的观看比例统计数据成功,{}", JSON.toJSONString(vodQueryVideoViewingRatioStatisticsResponseList));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoViewingRatioStatisticsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

false

String

视频ID,不填为查询用户维度【对应api文档的vid字段】

dr

false

String

时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days:最近7天

startTime

false

Date

查询开始日期,格式为yyyy-MM-dd【对应api文档的start字段】

endTime

false

Date

查询结束日期,格式为yyyy-MM-dd【对应api文档的end字段】

返回对象描述

返回对象是List<VodQueryVideoViewingRatioStatisticsResponse>,VodQueryVideoViewingRatioStatisticsResponse具体元素内容如下:

参数名类型说明

percentage

String

观看比例范围,单位:% 例如 70-80

playCount

Integer

观看数量


13、查询视频观看完成度

描述

通过视频id和观众id查询视频观看完成度
接口地址(仅做说明使用):https://api.polyv.net/v2/video/engagement/%s/get

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、该接口可查看某一观众累计观看某一视频的完成度情况。无论观众使用哪种终端、分多少次观看,接口返回的是最终的汇总的完成度。比如,视频A时长为50分钟,观众使用PC

H5观看了第0∼20分钟,使用手机H5观看了第10∼30分钟,又使用APP观看了第40∼50分钟,累计观看时长为20+20+10=50分钟,但观看的视频内容是 0∼30 和

40∼50 的部分。虽然累计观看时长与视频时长相同,但完成度为 (30+10)/50=80%。

3、数据隔天更新一次

4、该接口需联系客服开通后才能使用

单元测试

	@Test
	public void testGetVideoViewingCompletion() throws IOException, NoSuchAlgorithmException {
        VodGetVideoViewingCompletionRequest vodGetVideoViewingCompletionRequest =
                new VodGetVideoViewingCompletionRequest();
        Float vodGetVideoViewingCompletionResponse = null;
        try {
            vodGetVideoViewingCompletionRequest.setVideoId("1b448be3234406608b7838c7ef6b597c_1")
                    .setViewerId("1555313336634");
            vodGetVideoViewingCompletionResponse = new VodDataStatisticsServiceImpl().getVideoViewingCompletion(
                    vodGetVideoViewingCompletionRequest);
            Assert.assertNotNull(vodGetVideoViewingCompletionResponse);
            if (vodGetVideoViewingCompletionResponse != null) {
                log.debug("测试查询视频观看完成度成功,已完成进度比例{}", vodGetVideoViewingCompletionResponse);
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回Float对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

true

String

视频ID【对应api文档的vid字段】

viewerId

true

String

自定义观众id,例如 1555313336634

返回对象描述

已完成进度比例


14、查询观看行为列表

描述

通过视频id或时间范围分页查询观看行为列表
接口地址(仅做说明使用):https://api.polyv.net/v2/advance/play/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、高级分析功能介绍详见:视频高级分析

3、由于数据量和计算量大,数据分析结果次日才可查询。

4、查询的时间跨度不超过31天;

5、当请求入参startTime(开始时间)有值而endTime(结束时间)为空时,返回开始日期后31天后的数据;

6、当请求入参startTime(开始时间)为空而endTime(结束时间)不为空时,返回结束日期前31天内的数据;

7、当请求入参startTime(开始时间)、endTime(结束时间)均为空时,返回最近31天的数据。

8、该接口需联系客服开通后才能使用

单元测试

	@Test
	public void testQueryViewingBehaviorList() throws IOException, NoSuchAlgorithmException {
        VodQueryViewingBehaviorListRequest vodQueryViewingBehaviorListRequest =
                new VodQueryViewingBehaviorListRequest();
        VodQueryViewingBehaviorListResponse vodQueryViewingBehaviorListResponse = null;
        try {
            vodQueryViewingBehaviorListRequest.setStartTime(super.getDate(2021, 2, 1))
                    .setEndTime(super.getDate(2021, 2, 30))
                    .setVideoId("1b448be3234406608b7838c7ef6b597c_1")
                    .setPageSize(10);
            vodQueryViewingBehaviorListResponse = new VodDataStatisticsServiceImpl().queryViewingBehaviorList(
                    vodQueryViewingBehaviorListRequest);
            Assert.assertNotNull(vodQueryViewingBehaviorListResponse);
            if (vodQueryViewingBehaviorListResponse != null) {
                log.debug("测试分页查询观看行为列表成功{}", JSON.toJSONString(vodQueryViewingBehaviorListResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryViewingBehaviorListResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

false

String

视频ID【对应api文档的vid字段】

startTime

false

Date

开始时间,格式为yyyy-MM-dd或者yyyy-MM-dd HH:mm:ss,查询范围不超过31天【对应api文档的start字段】

endTime

false

Date

结束时间,格式为yyyy-MM-dd或者yyyy-MM-dd HH:mm:ss,查询范围不超过31天【对应api文档的end字段】

viewerId

false

String

观众id,例如 1555313336634

viewerName

false

String

观众昵称

token

false

String

下一页的凭证,从当前页的返回数据里获取,第一页不需要传

pageSize

false

Integer

每页显示的数据条数,默认每页显示20条数据

返回对象描述

参数名类型说明

contents

Array

返回的结果集【详见ViewingBehaviorInfo参数描述

token

String

查询下一页时传的凭证

pageSize

Integer

每页显示的数据条数,默认每页显示20条数据

currentPage

Integer

当前页【对应api文档的pageNumber字段】

totalItems

Integer

记录总条数

totalPage

Integer

总页数【对应api文档的totalPages字段】

ViewingBehaviorInfo参数描述

参数名类型说明

startTime

Date

首次观看日期,格式yyyy-MM-dd HH:mm:ss 例如 2019-10-01 11:12:05

videoId

String

视频id

videoName

String

视频名称

videoImage

String

视频首图(没有添加协议头)

videoDuration

Integer

视频时长,单位:秒

deviceClass

String

设备名称

osName

String

操作系统

agentName

String

终端名称

agentVersion

String

终端版本

referer

String

来源

ip

String

ip地址

country

String

国家

province

String

省份

city

String

地区

isp

String

运营商

viewerId

String

观众id

viewerNickName

String

观众昵称

viewerAvatar

String

观众头像

totalVideoCount

Integer

观众看的视频总量

heatmap

String

热力图(["0-1:1","3-4:2"]表示视频的0到1秒有1次观看,3到4秒有2次观看)

completionRate

Float

观看完成度

status

Integer

视频的状态:60/61已发布;10等待编码;20正在编码;50等待审核;51审核不通过;-1已删除;


15、查询视频分析数据

描述

通过视频id查询视频分析数据
接口地址(仅做说明使用):https://api.polyv.net/v2/advance/video/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、高级分析功能介绍详见:视频高级分析

3、由于数据量和计算量大,数据分析结果次日才可查询。

4、该接口需联系客服开通后才能使用

单元测试

	@Test
	public void testQueryVideoAnalysisData() throws IOException, NoSuchAlgorithmException {
        VodQueryVideoAnalysisDataRequest vodQueryVideoAnalysisDataRequest = new VodQueryVideoAnalysisDataRequest();
        VodQueryVideoAnalysisDataResponse vodQueryVideoAnalysisDataResponse = null;
        try {
            vodQueryVideoAnalysisDataRequest.setVideoId("1b448be3234406608b7838c7ef6b597c_1");
            vodQueryVideoAnalysisDataResponse = new VodDataStatisticsServiceImpl().queryVideoAnalysisData(
                    vodQueryVideoAnalysisDataRequest);
            Assert.assertNotNull(vodQueryVideoAnalysisDataResponse);
            if (vodQueryVideoAnalysisDataResponse != null) {
                log.debug("测试根据视频id查询视频分析数据成功{}", JSON.toJSONString(vodQueryVideoAnalysisDataResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryVideoAnalysisDataResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

videoId

true

String

视频ID【对应api文档的vid字段】

返回对象描述

参数名类型说明

videoId

String

视频id

videoName

String

视频名称

duration

Integer

视频时长,单位:秒

playTimes

Integer

播放次数

uniqueViewerCount

Integer

唯一观众数

avgCompletionRate

Float

平均观看完成度

viewHeatmap

String

观看热力图,例如["0-20:662","21-100:665"]代表视频内容的020秒有662次观看,21100秒有665次观看

uniqueViewHeatmap

String

唯一观看热力图,例如["0-20:614","21-100:615"]代表视频内容的020秒有614个观众观看,21100秒有615个观众观看


16、查询观众分析结果

描述

通过观众id查询观众分析结果
接口地址(仅做说明使用):https://api.polyv.net/v2/advance/viewer/%s

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、该接口需联系客服开通后才能使用

2、高级分析功能介绍详见:视频高级分析

3、由于数据量和计算量大,数据分析结果次日才可查询。

4、该接口需联系客服开通后才能使用

单元测试

	@Test
	public void testQueryAudienceAnalysisResults() throws IOException, NoSuchAlgorithmException {
        VodQueryAudienceAnalysisResultsRequest vodQueryAudienceAnalysisResultsRequest =
                new VodQueryAudienceAnalysisResultsRequest();
        VodQueryAudienceAnalysisResultsResponse vodQueryAudienceAnalysisResultsResponse = null;
        try {
            vodQueryAudienceAnalysisResultsRequest.setViewerId("1555313336634");
            vodQueryAudienceAnalysisResultsResponse = new VodDataStatisticsServiceImpl().queryAudienceAnalysisResults(
                    vodQueryAudienceAnalysisResultsRequest);
            Assert.assertNotNull(vodQueryAudienceAnalysisResultsResponse);
            if (vodQueryAudienceAnalysisResultsResponse != null) {
                log.debug("测试根据观众id查询观众分析结果成功{}", JSON.toJSONString(vodQueryAudienceAnalysisResultsResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodQueryAudienceAnalysisResultsResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

参数名必选类型说明

viewerId

true

String

观众id,例如 1555313336634

返回对象描述

参数名类型说明

userId

String

用户id

viewerId

String

观众id

viewerNickName

String

观众昵称

viewerAvatar

String

观众头像【对应api文档的viewerAatar字段】

ip

String

ip地址

firstWatchTime

Date

首次观看时间,格式 yyyy-MM-dd HH:mm:ss

lastWatchTime

Date

最后观看时间,格式 yyyy-MM-dd HH:mm:ss

totalVideoCount

Integer

观看视频总数

totalWatchDuration

Integer

观众总时长(秒)

avgCompletionRate

Float

平均观看完成度


Last updated