YouTube活动报告与视频数据不一致问题咨询
问题解答
这是正常行为,原因如下:
YouTube Data API的Activities.List接口返回的活动范围不止包含目标频道自主上传的视频,还涵盖了该频道的其他操作活动,比如:
- 订阅频道的更新动态
- 点赞、评论、分享其他频道的视频
- 将其他频道的视频加入自身播放列表
这些活动关联的视频本身属于其他频道,所以你提取的视频ID列表里自然会混入非目标频道的内容,后续查询视频数据时就会出现其他频道的结果。
解决办法
方法1:限制活动类型(推荐)
在调用Activities.List时,指定只获取目标频道上传视频的活动类型,这样返回的活动只会关联本频道的视频。修改代码如下:
YouTube.Activities.List activitiesListByIdRequest = youtubeService.activities().list(Collections.singletonList("contentDetails")); activitiesListByIdRequest.setChannelId("xxx","yyy"); // 新增:仅获取上传视频的活动类型 activitiesListByIdRequest.setActivityTypes(Collections.singletonList("upload")); activitiesListByIdRequest.setMaxResults(Long.valueOf(50));
方法2:二次过滤视频结果
如果需要保留其他类型的活动,但只保留目标频道的视频数据,可以在获取视频列表后,手动过滤snippet.channelId不符合条件的条目:
// 获取视频数据后执行过滤逻辑 List<Video> targetChannelVideos = new ArrayList<>(); Set<String> targetChannelIds = new HashSet<>(Arrays.asList("xxx", "yyy")); for (Video video : vidoesListByIdRequest.execute().getItems()) { if (targetChannelIds.contains(video.getSnippet().getChannelId())) { targetChannelVideos.add(video); } } // 后续业务逻辑使用targetChannelVideos即可
内容的提问来源于stack exchange,提问作者Raneen Bsais
相关产品推荐
相关产品推荐

