在这里的一个答案中:
Youtube Data API v3 PlaylistItems更新不适用于Watch Later播放列表
有一项更改,我无法使用YT API v3中的playlistitems.list从我的频道中重温"稍后观看"和"观看历史记录"播放列表:https:
//developers.google.com/youtube/v3/revision_history#september-15-2016
TLDR:
"请求检索频道观看历史记录的播放列表详细信息(playlists.list)或观看稍后的播放列表将在2016年9月12日之后返回空列表.在这些播放列表中检索播放列表项目(playlistItems.list)的请求也将返回在此之后的空列表.对于新值,HL和WL,以及您的API客户端可能已存储的任何观看记录或观看以后的播放列表ID都是如此."
除了手动抓取之外,还有其他任何方式以编程方式获取我的Watch Later播放列表吗?
(通过手动抓取,我的意思是遍历http登录,进入我的播放列表并手动解析DOM以获取列表中视频的链接和片段.)
谢谢
我想知道这是否可以在v3中使用(我知道它可以用v2)?
我已经尝试使用watch_later作为id和mine=true播放列表请求.指定时,watch_later播放列表不会在通用播放列表列表结果中返回mine=true.
我有代码从我的youtube watchLater播放列表中删除一个项目.大约两周前这个工作正常 - 现在我从youtube收到了404错误.
这是请求和响应的顺序(当然,剥离了身份验证详细信息):
获取播放列表项请求:
获取播放列表项目响应:
{
"items": [
{
"id": "V0xsdWU1RUlKTHNjb3hNZ0VrRVpmcV9BLjU2QjQ0RjZEMTA1NTdDQzY="
}
]
}
Run Code Online (Sandbox Code Playgroud)
删除请求:
删除回复:
{
"error": {
"errors": [
{
"domain": "youtube.playlistItem",
"reason": "playlistItemNotFound",
"message": "Playlist item not found.",
"locationType": "parameter",
"location": "id"
}
],
"code": 404,
"message": "Playlist item not found."
}
}
Run Code Online (Sandbox Code Playgroud)
当我通过youtube网站查看播放列表时,我可以看到该项目尚未删除.
api的文档表明我正在做的一切正确.在调试时我注意到播放列表项id是base64编码的字符串; 我使用编码和解码的字符串获得404.
这个问题不仅限于一个特定的项目; 看来我放在watchLater播放列表中的任何项目都无法删除.从其他播放列表中删除项目时没有任何问题; 只有watchLater有这个问题.
有谁知道发生了什么事?
编辑(2016年10月):谷歌表示,Watch Later播放列表已被弃用.请参阅https://developers.google.com/youtube/v3/revision_history
自 2016 年 9 月 15 日 youtube APIv3修订以来,无法找到稍后观看列表 idchannels.contentDetails.relatedPlaylists.watchLater,因为它包含固定字符串WL。
修订稿指出:
...
频道资源的 contentDetails.latedPlaylists.watchHistory 和 contentDetails.latedPlaylists.watchLater 属性现在分别包含所有频道的 HL 和 WL 值。
需要明确的是,这些属性仅对检索有关用户自己的频道的数据的授权用户可见。这些属性始终包含值 HL 和 WL,即使对于检索有关用户自己的频道的数据的授权用户也是如此。因此,无法通过 API 检索观看历史记录和稍后观看播放列表 ID。
...
最后一部分非常有趣,因为我无法想象如何获取我的 WL id,因此我无法列出我稍后保存的视频。
我还检查了reddit和其他 SO 问题(一、二、三、四),但没有成功。他们通常在提到的修订之前建议使用 v2 或 v3。
问题:如何获取稍后观看视频的 id?