ошибка API youtube v3 при поиске с формином, установленным в false
Я пишу некоторые функции с помощью Youtube API version 3
. Я использую python
, но подтвердил свою ошибку в предоставленной google тестовой консоли.
(я делаю все авторизованные запросы, просто не вставил свой ключ ниже)
Клиентская библиотека Python автоматически добавляет параметр forMine
в мой запрос Search().list()
, хотя я могу установить его в false. Я не могу удалить параметр из моего запроса, если я опущу аргумент, он по умолчанию равен true. Если я установлю его на false, я получу это ошибка:
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/youtube/v3/search?forMine=false&maxResults=50&q=week&part=snippet&alt=json&type=playlist&order=date returned "The request contains an invalid combination of search filters and/or restrictions. Note that you must set the <code>type</code> parameter to <code>video</code> if you set a value for the <code>eventType</code>, <code>videoCaption</code>, <code>videoCategoryId</code>, <code>videoDefinition</code>, <code>videoDimension</code>, <code>videoDuration</code>, <code>videoEmbeddable</code>, <code>videoLicense</code>, <code>videoSyndicated</code>, or <code>videoType</code> parameters.">
Симптомы в Обозревателе API:
Запрос, который не выполняется (forMine
параметр удален):
GET https://www.googleapis.com/youtube/v3/search?part=snippet&forMine=false&q=week&type=playlist&key={YOUR_API_KEY}
Запрос, который не завершается ошибкой (forMine
параметр установлен в false):
GET https://www.googleapis.com/youtube/v3/search?part=snippet&q=week&type=playlist&key={YOUR_API_KEY}
Мой код python, который терпит неудачу, который, как я считаю, должен работать:
result = youtube_service.search().list(part='snippet', forMine=False, q='test', type='playlist', maxResults=50).execute()
Может ли кто-нибудь подтвердить, что это либо моя ошибка, либо ошибка API?
1 ответ:
Похоже, что в API есть ошибка, из-за которой атрибут forMine выдает ошибку, когда он установлен в false (он должен игнорировать ее, когда false, но вместо этого он обрабатывает ее как строковый параметр, где он запускает определенные условия, когда он имеет какое-либо значение). Клиентский код в репозитории github выглядит корректно, как и discovery API для YouTube, поэтому проблема, скорее всего, является бэкендом, который инженеры должны решить. Вы можете попробовать установить forMine=None, чтобы увидеть, если вы можете получите этот параметр, чтобы не отправлять, или вы можете посмотреть код для клиента (https://github.com/google/google-api-python-client/blob/master/googleapiclient/discovery.py) и напишите свою собственную функцию "build", которая удаляет параметр forMine, полученный из URI discovery. Но до тех пор, пока этот вопрос не будет решен на инженерном уровне, тогда будут необходимы хитрые обходные пути; рассмотрим отчетность at:
Https://code.google.com/p/gdata-issues/issues/list?q=label:API-YouTube