API YouTube возвращает nextPageToken с пустыми списками - PullRequest
0 голосов
/ 04 июля 2018

Этот вопрос НЕ касается API YouTube 500-1000 вопрос о значимых результатах . Я думал, что API YouTube nextPageTokens работал так, что они будут нулевыми, если результатов больше не будет. возвращать. Тем не менее, я вижу, что для начала возвращаются результаты, но иногда даже после всего 8 элементов (для одного запроса maxResults = 50) он включает в себя nextPageToken, но при этом возвращается только пустой список «элементов». Последующий nextPageToken приводит к появлению большего количества пустых списков, пока не будет достигнут максимум 1000, а затем nextPageToken станет нулевым.

Также касается того, что page_info ['totalResults'] отображается как 1000000, но во многих случаях возвращает только меньше 200.

Так может случиться:
- Сделайте первоначальный запрос, получите 50 результатов
- запросить nextPageToken, получить еще 50 результатов И nextPageToken
- запросить nextPageToken, получить еще 8 результатов И nextPageToken
- запросить nextPageToken, получить пустой список и nextPageToken
- запросить nextPageToken, получить пустой список и nextPageToken
- и т. д.

Это нормально? Или мне нужно искать частичные списки «элементов», чтобы определить, завершены ли результаты?

1 Ответ

0 голосов
/ 25 апреля 2019

Прежде всего totalResults - приблизительное значение.

Как написано в документах :

Общее количество результатов в наборе результатов. Обратите внимание, что значение является приблизительным и может не представлять точное значение. Кроме того, максимальное значение составляет 1 000 000. Вы не должны использовать это значение для создания ссылок на страницы. Вместо этого используйте значения свойств nextPageToken и prevPageToken, чтобы определить, показывать ли ссылки на страницы.

Так что это может быть подсчет результатов до того, как были применены какие-либо фильтры (просто предположение).

Теперь о nextPageToken и пустых предметов

Есть много открытых вопросов об их странном поведении на https://issuetracker.google.com И они годами работают над их исправлением. см. Один из них

Похоже, Youtube пытается оптимизировать время сервера ЦП для каждого поискового запроса с оценками или, возможно, содержание, которое должно приходить, ограничено вашим регионом (например) или может быть из-за какого-то другого условия, выполненного после выборки nextPagetokens.

Это нормально? Или мне нужно искать частичные списки элементов, чтобы определить, закончены ли результаты?

ИМО на данный момент, да.

Возможные реализации:

  1. До тех пор, пока доступен nextPageToken, продолжайте совершать последовательные вызовы. Это больше рекомендуется.

  2. После некоторых вызовов API, если элементы становятся пустыми, нет необходимости в вызовах API. Это можно считать действительным для текущего состояния, в котором есть ошибки в реализации разбиения на страницы. Но ненадежный.

...