Список видео YouTube API возвращает меньше результатов, чем указано - PullRequest
0 голосов
/ 08 апреля 2019

Я запускаю запрос на своем собственном канале YouTube, чтобы получить все заголовки видео.У меня 680 видео, но я могу получить только половину из них.Что я сделал, так это создал код, который повторяет все годы с момента создания канала и в течение года использует pageTokens для просмотра пакетов из 50 видео.

Таким образом, запрос будет выглядеть так:

https://www.googleapis.com/youtube/v3/search?key={XXXXX}&channelId={XXXXX}&part=snippet,id&order=date&type=video&maxResults=50&publishedAfter=2018-01-01T00:00:00Z&publishedBefore=2019-01-01T00:00:00Z&pageToken=CDIQAA

В результатах этих запросов я получаю указание на следующее содержимое:

array (
'totalResults' => 321,
'resultsPerPage' => 50,
),

Итерируя по страницам, я получаю 2 страницы, заполненные 50 элементами, затем другуютот, где результаты показывают также 'resultsPerPage' => 50,, но содержит только 35 видео, остальные за этот год имеют 0 "элементов" в данных JSON.Таким образом, рассматриваемые страницы дают только 135 результатов вместо 321. Как только я переключаюсь на следующий год, я снова получаю 2 страницы полных результатов, затем одну с пропущенными, а затем пустыми.

Любая идеячто может быть не так?

вот выдержка из последнего набора данных JSON:

array (
  'kind' => 'youtube#searchListResponse',
  'etag' => '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/IsJyhRyDQ6qMmAHldktSRzEN2qs"',
  'nextPageToken' => 'CJYBEAA',
  'prevPageToken' => 'CGQQAQ',
  'regionCode' => 'DE',
  'pageInfo' => 
  array (
    'totalResults' => 321,
    'resultsPerPage' => 50,
  ),
  'items' => 
  array (
    0 => 
    [..contents..]
   35 =>
    [..last content and closing brackets..]

1 Ответ

1 голос
/ 12 апреля 2019

Если вы хотите получить полный список видео данного канала без каких-либо пропусков, я предлагаю вам использовать PlaylistItems конечная точка вместо этого, запрашивая список загрузок данного канала, передавая правильное значение параметра playlistId конечной точки.

Загрузка данного канала playlistId получается после запроса собственной конечной точки канала . Необходимый идентификатор можно найти на .items.contentDetails.relatedPlaylists.uploads. Обычно идентификатор канала и соответствующий ему идентификатор списка воспроизведения для загрузки связаны с s/^UC([0-9a-zA-Z_-]{22})$/UU\1/.

Еще одно замечание: вы должны знать о разнице между опубликованным видео и временем загрузки. Список видео, полученный из PlaylistItems конечной точки, запрашиваемой, как указано выше, упорядочен по времени загрузки (сначала самое новое), а сам список содержит ОпубликовалА свойства, прикрепленные к видео.

...