如何通过 Youtube API v3 YouTube.PlaylistItems.List 请求检索视频的时长?

问题描述 投票:0回答:2

我正在使用 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?
}

我尝试了不同的方法来检索视频的持续时间,但它们都返回 null。我如何获得持续时间?

java youtube-data-api
2个回答
0
投票

视频时长可以在

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

您可以使用所有 YouTube API 此处


0
投票

看看这个:我找到了一个博客

  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);
  }
© www.soinside.com 2019 - 2024. All rights reserved.