Youtube API传入location参数报无效参数错误如何解决
错误原因
调用YouTube Data API v3的search.list接口传入location、locationRadius参数做地理范围过滤时,接口有未在醒目位置标注的强制约束:必须同时传入order参数,且参数值固定为location,缺失该参数就会直接返回Request contains an invalid argument错误,和你当前传入的经纬度、半径、时间范围参数格式无关。
修复方法
在请求参数中补充order='location'即可,修改后的可运行代码如下:
import googleapiclient.discovery api_service_name = "youtube" api_version = "v3" DEVELOPER_KEY = 'key' # 初始化API客户端 youtube = googleapiclient.discovery.build( api_service_name, api_version, developerKey = DEVELOPER_KEY) request = youtube.search().list( part="id,snippet", type='video', videoDuration='short', videoDefinition='high', order='location', # 地理过滤场景必填参数,缺失会触发参数非法错误 publishedAfter='2012-07-05T11:10:04Z', publishedBefore='2013-07-05T11:10:04Z', location='37.42307,-122.08427', locationRadius='1km' ) response = request.execute() for item in response['items']: vidId = item['id']['videoId'] print("Publish date:",item ['snippet']['publishedAt'])
注意事项
- 设置
order='location'后,返回结果会默认按照视频标记的位置距离你传入坐标的远近,从近到远排序,该场景下不支持使用其他排序规则 - 只有上传时由上传者主动标记了地理位置信息的视频,才会被地理过滤条件命中,没有添加地理标记的视频即使实际拍摄位置在你指定的范围内,也不会出现在返回结果中
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

