使用YouTube API获取订阅数1000-2000的频道遇参数错误求助
问题分析与解决方案
错误原因
你调用的channels().list接口不支持以下参数:
order='subscriberCount':该接口的order参数可选值仅为relevance、viewCount、videoCount、title,没有subscriberCount选项。minSubscribers/maxSubscribers:这两个参数属于search().list接口的筛选条件,并非channels().list的合法参数。
可行实现方案
要批量获取订阅数在1000-2000之间的频道ID,需要分两步操作:
- 用
search().list接口筛选符合订阅数范围的频道,获取候选ID。 - 用
channels().list接口批量验证这些频道的实际订阅数(避免搜索筛选的误差,比如部分频道隐藏订阅数),最终得到符合条件的ID。
修改后的代码
api_service_name = "youtube" api_version = "v3" # 创建API客户端 youtube = build(api_service_name, api_version, developerKey=api_key) # 第一步:搜索符合订阅数范围的频道 search_request = youtube.search().list( part='id', type='channel', maxResults=50, minSubscribers=1000, maxSubscribers=2000 ) search_response = search_request.execute() # 提取候选频道ID candidate_channel_ids = [item['id']['channelId'] for item in search_response['items']] # 第二步:批量查询频道订阅数,验证并筛选有效ID valid_channel_ids = [] if candidate_channel_ids: channels_request = youtube.channels().list( part='id,statistics', id=','.join(candidate_channel_ids) ) channels_response = channels_request.execute() for item in channels_response['items']: # 处理订阅数隐藏的情况 subscriber_count = int(item['statistics'].get('subscriberCount', 0)) if 1000 <= subscriber_count <= 2000: valid_channel_ids.append(item['id']) print(valid_channel_ids)
注意事项
- 若需要获取更多结果,需处理分页逻辑:每次请求后从响应中取出
nextPageToken,作为下一次search().list请求的pageToken参数,直到没有nextPageToken为止。 - YouTube API有配额限制,
search().list每次请求消耗100单位配额,channels().list每次请求消耗1单位配额,需合理控制请求次数。 - 部分频道会隐藏订阅数,这类频道的
subscriberCount字段不存在,代码中已默认按0处理并排除。
内容的提问来源于stack exchange,提问作者Navi
相关产品推荐
相关产品推荐

