使用YouTube Data API V3时如何忽略点赞数未公开的视频
YouTube Data API 缺失likeCount报错解决方案
调用YouTube Data API拉取视频数据时,未公开点赞/点踩数据的视频,返回的statistics结构体中不会包含对应的likeCount、dislikeCount字段,直接强制取值就会触发KeyError。另外当前YouTube已经公开移除了全局公开点踩数的接口,绝大多数视频都无法返回dislikeCount字段。你可以通过以下两种方式处理,实现遍历不中断:
- 方案1:跳过缺少目标字段的视频
先判断需要的字段是否全部存在,仅当字段齐全时才将数据加入结果列表,同时优化原代码的遍历写法、修正原代码中dislikeCount行误用索引i的笔误,修改后代码如下:
request = youtube.videos().list(part = "snippet,statistics", id = LIST) A = request.execute() Data = [] for item in A['items']: stats = item['statistics'] # 检查需要的字段是否都存在,缺少任意一个就跳过当前视频 if all(key in stats for key in ['viewCount', 'likeCount', 'dislikeCount']): Data.append({ 'Views': stats['viewCount'], 'Likes': stats['likeCount'], 'Dislikes': stats['dislikeCount'] })
如果不需要点踩数据,把判断条件里的'dislikeCount'删掉即可,避免大部分视频被跳过。
- 方案2:保留所有视频,缺失字段填充默认值
如果你不想跳过视频,只是给缺失的字段填充默认值(比如0、None),可以用字典内置的get()方法,找不到对应的key时会自动返回你指定的默认值,不会抛出错误,代码如下:
request = youtube.videos().list(part = "snippet,statistics", id = LIST) A = request.execute() Data = [] for item in A['items']: stats = item['statistics'] Data.append({ 'Views': stats.get('viewCount', 0), 'Likes': stats.get('likeCount', None), 'Dislikes': stats.get('dislikeCount', None) })
内容的提问来源于stack exchange,提问作者Rishab Navaneet
相关产品推荐
相关产品推荐

