Youtube Data API v3 获取完整的 watchHistory
Youtube Data API v3 get full watchHistory
我试图从 YouTube 转储观看历史记录,但 playlistItems().list returns 我只有 163 个最新视频:
{u'etag': u'"F9iA7pnxqNgrkOutjQAa9F2k8HY/6lMoi7x7VY9xj1dR34GM6rOPfMM"',
u'items': [],
u'kind': u'youtube#playlistItemListResponse',
u'pageInfo': {u'resultsPerPage': 50, u'totalResults': 163},
u'prevPageToken': u'CJYBEAE'}
我的 http://www.youtube.com/feed/history 包含超过 163 个视频。
我已尝试使用 pageToken 参数并对其进行分页,但 playlistItemListResponse 仍受限于 163 个项目。
有什么方法可以得到完整的历史记录吗?另一种分页方式?
我现在最好的选择是基于 selenium 的脚本和用户操作模拟。 =)
我正在使用修改后的 "Retrieve my uploads" 示例:
# Auth here
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
http=credentials.authorize(httplib2.Http()))
channels_response = youtube.channels().list(mine=True, part="contentDetails")\
.execute()
for channel in channels_response["items"]:
history_list_id = channel["contentDetails"]["relatedPlaylists"]["watchHistory"]
playlistitems_list_request = youtube.playlistItems().list(
playlistId=history_list_id,
part="snippet",
maxResults=50)
while playlistitems_list_request:
playlistitems_list_response = playlistitems_list_request.execute()
for playlist_item in playlistitems_list_response["items"]:
title = playlist_item["snippet"]["title"]
video_id = playlist_item["snippet"]["resourceId"]["videoId"]
print "%s (%s)" % (title, video_id)
playlistitems_list_request = youtube.playlistItems().list_next(
playlistitems_list_request, playlistitems_list_response)
我试图从 YouTube 转储观看历史记录,但 playlistItems().list returns 我只有 163 个最新视频:
{u'etag': u'"F9iA7pnxqNgrkOutjQAa9F2k8HY/6lMoi7x7VY9xj1dR34GM6rOPfMM"',
u'items': [],
u'kind': u'youtube#playlistItemListResponse',
u'pageInfo': {u'resultsPerPage': 50, u'totalResults': 163},
u'prevPageToken': u'CJYBEAE'}
我的 http://www.youtube.com/feed/history 包含超过 163 个视频。
我已尝试使用 pageToken 参数并对其进行分页,但 playlistItemListResponse 仍受限于 163 个项目。
有什么方法可以得到完整的历史记录吗?另一种分页方式?
我现在最好的选择是基于 selenium 的脚本和用户操作模拟。 =)
我正在使用修改后的 "Retrieve my uploads" 示例:
# Auth here
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
http=credentials.authorize(httplib2.Http()))
channels_response = youtube.channels().list(mine=True, part="contentDetails")\
.execute()
for channel in channels_response["items"]:
history_list_id = channel["contentDetails"]["relatedPlaylists"]["watchHistory"]
playlistitems_list_request = youtube.playlistItems().list(
playlistId=history_list_id,
part="snippet",
maxResults=50)
while playlistitems_list_request:
playlistitems_list_response = playlistitems_list_request.execute()
for playlist_item in playlistitems_list_response["items"]:
title = playlist_item["snippet"]["title"]
video_id = playlist_item["snippet"]["resourceId"]["videoId"]
print "%s (%s)" % (title, video_id)
playlistitems_list_request = youtube.playlistItems().list_next(
playlistitems_list_request, playlistitems_list_response)