分頁查詢頻道直播觀看詳細資料
更新時間:2025-09-19 10:43:05
介面描述
1、分页获取频道的直播观看日志
2、接口URL中的{channelId}为频道号
3、接口支持https协议
4、直播观看详情数据支持查询最近3年内的历史数据,建议将历史数据导出到本地储存,以便后续查询。
介面URL
http://api.polyv.net/live/v2/statistics/{channelId}/viewlog
請求方式
GET
介面限制
1、介面同時支援HTTP、HTTPS,建議使用HTTPS以確保介面安全,介面呼叫有頻率限制,詳細請查看
2、如果要查詢一段時間的記錄,可以傳入:startTime、endTime(startTime和endTime必須在同一個月),如果要查詢某天的記錄,則傳入currentDay
3、除非 currentDay 參數非空,否則 startTime 和 endTime 是必傳參數
4、currentDay 與 startTime、endTime 同時傳入時,將優先使用 startTime、endTime 的值
5、觀看時長資料的生成有3-5分鐘的延遲
請求參數描述
| 參數名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| appId | true | String | 帳號appid【詳見取得金鑰】 |
| timestamp | true | Long | 當前13位毫秒級時間戳,3分鐘內有效 |
| sign | true | String | 簽名,為32位大寫的MD5值,產生簽名的appSecret金鑰作為通訊資料安全的關鍵資訊,嚴禁保存在用戶端直接使用,所有API都必須透過客戶自己伺服器轉發呼叫POLYV伺服器取得回應資料【詳見簽名產生規則】 |
| page | false | String | 當前頁碼,預設為1 |
| pageSize | false | String | 每頁顯示的資料筆數,預設每頁顯示1000筆資料 |
| startTime | false | String | 查詢開始時間,為13位毫秒級時間戳。請注意,除非 currentDay 參數非空,否則 startTime 和 endTime 是必傳參數。 |
| endTime | false | String | 查詢結束時間,13位毫秒級時間戳。請注意,除非 currentDay 參數非空,否則 startTime 和 endTime 是必傳參數。 |
| currentDay | false | String | 查詢日期,格式:yyyy-MM-dd |
| param1 | false | String | 觀看使用者ID,預設查詢全部 |
| param2 | false | String | 觀看使用者暱稱,預設查詢全部 |
| param3 | false | String | 觀看日誌類型,預設查詢全部 vod:觀看重播 live:直播 |
| viewLogType | false | String | 直播點播日誌類型,預設為live vod:查詢點播列表觀看資料 live:查詢直播或重播列表觀看資料 |
| sessionIds | false | String | 場次ID,多個場次請使用,分隔 |
範例
http://api.polyv.net/live/v2/statistics/1965681/viewlog?currentDay=2021-1-20&appId=frlr1zazn3&sign=B16CE5B5F2FCCBDB37F4F374BB98B329&pageSize=10&startTime=1611072000000&page=1&endTime=1611158400000¶m3=live¶m1=1b448be323×tamp=1621842645601¶m2=%E7%AE%A1%E7%90%86%E5%91%98
回應參數描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| code | Integer | 回應狀態碼,200為成功返回,非200為失敗【詳見全域錯誤說明】 |
| status | String | 回應狀態文字資訊 |
| message | String | 回應描述資訊,當code為400或500時,輔助描述錯誤原因 |
| data | Object | 請求成功時為直播觀看日誌相關資訊 【詳見Data參數描述】,請求失敗時為空 |
Data參數描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| pageSize | Integer | 每頁顯示的資料筆數,預設每頁顯示1000筆資料 |
| pageNumber | Integer | 目前的頁數 |
| totalItems | Integer | 總筆數 |
| contents | Array | 查詢的結果列表【詳見Contents參數描述】 |
| startRow | Integer | 目前頁第一筆記錄在總結果集中的位置 |
| firstPage | Boolean | 是否為第一頁,值為:true/false |
| lastPage | Boolean | 是否為最後一頁,值為:true/false |
| prePageNumber | Integer | 上一頁編號 |
| nextPageNumber | Integer | 下一頁編號 |
| limit | Integer | 每頁數量大小 |
| totalPages | Integer | 總頁數 |
| endRow | Integer | 目前頁最後一筆記錄在總結果集中的位置 |
| offset | Integer | 分頁起始記錄 |
Contents參數描述
| 參數名 | 類型 | 說明 |
|---|---|---|
| playId | String | 表示此次播放動作的ID |
| userId | String | 使用者ID |
| channelId | String | 頻道號 |
| playDuration | Integer | 播放時長,單位:秒 |
| stayDuration | Integer | 停留時長,單位:秒 |
| sessionId | String | 直播場次ID |
| param1 | String | 使用POLYV觀看頁的觀眾ID |
| param2 | String | 使用POLYV觀看頁的觀眾暱稱 |
| param3 | String | 觀看日誌類型,預設為live vod:觀看重播 live:直播 |
| 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 | String | 查詢日期,格式:yyyy-MM-dd |
| ptype | Integer | 0 或不傳:一般直播 1:超低延遲直播 rts(已不再使用) 2:PRTC直播(無延遲) |
| firstActiveTime | Long | 進入時間,13位毫秒級時間戳 |
| lastActiveTime | Long | 退出時間,13位毫秒級時間戳 |
Java請求範例
快速接入基礎程式碼請下載相關依賴原始碼, 點擊下載原始碼 ,下載後加入到自己的原始碼工程中即可。測試案例中的HttpUtil.java 和 LiveSignUtil.java 都包含在下載檔案中。
強烈建議您使用直播Java SDK完成API的功能對接,直播Java SDK 對API呼叫邏輯、例外處理、資料簽名、HTTP請求執行緒池進行了統一封裝和最佳化。
private static final Logger log = LoggerFactory.getLogger(ChannelViewDataTest.class);
/**
* 分页查询频道直播观看详情数据
* @throws IOException
*/
@Test
public void testPageViewlog() throws IOException, NoSuchAlgorithmException {
//公共参数,填写自己的实际参数
String appId = super.appId;
String appSecret = super.appSecret;
String userId = super.userId;
String timestamp = String.valueOf(System.currentTimeMillis());
//业务参数
String url = String.format("http://api.polyv.net/live/v2/statistics/%s/viewlog","1965681");
String currentDay = "2021-1-20";
String page = "1";
String pageSize = "10";
String startTime = "1611072000000";
String endTime = "1611158400000";
String param1 = "1b448be323";
String param2 = "管理员";
String param3 = "live";
//http 调用逻辑
Map<String,String> requestMap = new HashMap<>();
requestMap.put("appId", appId);
requestMap.put("timestamp",timestamp);
requestMap.put("currentDay",currentDay);
requestMap.put("page",page);
requestMap.put("pageSize",pageSize);
requestMap.put("startTime",startTime);
requestMap.put("endTime",endTime);
requestMap.put("param1",param1);
requestMap.put("param2",param2);
requestMap.put("param3",param3);
requestMap.put("sign",LiveSignUtil.getSign(requestMap, appSecret));
String response = HttpUtil.get(url, requestMap);
log.info("测试分页查询频道直播观看详情数据,返回值:{}",response);
//do somethings
}
回應範例
系統全域錯誤說明詳見全域錯誤說明
成功範例
{
"code":200,
"status":"success",
"message":"",
"data":{
"pageSize":10,
"pageNumber":1,
"totalItems":2,
"contents":[
{
"playId":"1611137360114X1320926",
"userId":"1b448be323",
"channelId":1965681,
"playDuration":182,
"stayDuration":190,
"sessionId":"fv3ma84e63",
"param1":"1b448be323",
"param2":"管理员",
"param3":"live",
"param4":"",
"param5":"",
"ipAddress":"118.249.213.240",
"country":"中国",
"province":"湖南",
"city":"长沙",
"isp":"湖南电信",
"referer":"https://live.polyv.net/#/channel/1965681/monitoring",
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0",
"operatingSystem":"Windows",
"browser":"Firefox 8",
"isMobile":"N",
"currentDay":"2021-01-20",
"createdTime":1611137461000,
"lastModified":1611148800000,
"ptype":0
},
{
"playId":"1611127231433X1037457",
"userId":"1b448be323",
"channelId":1965681,
"playDuration":154,
"stayDuration":160,
"sessionId":"fv3hmq3qml",
"param1":"1b448be323",
"param2":"管理员",
"param3":"live",
"param4":"",
"param5":"",
"ipAddress":"118.249.213.240",
"country":"中国",
"province":"湖南",
"city":"长沙",
"isp":"湖南电信",
"referer":"https://live.polyv.net/#/channel/1965681/monitoring",
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0",
"operatingSystem":"Windows",
"browser":"Firefox 8",
"isMobile":"N",
"currentDay":"2021-01-20",
"createdTime":1611127282000,
"lastModified":1611138733000,
"ptype":0
}
],
"startRow":1,
"firstPage":true,
"lastPage":true,
"prePageNumber":1,
"limit":2,
"totalPages":1,
"nextPageNumber":1,
"endRow":2,
"offset":0
}
}
異常範例
{
"code": 400,
"status": "error",
"message": "invalid signature.",
"data": ""
}
