<legend id='mesWZ'><style id='mesWZ'><dir id='mesWZ'><q id='mesWZ'></q></dir></style></legend>

        • <bdo id='mesWZ'></bdo><ul id='mesWZ'></ul>
      1. <i id='mesWZ'><tr id='mesWZ'><dt id='mesWZ'><q id='mesWZ'><span id='mesWZ'><b id='mesWZ'><form id='mesWZ'><ins id='mesWZ'></ins><ul id='mesWZ'></ul><sub id='mesWZ'></sub></form><legend id='mesWZ'></legend><bdo id='mesWZ'><pre id='mesWZ'><center id='mesWZ'></center></pre></bdo></b><th id='mesWZ'></th></span></q></dt></tr></i><div id='mesWZ'><tfoot id='mesWZ'></tfoot><dl id='mesWZ'><fieldset id='mesWZ'></fieldset></dl></div>
        <tfoot id='mesWZ'></tfoot>

        <small id='mesWZ'></small><noframes id='mesWZ'>

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

        How to get my entire YouTube watch history?(如何获取我的整个 YouTube 观看历史记录?)
            • <bdo id='1yK3y'></bdo><ul id='1yK3y'></ul>

              <small id='1yK3y'></small><noframes id='1yK3y'>

                <legend id='1yK3y'><style id='1yK3y'><dir id='1yK3y'><q id='1yK3y'></q></dir></style></legend>
                  <tbody id='1yK3y'></tbody>
                <i id='1yK3y'><tr id='1yK3y'><dt id='1yK3y'><q id='1yK3y'><span id='1yK3y'><b id='1yK3y'><form id='1yK3y'><ins id='1yK3y'></ins><ul id='1yK3y'></ul><sub id='1yK3y'></sub></form><legend id='1yK3y'></legend><bdo id='1yK3y'><pre id='1yK3y'><center id='1yK3y'></center></pre></bdo></b><th id='1yK3y'></th></span></q></dt></tr></i><div id='1yK3y'><tfoot id='1yK3y'></tfoot><dl id='1yK3y'><fieldset id='1yK3y'></fieldset></dl></div>

                  <tfoot id='1yK3y'></tfoot>
                1. 本文介绍了如何获取我的整个 YouTube 观看历史记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

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

                  I'm trying to get a full list of watched videos for a given user in my YouTube API application. I want to add up total duration of all videos.

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

                  When I get the list of videos from history playlist, the API caps it at 50 items. There's pagination but total amount of items is 50 (not just per page); I can't access more data with the API it appears.

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

                  Is there any way I can get this playlist without the data cap? I'm hoping for another method (of using the API) or a way to do it without the API. I know YouTube stores this data because I can view my entire history (far more that 50 videos).

                  我正在使用此代码:

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

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

                  where playlistId is the id of the history playlist I got from a gapi.client.youtube.channels.list request.

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

                  Edit (2017): I want to clarify that it was always my intention to download my own history, just out of interest to see how much time I have spent watching videos. I still have not been able to do this.

                  推荐答案

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

                  I wrote a scraper(in Python 2.7(updated for 3.5) and Scrapy) for this task a while ago. Sans official API, it uses a logged in session cookie and html parsing. Dumps to SQLite by default. https://github.com/zvodd/Youtube-Watch-History-Scraper

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

                  How it's done: essentially it opens the url

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

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

                  with a valid(logged in) session cookie taken from Chrome. Scrapes all video entries for name, vid(url), channel/user, description, length. Then it finds the button at the bottom of the page with the attribute data-uix-load-more-href which contains the link to the next page, something like:

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

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

                  ... re-scrapes the video entries from there and dumps them all into an sqlite database; which you can search entries by any of the fields (name, length, user, description, etc).

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

                  So until they change their feed/history page, it's doable and done. I might even update it.

                  这篇关于如何获取我的整个 YouTube 观看历史记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Pause youtube video, youtube api(暂停 youtube 视频,youtube api)
                  Youtube iframe api not triggering onYouTubeIframeAPIReady(Youtube iframe api 未触发 onYouTubeIframeAPIReady)
                  How can I stop a video with Javascript in Youtube?(如何在 Youtube 中停止使用 Javascript 的视频?)
                  How to call Greasemonkey#39;s GM_ functions from code that must run in the target page scope?(如何从必须在目标页面范围内运行的代码中调用 Greasemonkey 的 GM_ 函数?)
                  How do you mute an embedded Youtube player?(如何使嵌入式 Youtube 播放器静音?)
                  How to get number of video views with YouTube API?(如何使用 YouTube API 获取视频观看次数?)

                2. <legend id='YlPKE'><style id='YlPKE'><dir id='YlPKE'><q id='YlPKE'></q></dir></style></legend>
                  • <bdo id='YlPKE'></bdo><ul id='YlPKE'></ul>
                    <i id='YlPKE'><tr id='YlPKE'><dt id='YlPKE'><q id='YlPKE'><span id='YlPKE'><b id='YlPKE'><form id='YlPKE'><ins id='YlPKE'></ins><ul id='YlPKE'></ul><sub id='YlPKE'></sub></form><legend id='YlPKE'></legend><bdo id='YlPKE'><pre id='YlPKE'><center id='YlPKE'></center></pre></bdo></b><th id='YlPKE'></th></span></q></dt></tr></i><div id='YlPKE'><tfoot id='YlPKE'></tfoot><dl id='YlPKE'><fieldset id='YlPKE'></fieldset></dl></div>
                      <tbody id='YlPKE'></tbody>

                            <tfoot id='YlPKE'></tfoot>
                          • <small id='YlPKE'></small><noframes id='YlPKE'>