使用youtube v3 API检索YouTube播放列表中的所有视频

我使用YouTube的v3 API检索播放列表的视频,并获得50项没有任何问题,这个链接: -

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PLB03EA9545DD188C3&key=MY_API_KEY

但视频数为100,即时只获得50.我如何获得接下来的50个项目? 我尝试启动索引,但它不适用于v3 API。 任何帮助表示赞赏。


YouTube Data API v3结果分页。 所以你需要为其他人得到结果的下一页。

基本上在你有nextPageToken的回应。

要获得剩余结果,请执行相同的确切呼叫,但将pageToken设置为您收到的令牌。


这是三个tokes

  • pageToken
  • 的nextPageToken
  • prevPageToken
  • 也可以使用设置最大页面大小

    maxResults = 50 {允许值1至50}

    如果你在页面1中,你将不会得到prevPageToken

    但你得到nextPageToken

    将此令牌传递给下一个请求

    pageToken = {nextPageToken从上一个请求获取}

    这样你可以导航到下一个页面试试YourSelf

    编辑

    好的,其他情况

    如果你在任何其他页面不是冷杉或最后那么将有所有这些值

  • pageToken ='有些值'
  • nextPageToken ='有些值'
  • prevPageToken ='有些值'
  • @Manoj:如果你在最后一页,你可以在下面找到你的答案

  • pageToken ='有些值'
  • nextPageToken ='有些值'
  • prevPageToken = null

  • 这是使用Python Youtube Client Lib在python中创建的一个小例子。这也借用了youtube API示例中的样板设置

    """ Pull All Youtube Videos from a Playlist """
    
    from apiclient.discovery import build
    from apiclient.errors import HttpError
    from oauth2client.tools import argparser
    
    
    DEVELOPER_KEY = "YOURKEY HERE"
    YOUTUBE_API_SERVICE_NAME = "youtube"
    YOUTUBE_API_VERSION = "v3"
    
    def fetch_all_youtube_videos(playlistId):
        """
        Fetches a playlist of videos from youtube
        We splice the results together in no particular order
    
        Parameters:
            parm1 - (string) playlistId
        Returns:
            playListItem Dict
        """
        youtube = build(YOUTUBE_API_SERVICE_NAME,
                        YOUTUBE_API_VERSION,
                        developerKey=DEVELOPER_KEY)
        res = youtube.playlistItems().list(
        part="snippet",
        playlistId=playlistId,
        maxResults="50"
        ).execute()
    
        nextPageToken = res.get('nextPageToken')
        while ('nextPageToken' in res):
            nextPage = youtube.playlistItems().list(
            part="snippet",
            playlistId=playlistId,
            maxResults="50",
            pageToken=nextPageToken
            ).execute()
            res['items'] = res['items'] + nextPage['items']
    
            if 'nextPageToken' not in nextPage:
                res.pop('nextPageToken', None)
            else:
                nextPageToken = nextPage['nextPageToken']
    
        return res
    
    if __name__ == '__main__':
      # comedy central playlist, has 332 video
      # https://www.youtube.com/watch?v=tJDLdxYKh3k&list=PLD7nPL1U-R5rDpeH95XsK0qwJHLTS3tNT
      videos = fetch_all_youtube_videos("PLD7nPL1U-R5rDpeH95XsK0qwJHLTS3tNT")
    

    视频将成为连接到第一个列表的所有视频的列表。 它将继续提取,直到它将所有视频分成50个分页。其他语言也可以采用类似的方法。

    在列表中将会有所有的个人视频元数据和订单

    链接地址: http://www.djcxy.com/p/28949.html

    上一篇: Retrieve all videos from youtube playlist using youtube v3 API

    下一篇: How to embed youtube videos as playlist