以下实现了您使用Python YouTube API的要求:
from gdata.youtube import service
USERNAME = 'username@gmail.com'
PASSWORD = 'a_very_long_password'
VIDEO_ID = 'wf_IIbT8HGk'
def comments_generator(client, video_id):
comment_feed = client.GetYouTubeVideoCommentFeed(video_id=video_id)
while comment_feed is not None:
for comment in comment_feed.entry:
yield comment
next_link = comment_feed.GetNextLink()
if next_link is None:
comment_feed = None
else:
comment_feed = client.GetYouTubeVideoCommentFeed(next_link.href)
client = service.YouTubeService()
client.ClientLogin(USERNAME, PASSWORD)
for comment in comments_generator(client, VIDEO_ID):
author_name = comment.author[0].name.text
text = comment.content.text
print("{}: {}".format(author_name, text))
不幸的是,API 将可检索的条目数限制为1000。这是我尝试使用手工制作的GetYouTubeVideoCommentFeed
URL 参数调整版本时遇到的错误:
gdata.service.RequestError: {'status': 400, 'body': 'You cannot request beyond item 1000.', 'reason': 'Bad Request'}
请注意,同样的原则应该适用于检索 API 的其他提要中的条目。
如果你想手工制作GetYouTubeVideoCommentFeed
URL 参数,它的格式是:
'https://gdata.youtube.com/feeds/api/videos/{video_id}/comments?start-index={start_index}&max-results={max_results}'
适用以下限制:start-index <= 1000
和max-results <= 50
。