Fsm*_*smv 26 javascript youtube-api
我正在尝试在我的YouTube API应用程序中获取给定用户的观看视频的完整列表.我想加上所有视频的总持续时间.
当我从历史播放列表中获取视频列表时,API将其限制为50个项目.有分页但项目总数为50(不仅仅是每页); 我无法使用它出现的API访问更多数据.
有没有办法在没有数据上限的情况下获得此播放列表?我希望有另一种方法(使用API)或没有API的方法.我知道YouTube会存储这些数据,因为我可以查看我的整个历史记录(远远超过50个视频).
我正在使用此代码:
var requestOptions = {
playlistId: playlistId,
part: 'snippet',
maxResults: 50
};
gapi.client.youtube.playlistItems.list(requestOptions);
Run Code Online (Sandbox Code Playgroud)
playlistId我从gapi.client.youtube.channels.list请求中获取的历史播放列表的ID 在哪里.
编辑(2017):我想澄清一下,我总是打算下载自己的历史记录,只是出于兴趣,看看我花了多少时间观看视频.我仍然无法做到这一点.
Zv_*_*oDD 15
我刚刚为此任务编写了一个刮刀(在Python 2.7(更新为3.5)和Scrapy中).无官方API,它使用登录的会话cookie和html解析.默认情况下转储到SQLite. https://github.com/zvodd/Youtube-Watch-History-Scraper
它是如何完成的:基本上它打开了网址
https://www.youtube.com/feed/history'
Run Code Online (Sandbox Code Playgroud)
使用从Chrome获取的有效(登录)会话Cookie.为名称,视频(网址),频道/用户,描述,长度绘制所有视频条目.然后它找到页面底部的按钮,其属性为data-uix-load-more-href,其中包含指向下一页的链接,如:
"/browse_ajax?action_continuation=1&continuation=98h32hfoasau0fu928hf2hf908h98hr%253D%253D&target_id=item-section-552363&direct_render=1"
Run Code Online (Sandbox Code Playgroud)
...从那里重新擦除视频条目并将它们全部转储到sqlite数据库中; 您可以通过任何字段(名称,长度,用户,描述等)搜索条目.
因此,在他们更改其Feed /历史记录页面之前,它是可行的并且已完成.我甚至可以更新它.
vol*_*ron 14
API目前仅检索Watch History的最后两周.有关详细信息,请参阅报告的错误问题:https://code.google.com/p/gdata-issues/issues/detail?id = 4642
注意: 此处有一个类似的问题:YouTube API v3会返回截断的观看记录
虽然目前仅使用 YouTube API 还无法做到这一点,但有一种(尽管稍微复杂)方法可以计算您的观看时间):
function execute() {
return gapi.client.youtube.videos.list({
"part": [
"contentDetails"
],
"id": [
"VIDEO IDs"
],
"fields": "items(contentDetails(duration))"
})
Run Code Online (Sandbox Code Playgroud)
(使用YouTube API Explorer创建的代码)
注意:您可能需要将视频 ID 列表分解为更小的列表(我不得不这么做),否则 API 可能会拒绝该请求。正如 [stvar 在评论中指出的] ID 列表最大长度是 50,所以这是列表的最大长度。(全面披露:我使用 Python 发送请求)
最好的部分是我不认为这实际上违反了任何服务条款。
| 归档时间: |
|
| 查看次数: |
24782 次 |
| 最近记录: |