调用youtube.search().list接口返回重复channelId的问题咨询
问题根因
- 未指定搜索结果类型参数:YouTube Data API v3的
search.list接口默认返回视频、频道、播放列表三类混合内容,当前请求未设置type='channel'限定返回类型,接口优先返回regionCode='TN'对应突尼斯区域的热门视频,同一频道的多个热门视频进入返回列表时,提取出的channelId自然会重复。 - 无去重逻辑:代码仅对返回结果的
channelId做直接追加,未做去重过滤,重复的频道ID会直接保留在结果列表中。 - 默认排序规则非随机:
search.list接口默认按热度/相关性排序,并非随机返回结果,热门频道的内容权重更高,更容易多次出现在返回列表中。
修复代码示例
添加type='channel'参数限定仅返回频道结果,同时增加去重逻辑兜底即可解决重复问题:
def youtube_search(): all_data = [] search_response = youtube.search().list( part='snippet', maxResults=10, regionCode = 'TN', type='channel', # 限定返回结果为频道,保证每个返回项的channelId唯一 order='date' # 可调整排序规则,避免返回频道过于集中 ) response = search_response.execute() for item in response['items']: data = item['snippet']['channelId'] all_data.append(data) # 去重兜底,避免特殊场景出现重复 return list(set(all_data))
补充说明
如果需要获取更随机的频道结果,可调整order参数为viewCount、rating等不同排序规则,也可适当调大maxResults参数值,去重后取前10条即可保证拿到10个完全不同的频道ID。
内容的提问来源于stack exchange,提问作者Seif Khédija
相关产品推荐
相关产品推荐

