如何通过 Youtube API v3 YouTube.PlaylistItems.List 请求检索视频的持续时间?
How do I retrieve durations of videos through Youtube API v3 YouTube.PlaylistItems.List request?
我正在使用 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。我如何获得持续时间?
看看这个:I found a blog
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);
}
可以在 .videos().list()
的 contentDetails
部分找到视频时长。不幸的是,您可以通过 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 here
我正在使用 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。我如何获得持续时间?
看看这个:I found a blog
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);
}
可以在 .videos().list()
的 contentDetails
部分找到视频时长。不幸的是,您可以通过 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 here