【问题标题】:YouTube API v3 returns truncated watch historyYouTube API v3 返回截断的观看记录
【发布时间】:2015-04-12 09:03:15
【问题描述】:

我可以通过 YouTube v3 数据 API 访问我的观看历史记录,但它只返回我最近的 30 个视频(尽管我在 YouTube.com 上查看观看历史记录时会看到更多视频)。

然后当我看另一个视频时,它返回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 只允许您在某些端点返回 1,000 个帖子。其他人可能是日期驱动的(这可能解释了为什么您只能看到一些历史记录并且数量不定)。

标签: python youtube-api youtube-data-api


【解决方案1】:

更新:自 2016 年 9 月 15 日起,watchHistory 不再以任何身份提供,因此很遗憾,现在这已无关紧要。

这似乎是 2013 年最初报告的已知错误。在 Google 代码线程中解释了完全相同的行为:https://code.google.com/p/gdata-issues/issues/detail?id=4642

“我得到了结果,但就像一些海报一样,它们是最近的视频(可能是一天的价值)。我似乎找不到任何有关检索时间限制的文档。任何人都找到了解决方法或想通了历史可用多长时间?” (最近对该主题的评论)

在 Google 决定解决此问题之前,我似乎很不走运。希望有人证明我(以及该 Google 代码线程中的其他人)是错误的。

【讨论】:

  • 太糟糕了,你有没有找到其他方法来获取用户的观看历史记录 Mike?
  • 我不确定它是否还在工作,但我曾经成功地从命令行调用 youtube-dl :ythistory。您也可以查看 Youtube-explode。
猜你喜欢
  • 2020-02-23
  • 2020-11-22
  • 2018-04-09
  • 2015-09-30
  • 2014-11-23
  • 2015-07-24
  • 2015-08-31
  • 2015-07-25
相关资源
最近更新 更多