使用YouTube Data API v3获取博主视频发布时间遇KeyError问题求助
问题根源与解决方案
核心问题是你把频道用户名(@RemusNeo)当成了channel_id传给API,YouTube Data API v3不接受直接用用户名作为channel_id参数,所以返回的响应里没有items字段,触发KeyError: 'items'。
下面是完整的修复步骤和代码:
1. 通过用户名获取正确的频道ID
调用channels.list接口,用forHandle参数传入用户名(@后面的部分,即RemusNeo),就能拿到频道ID:
import googleapiclient.discovery API_KEY = '你的API密钥' YOUTUBE_API_SERVICE_NAME = 'youtube' YOUTUBE_API_VERSION = 'v3' youtube = googleapiclient.discovery.build( YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=API_KEY) # 通过用户名获取频道ID def get_channel_id(handle): request = youtube.channels().list( part='id', forHandle=handle ) response = request.execute() if not response.get('items'): raise ValueError(f"找不到用户名 {handle} 对应的频道") return response['items'][0]['id'] channel_id = get_channel_id('RemusNeo') print(f"正确的频道ID: {channel_id}")
2. 获取频道的上传列表ID
每个YouTube频道都有一个专门的上传播放列表,包含所有公开视频,需要先拿到这个播放列表ID:
def get_upload_playlist_id(channel_id): request = youtube.channels().list( part='contentDetails', id=channel_id ) response = request.execute() return response['items'][0]['contentDetails']['relatedPlaylists']['uploads'] upload_playlist_id = get_upload_playlist_id(channel_id)
3. 获取最近50个视频的发布时间
调用playlistItems.list接口,指定上传列表ID,请求snippet部分就能直接拿到视频的发布时间:
def get_recent_videos(playlist_id, max_results=50): videos = [] request = youtube.playlistItems().list( part='snippet', playlistId=playlist_id, maxResults=max_results ) while request: response = request.execute() for item in response['items']: video_info = { 'title': item['snippet']['title'], 'published_at': item['snippet']['publishedAt'] } videos.append(video_info) # 处理分页(如果视频超过50个) request = youtube.playlistItems().list_next(request, response) return videos recent_videos = get_recent_videos(upload_playlist_id) # 打印前5个视频的发布时间示例 for video in recent_videos[:5]: print(f"{video['title']}: {video['published_at']}")
额外说明
- 之前查询单个视频详情正常,是因为视频ID直接有效,不需要转换;订阅数查询失败,同样是因为用了错误的channel_id。
- 注意API配额:
channels.list和playlistItems.list每次调用各消耗1个配额,确保你的API配额足够支撑调用。
内容的提问来源于stack exchange,提问作者Baseult Private
相关产品推荐
相关产品推荐

