NodeJS 如何通过频道ID获得频道的视频,而不使用搜索请求

uyto3xhc  于 2023-01-30  发布在  Node.js
关注(0)|答案(1)|浏览(147)

在我的NodeJS应用程序中,我使用以下代码获取特定频道的视频:

var myOauth = 'my oauth object';
 var channelId = 'my channel id';
 youtube.search.list({ auth: myOauth, part: 'snippet', 
                       channelId: channelId, type:'video',
                       order:'date', maxResults:50 
                     }, 
                     function(err, response) {
                       //do something here
                     }
 );

此解决方案有效,但每个请求的配额成本为100。https://developers.google.com/youtube/v3/docs/search/list
我想用其他方式像“playlistItems”的配额成本是1. https://developers.google.com/youtube/v3/docs/playlistItems/list的视频

5n0oy7gb

5n0oy7gb1#

Solution moved来自@julien-dumortier的问题帖子。
我发现了一个新的方法来获得特定频道的视频频道ID只有3配额成本。
获取Oauth认证用户的订阅列表:

youtube.subscriptions.list({
    auth: oauth, part: 'snippet,contentDetails', 
    mine:true, maxResults:50, 
    pageToken:pageToken }, 
    function(err, response) {
        if(!err) {
            var firstChannelId = response.item[0].snippet.resourceId.channelId;
            console.log(firstChannelId);
        }
    }
);

从频道ID获取频道播放列表ID:

youtube.channels.list({    auth: res.oauth, part: 'contentDetails', 
    id:firstChannelId, maxResults:50 }, 
    function(err, response) {
        var channelPlaylistId = response.item[0].contentDetails.relatedPlaylists.uploads;
        console.log(channelPlaylistId);
    }
);

浏览播放列表中的项目:

youtube.playlistItems.list({    auth: res.oauth, part: 'snippet', 
    playlistId:channelPlaylistId,
    maxResults:50, pageToken:pageToken }, 
    function(err, response) {
        console.log(JSON.stringify(response.items));
    }
);

相关问题