如何获取我的整个 YouTube 观看历史记录?

新手上路,请多包涵

我正在尝试在我的 YouTube API 应用程序中获取给定用户的完整观看视频列表。我想把所有视频的总时长加起来。

当我从历史播放列表中获取视频列表时,API 将其限制为 50 个项目。有分页,但项目总数为 50(不只是每页);我无法使用它出现的 API 访问更多数据。

有没有什么办法可以在没有数据上限的情况下获得这个播放列表?我希望有另一种方法(使用 API)或一种无需 API 的方法。我知道 YouTube 存储了这些数据,因为我可以查看我的整个历史记录(远远超过 50 个视频)。

我正在使用这段代码:

 var requestOptions = {
    playlistId: playlistId,
    part: 'snippet',
    maxResults: 50
};
gapi.client.youtube.playlistItems.list(requestOptions);

其中 playlistId 是我从 gapi.client.youtube.channels.list 请求中获得的历史播放列表的 ID。

编辑(2017 年): 我想澄清的是,下载我自己的历史记录一直是我的意图,只是为了看看我花了多少时间观看视频。我仍然无法做到这一点。

原文由 Fsmv 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

虽然这目前仅使用 YouTube API 是不可能的,但有一种方法(虽然稍微复杂)可以计算您的观看时间:

  1. 使用 Google Takeout 下载您的观看历史列表作为 JSON 文件。
  2. 不幸的是,JSON 文件不包含视频持续时间,因此下一步是提取视频 ID(“titleURL”对象中“watch?v=”之后的部分
  3. 现在获取您的视频 ID 列表,并向 youtube API 发送一个请求,如下所示:
  function execute() {
    return gapi.client.youtube.videos.list({
      "part": [
        "contentDetails"
      ],
      "id": [
        "VIDEO IDs"
      ],
      "fields": "items(contentDetails(duration))"
    })

(使用 YouTube API Explorer 创建的代码)

注意: 您可能需要将视频 ID 列表分成更小的列表(我必须这样做),否则 API 可能会拒绝该请求。正如 [stvar 在评论中指出的那样] ID 列表的最大长度为 50,因此这是列表的最大长度。 (完全披露:我正在使用 Python 发送请求)

  1. 最后,只需提取持续时间值并将它们相加(尽管这可能不像听起来那么容易)

最好的部分是我不认为这实际上违反了任何服务条款。

原文由 Stefan Makus 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不久前为这个任务写了一个 scraper(在 Python 2.7(更新为 3.5)和 Scrapy 中)。 Sans 官方 API,它使用登录会话 cookie 和 html 解析。默认转储到 SQLite。 https://github.com/zvodd/Youtube-Watch-History-Scraper

它是如何完成的:本质上它打开了 url

 https://www.youtube.com/feed/history'

使用从 Chrome 获取的有效(已登录)会话 cookie。抓取名称、vid(url)、频道/用户、描述、长度的所有视频条目。然后它在页面底部找到属性为 data-uix-load-more-href 的按钮,其中包含指向下一页的链接,类似于:

 "/browse_ajax?action_continuation=1&continuation=98h32hfoasau0fu928hf2hf908h98hr%253D%253D&target_id=item-section-552363&direct_render=1"

…从那里重新抓取视频条目并将它们全部转储到 sqlite 数据库中;您可以按任何字段(名称、长度、用户、描述等)搜索条目。

因此,在他们更改提要/历史页面之前,这是可行的并且已经完成。我什至可能会更新它。

原文由 Zv_oDD 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题