2
我可以通過YouTube v3數據API訪問我的觀看記錄,但它只會返回我最近的30個視頻(儘管在YouTube上觀看觀看記錄時我會看到更多視頻。 COM)。YouTube API v3會返回截斷的觀看記錄
然後,當我看另一個視頻時,它返回31.當我看另一個,32.如果它可以返回超過30,爲什麼它本來沒有返回更多?我知道API可能有限制,但爲什麼從30開始增長呢?而使用分頁功能,實際上不應該有限制,對吧?
我一定在做錯事。這裏是我的代碼:
def getWatchHistory(youtube):
playlistId = getWatchHistoryPlaylistId(youtube)
videos = retrieveVideos(youtube, playlistId);
return videos # Only returns 30, 31, 32 videos, etc. though I have many more in my History
def getWatchHistoryPlaylistId(youtube):
channels_response = youtube.channels().list(
part="contentDetails",
mine=True,
).execute()
channel = channels_response["items"][0]
playlistId = channel["contentDetails"]["relatedPlaylists"]["watchHistory"]
return playlistId
def retrieveVideos(youtube, playlistId, nextPageToken=None):
# Search the specified playlist and list all videos
playlistItems_response = youtube.playlistItems().list(
part="snippet,contentDetails",
playlistId=playlistId,
maxResults=50,
pageToken=nextPageToken
).execute()
results = []
for x in playlistItems_response["items"]:
videoTitle = x["snippet"]["title"]
videoId = x["contentDetails"]["videoId"]
videoSpec = videoId + ": " + videoTitle
print 'adding to results: ' + videoSpec
results.append(videoSpec)
if ("nextPageToken" in playlistItems_response):
pageToken = playlistItems_response["nextPageToken"]
results.extend(retrieveVideos(youtube, playlistId, pageToken));
return results
else:
return results
許多在其API中實現分頁的網站仍然會施加限制。 Twitter只允許你在特定的終端上發送1000個帖子。其他可能是由日期驅動的(這可能是爲什麼你只看到你的一些歷史記錄和一個可變數字的可能解釋)。 – ceejayoz 2015-02-11 20:21:21