【问题标题】:Retrieve Duration, Video Picture and Views of a Playlist Video YouTube API检索播放列表视频 YouTube API 的持续时间、视频图片和观看次数
【发布时间】:2016-01-08 22:56:22
【问题描述】:

我正在尝试使用 Youtube API 检索播放列表视频的时长、图片和观看次数。我注意到这些都没有包含在我检索到的 sn-p 中。这是我到目前为止的代码:

gapi.client.setApiKey('xxxx');
gapi.client.load('youtube', 'v3', function() {

    var request = gapi.client.youtube.playlistItems.list({
      part: 'snippet, contentDetails',
      playlistId: 'PL3C9792F77CB0EE51',
      maxResults: 50
    });  

request.execute(function(response) {
    for (var i = 0; i < response.items.length; i++) {
       console.log(response.items[i].snippet.title + " published at " 
       + response.items[i].snippet.publishedAt);
       console.log(response.items[i].contentDetails.videoId);
    } 
});

console.log(response.items[i].snippet) 为每个视频返回以下内容:

Object {
    publishedAt: ...,
    channelId: ...,
    title: ...,
    description: ...,
    thumbnails { ... }
}

console.log(response.items[i].contentDetails) 返回:

Object {
    videoId: ...,
}

我在考虑可能使用 videoId 然后发出另一个请求并检索每个给定视频的持续时间、图片和视图,但我不确定如何继续

【问题讨论】:

  • 你能发布你检索到的数据吗?
  • @Sapikelio,我编辑了我的帖子。
  • 我已经为您发布了一个解决方案。希望它有所帮助:)

标签: javascript youtube-data-api


【解决方案1】:

一步一步来。

Youtube PlayListItem 有这个结构。

  {
  "kind": "youtube#playlistItem",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "channelTitle": string,
    "playlistId": string,
    "position": unsigned integer,
    "resourceId": {
      "kind": string,
      "videoId": string,
    }
  },
  "contentDetails": {
    "videoId": string,
    "startAt": string,
    "endAt": string,
    "note": string
  },
  "status": {
    "privacyStatus": string
  }
}

如果你想检索视频图像,在thumbnails 属性上你有图像的 url。但是,您也可以这样做。

http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg

对于缩略图的高质量版本,请使用类似于此的 url:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg

还有一个中等质量版本的缩略图,使用类似于总部的网址:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg

对于标准定义版本的缩略图,使用类似这样的 url:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg

对于缩略图的最大分辨率版本,请使用类似于此的 url:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

编辑(获取视频信息)

要获得留下的信息,您必须通过在进行此调用的 PlayListItem 上检索到的 ID 来获取 videoObjet。 Demo

$.ajax({
    async: false,
    type: 'GET',
    url:  "https://www.googleapis.com/youtube/v3/videos?id={{videoId}}&key={{yourKey}}&part=snippet,contentDetails",
    success: function(data) {
        ...Do what you want with data...
    }
}

返回的 JSON 如下所示:

{
   kind: "youtube#videoListResponse",
   etag: ""oqbvhYxBE6fAbRk6m7aLlHf5s1I/jg_aG2jmpbZL5qs3yae4JnZbDs0"",
   pageInfo: {
      totalResults: 1,
      resultsPerPage: 1
   },
   items: [{
      kind: "youtube#video",
      etag: ""oqbvhYxBE6fAbRk6m7aLlHf5s1I/YQ-QRwoxkXL4UBFIFCyCwIdmtzg"",
      id: "ojCkgU5XGdg",
      contentDetails: {
         duration: "PT23M14S",
         dimension: "2d",
         definition: "hd",
         caption: "true",
         licensedContent: false
      },
      statistics: {
         viewCount: "25587",
         likeCount: "168",
         dislikeCount: "17",
         favoriteCount: "0",
         commentCount: "45"
     }
   }]
}

如果您想检索有关视频的更多信息。您必须添加查询part 参数任何下一个选项:snippetcontentDetailsfileDetailsplayerprocessingDetailsrecordingDetailsstatistics、@9876543439@、@98765 @ytopicDetails.

希望对你有帮助

【讨论】:

  • 我如何获得videoObjet?换句话说,我如何提出检索它的请求?
  • 我已经编辑了答案并给你做了一个演示。如果您有更多疑问,请告诉我:D
  • 而且仅仅获得视频的浏览量会很慢,因为每个视频的每个请求都需要 100-200 毫秒,所以在你获得播放列表项(约 500 毫秒)后,你还需要花费是时候获取该播放列表中每个项目的观看次数或其他信息了,例如播放列表中有 50 个视频 == 50 * 150 = 7500 毫秒(7.5 秒),听起来很疯狂
猜你喜欢
  • 1970-01-01
  • 2017-07-14
  • 2014-08-12
  • 1970-01-01
  • 2023-03-17
  • 2019-08-17
  • 2016-06-15
  • 2013-07-08
  • 2018-09-02
相关资源
最近更新 更多