如何使用 YouTube Data API v3 从频道中提取超过 20000 个视频的元数据?

问题描述 投票:0回答:1

我想使用 Youtube Data API v3 提取频道中所有视频的视频元数据(尤其是标题和发布日期)。目前,我只能使用

playlistItems()
端点提取最后 20000 个视频的详细信息。有没有办法从单个频道提取超过 20000 个视频的元数据?

这是我用来提取 20000 个视频元数据的 Python 代码。

youtube = build('youtube','v3',developerKey= "YOUTUBE_API_KEY")
channelId = "CHANNEL_ID"

# getting all video details
contentdata = youtube.channels().list(id=channelId,part='contentDetails').execute()
playlist_id = contentdata['items'][0]['contentDetails']['relatedPlaylists']['uploads']
videos = [ ]
next_page_token = None

while 1:
    res = youtube.playlistItems().list(playlistId=playlist_id,part='snippet',maxResults=50,pageToken=next_page_token).execute()
    videos += res['items']
    next_page_token = res.get('nextPageToken')
    if next_page_token is None:
        break

# getting video id for each video
video_ids = list(map(lambda x:x['snippet']['resourceId']['videoId'], videos))

解决此问题的方法可以是强制 API 从频道中提取超过 20000 个视频的元数据,也可以指定视频上传的时间段。这样,代码可以在多个时间段内一次又一次地运行,以提取所有视频的元数据。

python youtube youtube-api youtube-data-api
1个回答
0
投票

YouTube 数据 API v3 在从频道提取视频元数据时存在一定的限制。您在 playlistItems() 端点方面遇到的限制与 YouTube 管理频道视频数据的方式有关。

您可以考虑:

播放列表中的视频:playlistItems() 端点旨在从播放列表中检索视频,包括频道的“上传”播放列表。正如您提到的,默认情况下,它最多只能获取 20,000 个视频。

分页:要访问超过 20,000 个视频,您需要在请求中使用 pageToken 参数来实现分页。这允许您检索下一组视频。但是,即使使用分页,您仍然仅限于播放列表中包含的视频。

频道内容限制:频道可以包含比这 20,000 个限制更多的视频。 API 限制涉及通过播放列表访问视频。要访问较旧的视频,您可能需要使用不同的方法。

其他方法:您还可以使用搜索端点使用各种过滤器搜索视频,例如按频道 ID、发布日期或其他条件。这可以帮助您访问超过 20,000 个限制的视频。

历史数据:请记住,检索较旧的视频可能无法提供所有历史元数据,并且数据可能仅限于 YouTube 通过 API 提供的数据。

YouTube 分析:要获得更广泛的历史数据和详细分析,您可能需要考虑 YouTube 分析或 YouTube 内容管理器,它们可以提供对频道视频统计数据的更深入的见解。

© www.soinside.com 2019 - 2024. All rights reserved.