You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过YouTube API获取频道指定日期前后发布的视频?

获取YouTube频道指定日期前后的指定数量视频数据

1. 前置条件

  • 拥有Google Cloud平台的API密钥,并已启用YouTube Data API v3
  • 知晓目标频道的channelId(若只有用户名,可通过channels.list端点获取:设置forUsername参数为频道用户名,part设为id)

2. 核心API调用方案

要筛选指定日期前后的视频并批量获取,推荐两个端点,按需选择:

方案一:使用search.list(灵活筛选,配额消耗较高)

该端点直接支持按发布日期筛选,适合精确匹配场景:

  • 必传参数:
    • part: snippet(返回视频标题、发布时间、ID等核心信息)
    • channelId: 目标频道ID
    • type: video(仅返回视频内容)
    • order: date(按发布时间排序,确保优先获取最新/最早的视频)
    • publishedAfter 或 publishedBefore: 符合ISO 8601格式的时间字符串,例如2023-09-04T00:00:00Z(对应2023年9月4日零时UTC)
    • maxResults: 单次请求最多返回50条(API上限)
  • 分页逻辑:因单次最多返回50条,要获取200条需循环请求,每次携带上一次返回的nextPageToken,直到获取满目标数量或无更多数据。

方案二:使用playlistItems.list(配额友好,适合公开上传列表)

如果频道的上传列表是公开的,可先获取频道的上传播放列表ID,再通过该端点筛选:

  1. 调用channels.list,设置part为contentDetails,获取contentDetails.relatedPlaylists.uploads(上传列表ID)
  2. 调用playlistItems.list,参数:
    • part: snippet
    • playlistId: 上传列表ID
    • publishedAfter/publishedBefore: 同上述ISO格式时间
    • maxResults: 50
    • 同样通过nextPageToken分页获取足够数量的视频

3. 示例代码(Python)

以下是使用search.list获取2023年9月4日之后200个视频的示例:

import requests

API_KEY = "你的API密钥"
CHANNEL_ID = "目标频道ID"
TARGET_DATE = "2023-09-04T00:00:00Z"
TARGET_COUNT = 200

videos = []
page_token = None

while len(videos) < TARGET_COUNT:
    url = "https://www.googleapis.com/youtube/v3/search"
    params = {
        "part": "snippet",
        "channelId": CHANNEL_ID,
        "type": "video",
        "order": "date",
        "publishedAfter": TARGET_DATE,
        "maxResults": min(50, TARGET_COUNT - len(videos)),
        "key": API_KEY,
        "pageToken": page_token
    }
    
    response = requests.get(url, params=params)
    data = response.json()
    
    if "items" not in data:
        break  # 无更多数据
    
    videos.extend(data["items"])
    page_token = data.get("nextPageToken")
    
    if not page_token:
        break  # 没有下一页

# 处理获取到的视频数据
for video in videos:
    video_id = video["id"]["videoId"]
    title = video["snippet"]["title"]
    publish_time = video["snippet"]["publishedAt"]
    print(f"视频ID: {video_id}, 标题: {title}, 发布时间: {publish_time}")

4. 注意事项

  • 配额限制:search.list单次请求消耗100配额单位,playlistItems.list仅消耗1单位,频繁调用优先选后者
  • 日期格式:必须严格遵循ISO 8601,例如YYYY-MM-DDTHH:MM:SSZ,Z代表UTC时间
  • 数据完整性:若频道符合条件的视频总数不足目标数量,会返回所有可用视频

内容的提问来源于stack exchange,提问作者BidoTeima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 01:20:15