下载字幕总是返回 403

Posted

技术标签:

【中文标题】下载字幕总是返回 403【英文标题】:Downloading captions always returns a 403 【发布时间】:2015-08-19 15:45:19 【问题描述】:

当我使用从 captions.list 端点检索到的 ID 调用 captions.download 端点时,它总是返回 403。例如:

https://www.youtube.com/watch?v=1HRwpwOj4aA

我打电话给captions.list

GET https://www.googleapis.com/youtube/v3/captions?part=id&videoId=1HRwpwOj4aA&key=YOUR_API_KEY

这是回复:

cache-control:  private, max-age=0, must-revalidate, no-transform
content-encoding:  gzip
content-length:  236
content-type:  application/json; charset=UTF-8
date:  Sat, 23 May 2015 17:55:57 GMT
etag:  "dhbhlDw5j8dK10GxeV_UG6RSReM/Rztb3ln4Zb6O07vb7_KSZi2y1NM"
expires:  Sat, 23 May 2015 17:55:57 GMT
server:  GSE
vary:  Origin, X-Origin


 "kind": "youtube#captionListResponse",
 "etag": "\"dhbhlDw5j8dK10GxeV_UG6RSReM/Rztb3ln4Zb6O07vb7_KSZi2y1NM\"",
 "items": [
  
   "kind": "youtube#caption",
   "etag": "\"dhbhlDw5j8dK10GxeV_UG6RSReM/pwH-4wtyQJz0U3l57fA8uKm4e1I\"",
   "id": "kHlUsiuNS4TjB25loauZNXGrjK91I1tEdNyOpTRNA78="
  
 ]

当我使用上面的id调用captions.download时:

GET https://www.googleapis.com/youtube/v3/captions/kHlUsiuNS4TjB25loauZNXGrjK91I1tEdNyOpTRNA78%3D?key=YOUR_API_KEY

这是回复:

403 Forbidden
cache-control:  private, max-age=0
content-encoding:  gzip
content-length:  29
content-type:  text/html; charset=UTF-8
date:  Sat, 23 May 2015 17:59:05 GMT
expires:  Sat, 23 May 2015 17:59:05 GMT
server:  GSE
vary:  Origin, X-Origin

Forbidden

有什么想法可以在这里发生吗?

【问题讨论】:

【参考方案1】:

来自YouTube API docs:

403 Forbidden:与请求关联的权限不可用 足以下载字幕轨道。请求可能不是 正确授权,或者视频订单可能未启用 此标题的第三方贡献。

【讨论】:

从 YouTube 团队获得了一些反馈,显然 captions.download 端点仅适用于您的 google 帐户拥有的视频。它不适用于其他视频。 可以获取字幕,前提是视频所有者启用了第三方对字幕的贡献。例如:- 试试这个 id:TqXDnlamg84o4bX0q2oaHz4nfWZdyiZMOrcuWsSLyPc= 您不能再启用第 3 方字幕贡献 support.google.com/youtube/answer/6052538?hl=en。如果没有它们,您会收到 403“与请求相关的权限不足以下载字幕轨道。请求可能未得到正确授权,或者视频订单可能未启用第三方对此字幕的贡献。”跨度> 【参考方案2】:

而不是 caption download API 有时会返回 403(如果视频没有为此标题启用第三方贡献),您可以使用 youtube.com/api/timedtext

【讨论】:

【参考方案3】:

您在上面写的关于“仅适用于您的 Google 帐户拥有的视频”的内容不是我的经验。我刚刚在我绝对不拥有的视频(关于狗训练)上成功运行了 captions.download - 甚至没有狗。但是,我在here on *** 提到的视频中测试了完全相同的代码,并得到了 403 错误。

所以 no 它并不总是返回 403,有时它会返回 200!试试上面提到的狗视频:

python captions.py --videoid="jBN2_YuTclU" --action="download" --captionid='8S2GjnNfitU5HHoLyTeLxq_W1dP29YRFC8E8vFBUtws='

使用您可能已经拥有的代码here。

它将需要您从某处的 Google 凭据页面下载您的 client_secrets.json,以及您可以从 here 获取的缺失文件 youtube-v3-api-captions.json。该代码会启动一个浏览器,您可以在其中登录以获取 OAuth2 授权。

不过,它适用于某些视频而不适用于其他视频肯定是有原因的。 @Abhishek 可能在上面。错误的评论在那里被投了赞成票。 captions.list 的输出中没有任何内容允许下载字幕的视频和没有明显不同的视频,这可以解释为什么一个有效而另一个无效。如果有人可以在 youtube api 控件中提供哪个 'key':'value' 对,这将很有帮助。

【讨论】:

【参考方案4】:

Status 403 Forbidden 表示没有人有权访问该 URL。例如,如果您的 API 密钥错误,您不应该收到该消息;那应该给状态401未经授权。我会仔细检查网址。

【讨论】:

以上是关于下载字幕总是返回 403的主要内容,如果未能解决你的问题,请参考以下文章

POST 方法总是返回 403 Forbidden

Spring Security 总是返回 403 被禁止,访问被拒绝

登录后 Spring Security 总是返回 403 accessDeniedPage [重复]

授权策略总是返回 403(禁止)-MVC/API

GCP API Gateway JWT 总是返回 403

使用服务帐户上传 Google Drive 总是返回 403(存储配额)