2016-08-18 8 views
0

PlaylistItem не получен videoId и playlistId. Эта ситуация возникает, когда она не находится в пределах диапазона maxResults.Как получить playlistItem с помощью videoId и playlistИз из диапазона maxResults?

У вас должен быть объект с данными ниже запроса.

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=3&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&videoId=H4lRmVy_qYc&key={YOUR_API_KEY} 

На этот раз вы не смогли получить товар.

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=2&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&videoId=H4lRmVy_qYc&key={YOUR_API_KEY} 

Try it here

Единственная разница, что это просто число maxResults. Элемент playlistItem имеет индекс 3, поэтому он не был извлечен.

Это нормально, если я не попытаюсь получить PlaylistItem, который не соответствует максимальному количеству maxResults. Но я должен это сделать. Меня это сильно расстраивает.

Есть ли обходной путь?

+0

Какая информация из ресурса PlaylistItem вам нужна, которая не содержится в ресурсе «Видео»? Другими словами: Почему вы не запрашиваете видео напрямую ('GET https://www.googleapis.com/youtube/v3/videos?часть = фрагмент & ID = H4lRmVy_qYc & ключ = {YOUR_API_KEY} ')? – paolo

+0

@paolo Я должен знать, входит ли PlaylistItem в список воспроизведения или нет только с помощью 'videoId' и' playlistId'. –

+0

Просто обратите внимание, что в [документации] (https://developers.google.com/youtube/v3/docs/playlistItems/list) уже указано, что требуемые параметры являются частью и фильтрами, которые необходимо указать точно один из этих параметров (id и playlistId). Просто помните, что maxResults является только необязательным параметром. Просто прочитайте описание всех параметров, чтобы узнать, как их использовать. – KENdi

ответ

1

Такое поведение API на самом деле довольно запутанно, я бы не ожидал, что подобное произойдет. В конце концов, в documentation for the maxResults parameter указывается:

Параметр maxResults указывает максимальное количество элементов, которые должны быть возвращены в результирующем наборе.

Поскольку видео в списке воспроизведения в два раза, следует предположить, что запросы с набором параметров maxResults к 2 или 3, или любое число выше, чем было бы возвратить оба пункта.

Возможные обходной

Я не понимаю, почему вы не можете просто поднять параметр maxResults до 50, но это будет работать:

Во-первых, получить список все видео в плейлисте (без параметра videoId). Установите maxResults - 50. Таким образом, вы должны сделать один запрос на каждые 50 видео в плейлисте, но по крайней мере этот метод является надежным. Не забудьте рассмотреть любые nextPageToken свойства в ответе. Это самый простой способ получить предметы, которые превысили maxResults.

При необходимости, если вам не нужна дополнительная информация (например, описание видео и т. Д.), Вы можете установить параметр fields в значение items(snippet(position,resourceId/videoId)),nextPageToken. Таким образом, он только вернет необходимую информацию и уменьшит размер ответа. Ваш запрос может выглядеть следующим образом:

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&fields=items(snippet(position%2CresourceId%2FvideoId))%2CnextPageToken&key={YOUR_API_KEY} 

(параметр fields был составлен с помощью редактора полей, в «Попробуй!» Область)

Теперь, когда у вас есть видео идентификаторы всех элементов в плейлист, просто проверьте, является ли ваш идентификатор среди них.

+0

Моя ситуация касается предметов, которые превышают 'maxResults'. Получение всех видеороликов - это только способ узнать, что в видео включен плейлист? –

+1

Я не знаю, если это единственный способ, но он работает. Как я уже сказал, я не могу объяснить это поведение «maxResults», и я нахожу его очень странным. Это может быть просто ошибка в API, я не знаю. – paolo

 Смежные вопросы

  • Нет связанных вопросов^_^