Youtube api 使用v3 API检索自动生成的YouTube播放列表的视频信息列表

Youtube api 使用v3 API检索自动生成的YouTube播放列表的视频信息列表,youtube-api,youtube-javascript-api,Youtube Api,Youtube Javascript Api,此代码获取自动生成的YouTube播放列表的播放ID,并从中检索前50项 提供的响应的contentDetails包含每个视频的ID 似乎如果我想检索自动生成的播放列表的所有视频信息,我需要向youtube发出2N请求?N请求从播放列表中检索不超过50组的所有视频ID。一旦我有了所有的视频ID。。。然后我需要向YouTube查询所有视频的视频信息。我可以在一个请求中获得50个视频的数据。。。这就是另外N个请求到YouTube检索所有视频 这似乎是一个糟糕的设计决策。以前,使用v2 API,如果我

此代码获取自动生成的YouTube播放列表的播放ID,并从中检索前50项

提供的响应的contentDetails包含每个视频的ID

似乎如果我想检索自动生成的播放列表的所有视频信息,我需要向youtube发出2N请求?N请求从播放列表中检索不超过50组的所有视频ID。一旦我有了所有的视频ID。。。然后我需要向YouTube查询所有视频的视频信息。我可以在一个请求中获得50个视频的数据。。。这就是另外N个请求到YouTube检索所有视频

这似乎是一个糟糕的设计决策。以前,使用v2 API,如果我检索播放列表的所有信息,我可以在初始请求中发送视频的所有必要信息


使用V3 API是否不再可能实现这一点?我是否应该承担O(2N)网络成本。。。?真的吗?

你还想要什么视频信息?如果您需要发布日期、标题、说明、缩略图、在播放列表中的位置等,则这是在播放列表项的片段中,而不是在内容详细信息中。事实上,代码段还包含一个resourceId,而resourceId又包含videoId,因此您可以忽略contentDetails,只需执行以下操作:

//  This is a first attempt at using YouTube's v3 API. It doesn't require authentication.
getAutoGeneratedPlaylistData: function() {

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

        var request = gapi.client.youtube.playlistItems.list({
            part: 'contentDetails',
            maxResults: 50,
            playlistId: 'ALYL4kY05133rTMhTulSaXKj_Y6el9q0JH',
            fields: 'items/contentDetails'
        });

        request.execute(function (response) {
            console.log("Response:", response);
        });

    });

}
(可能使用fields参数仅选择您要查找的代码段的那些部分)


如果除了代码段中的字段之外还需要视频信息,那么您必须进行另一组调用(50次一批)是正确的。这实际上是一个非常好的设计决策。几乎所有播放列表项请求的用例都只需要片段中的信息,因此它们可以显著减少向忽略它的应用程序发送大量数据的次数。它确实要求,在那些需要额外数据的用例中,必须进行额外的调用,但整个系统的效率会提高(这是一个非常实用的工程选择)。

也许我误解了,但这不只是2n个请求吗?每个视频2个?啊,是的,你说得对。拉斯蒂显然,我想还不错。。我很震惊我不能同时获得视频信息。这很公平。我需要视频的持续时间,作者,标题和id。看起来我需要招致额外的请求。我也在船上!
var request = gapi.client.youtube.playlistItems.list({
    part: 'snippet',
    maxResults: 50,
    playlistId: 'ALYL4kY05133rTMhTulSaXKj_Y6el9q0JH'
});