dataStatisticsService
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"]代表影片內容的0 |
| uniqueViewHeatmap | String | 不重複觀看熱力圖,例如["0-20:614","21-100:615"]代表影片內容的0 |
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 | 平均觀看完成度 |
