Как получить продолжительность видео с помощью YouTube API v3 YouTube.PlaylistItems.List? - PullRequest
0 голосов
/ 10 апреля 2020

Я использую Youtube API v3 (Java) для доступа к Youtube видео, плейлистам. Ниже приведен пример кода:

YouTube.PlaylistItems.List request = 
youtube.playlistItems().list("id,contentDetails,snippet");
request.setPlaylistId(/*playlist id*/);                
request.setFields("items(contentDetails/videoId,snippet/title,snippet/publishedAt, 
snippet/description),nextPageToken,pageInfo");

PlaylistItemListResponse result = request.execute();

Теперь я могу получить заголовок каждого видео из списка воспроизведения, подобного следующему:

for (PlaylistItem item : result.getItems()) {
    item.getSnippet().getTitle();
    // But how can I retrieve a duration now?
}

Я пробовал разные методы для извлечения продолжительности видео , но они все вернули ноль. Как я могу получить продолжительность?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Продолжительность видео можно найти внутри contentDetails части .videos().list(). К сожалению, вы можете получить продолжительность видео через PlayListItem, как в вашем примере, вы можете получить только video_id.

Таким образом, вы можете извлечь все video_id, которые есть в списке воспроизведения, и сделать дополнительный вызов для получения видеоданных, например:

https://www.googleapis.com/youtube/v3/videos?id=9bZkp7q19f0&part=contentDetails&key={YOUR_API_KEY}

, в результате вы получите что-то вроде:

"contentDetails": {
    "duration": "PT4M13S",
    "dimension": "2d",
    "definition": "hd",
    "caption": "false",
    "licensedContent": true,
    "regionRestriction": {
     "blocked": [
      "DE"
     ]
 }

Внутри есть поле duration.

Вы можете играть со всеми API YouTube здесь

0 голосов
/ 10 апреля 2020

Проверьте это: Я нашел блог

  for (Video playlistItem : playlistItemList) {
    YouTubeData map = new YouTubeData();

    map.mVideo = playlistItem.getId();
    map.mDuration = Utils.durationToDuration((String) playlistItem.getContentDetails()
        .get("duration"));
    map.mTitle = playlistItem.getSnippet().getTitle();
    map.mDescription = Utils.condenseWhiteSpace(playlistItem.getSnippet().getDescription());
    map.mThumbnail = thumbnailURL(playlistItem.getSnippet().getThumbnails());
    map.mPublishedDate = playlistItem.getSnippet().getPublishedAt().getValue();

    result.add(map);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...