无法检测YouTube频道新视频上传,调用API遇400错误求助
YouTube API 400错误:无效参数问题解决
错误原因
你触发的HttpError 400是因为传入的channelId参数格式错误——你用的@some-name-xyz是频道的自定义用户名(Handle),但YouTube Data API要求channelId必须传入官方的频道ID(格式为UC开头的字符串,比如UC1234567890abcdefghijkl)。
修复方案
1. 获取官方频道ID
有两种方式获取:
- 手动获取:打开频道主页,查看页面源代码,搜索
channelId即可找到对应的ID字符串; - 用API自动获取:通过
channels.list接口根据用户名查询,代码如下:
from googleapiclient.discovery import build api_key = "your-api-key" youtube = build('youtube', 'v3', developerKey=api_key) # 通过频道用户名(带@)查询ID resp = youtube.channels().list( part="id", forHandle="@some-name-xyz" ).execute() channel_id = resp['items'][0]['id'] print(f"频道ID:{channel_id}")
2. 更新原代码
将原代码中的channel_id替换为获取到的官方ID,修改后的核心代码:
# 替换为正确的频道ID channel_id = "UCxxxxxxxxx" search_response = youtube.search().list( part="snippet", channelId=channel_id, maxResults=1, order="date", type="video" ).execute()
优化建议
如果要长期监测新视频,推荐使用activities.list接口(指定channelId和part="snippet,contentDetails"),或者添加publishedAfter参数(传入最近的时间戳),过滤出指定时间后上传的视频,减少API请求开销。
内容的提问来源于stack exchange,提问作者MsA
相关产品推荐
相关产品推荐

