当前位置: 首页 > 知识库问答 >
问题:

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

乜胜泫
2023-03-14

我正在使用youtube v3 API检索播放列表的视频,并通过此链接获得50个项目,没有任何问题:-

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet

但是视频数是100,我只有50个。我如何获得接下来的50个项目?我尝试了start index,但它不适用于v3 API。感谢任何帮助。

共有3个答案

席俊驰
2023-03-14

这是一个使用python Youtube客户端库的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。在其他语言中也可以采用类似的方法。

在列表中,将显示所有单独的视频元数据和顺序

李烨
2023-03-14

有三个托克

  1. 页面到标记
  2. 下一页页到标记
  3. 上一页页到克

此外,您还可以使用设置最大页面大小

max结果=50{允许值1到50}

如果你在第1页,你不会得到上一页Token

但是你得到了nextPageToken

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

pageToken={nextPageToken从上次请求获取}

这样你就可以导航到下一页试试你自己

好的,对于其他方案

如果你在首页,那么

  1. pageToken = 'Some value'
  2. nextPageToken = 'Some value'
  3. 上一页页要标记 = 空

如果你不在第一页也不在最后一页

  1. pageToken = 'Some value'
  2. nextPageToken = 'Some value'
  3. 上一页页标记 = '某些值'

@Manoj:你可以在下面找到你的答案

如果你在最后一页

    < li>pageToken = '某些值' < li>nextPageToken = null < li>prevPageToken = '某个值'

甚至场也可能不存在。

陈法
2023-03-14

YouTube数据API v3结果将分页。因此,您需要为其他人获得下一页的结果。

基本上在响应中你有下一个PageToken。

要获得其余结果,请执行相同的调用,但将pageToken设置为您收到的令牌。

 类似资料:
  • 我很困惑。据我所知,我完全遵循这些例子。也许我遗漏了一个参数,但我找不到它是什么。 控制台响应没有项目,但我有3个公共播放列表。 [Log]对象(learnadaapi.html,第68行) etag: “\”m2yskBQFythfE4irbTIeOgYYfBU/Rk41fm-2TD0VG1yv0-bkUvcBi9s\“” 项目: [] (0) 类型:“youtube#channelList响应

  • 问题内容: “ googleapis”:“ ^ 16.1.0” 我有一个播放列表,其中有两个视频。如何获得视频ID? 我尝试了这个: 执行代码后,我收到以下消息:https : //gist.github.com/SergeyBondarenko/ea6a2aad546ded32e4a9b3cf53228fef 而且只有播放列表ID: 我在对象内部没有属性: 据我了解,该属性必须包含结果,如以下示

  • 是否可以从webview播放youtube视频,就像我从浏览器访问youtube网站时视频开始播放时一样,它在全屏播放视频。 以下是我到目前为止的代码:

  • 我是YouTube频道的内容所有者。当我从YouTube网页生成视频报告时,我得到的是304k总视频的结果。但是当我使用YouTube数据API使用此处讨论的方法查询如何使用API v3列出YouTube频道的所有上传视频(URL)时?,我得到的计数较少(~270k)。当我手动查找时,其中一些丢失的视频是从YouTube中删除的视频。 当我查询API时,其他视频丢失的原因可能是什么?是因为它们可能

  • 我正在尝试从播放列表中下载所有视频: 我使用youtube-dl进行此操作,命令如下: 但这只下载第一个视频。不知道我做错了什么。

  • 我现在一直在努力使用Youtube的API v3,但我无法让它按照我想要的方式工作。我的目标是将选定播放列表中的最新视频加载到我的网站上。问题是,在我的回答中,我只有最老的视频。 要加载播放列表,我请求以下API URI:https://www.googleapis.com/youtube/v3/playlistItems 下面是一个请求的例子(点击执行即可):http://developers