无法将 playlistItem 插入到播放列表的特定位置

Posted

技术标签:

【中文标题】无法将 playlistItem 插入到播放列表的特定位置【英文标题】:Cannot insert playlistItem into playlist at specific position 【发布时间】:2018-12-04 14:36:37 【问题描述】:

我正在尝试将 youtube 视频插入到我的播放列表中的特定位置。根据the docs,我应该可以通过设置position 属性。但是,此设置似乎无济于事。使用以下代码 sn-p,不会引发错误并插入视频。唯一的问题是它被插入到播放列表的顶部。 position 属性被忽略。

await google.youtube('v3').playlistItems.insert(
  auth,
  part: 'snippet',
  resource: 
    snippet: 
      playlistId,
      position: 69,
      resourceId: 
        kind: 'youtube#video',
        videoId: 'M7FIvfx5J10',
      ,
    ,
  ,
)

我尝试将position 放在对象的不同位置,但没有效果。我还在官方 google api 问题跟踪器上提交了一个问题,但我没有得到任何回复。我用的是官方的googleapis node package。

编辑:

如果我尝试插入 update,则更新请求会抛出 403 playlistItemsNotAccessible。这让我认为这可能是一个(记录不充分的)权限问题。我的作用域是[ 'https://www.googleapis.com/auth/youtube' ]

编辑 2:

插入正在使用position 值。如果我输入position: -12,我会得到: Error: Invalid value for UnsignedInteger: -12.

【问题讨论】:

插入视频后尝试使用PlaylistItems: update。如果它有效,那么您现在可以将其作为解决方法。 感谢 MαπμQμαπkγVπ.0 的评论。如果我尝试更新,我会收到403 playlistItemsNotAccessible playlistItemsNotAccessible 仅表示请求未正确授权更新指定的播放列表项。授权流程可以参考this documentation。 @MαπμQμαπkγVπ.0 你知道我将如何授权这种类型的行动吗?我尝试使用范围 [ 'https://www.googleapis.com/auth/youtube', 'https://www.googleapis.com/auth/youtubepartner', 'https://www.googleapis.com/auth/youtube.upload' ],但它仍然不起作用。 【参考方案1】:

尝试在这里测试它Apis explorer 它会为你构建请求体,你可以在你的代码中使用它


 "snippet": 
  "playlistId": "",
  "resourceId": 
   "kind": "youtube#video",
   "videoId": "M7FIvfx5J10"
  ,
  "position": 69
 

完整的request 正文将是这样的


  "kind": "youtube#playlistItem",
  "etag": etag,
  "id": string,
  "snippet": 
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": 
      (key): 
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      
    ,
    "channelTitle": string,
    "playlistId": string,
    "position": unsigned integer,
    "resourceId": 
      "kind": string,
      "videoId": string,
    
  ,
  "contentDetails": 
    "videoId": string,
    "startAt": string,
    "endAt": string,
    "note": string,
    "videoPublishedAt": datetime
  ,
  "status": 
    "privacyStatus": string
  

更新错误


 "error": 
  "errors": [
   
    "domain": "youtube.playlistItem",
    "reason": "playlistItemsNotAccessible",
    "message": "Forbidden"
   
  ],
  "code": 403,
  "message": "Forbidden"
 

请记住,如果您尝试访问与您验证过的频道不同的频道,那么 Youtube api 是基于频道的,您会看到此错误。您尝试添加的播放列表的用户必须对您的应用程序进行身份验证并选择该频道上的播放列表。未经许可,您无法更新其他人的播放列表。

【讨论】:

我拥有播放列表,并且正在使用自己的帐户进行身份验证。 认证时是否选择了正确的频道? @DalmTo 是的,我做到了

以上是关于无法将 playlistItem 插入到播放列表的特定位置的主要内容,如果未能解决你的问题,请参考以下文章

Youtube playlistItems 列表 API 有时有效,有时会抛出 404

Youtube playlistItems 不返回所有项目

Python - youtube.playlistItems().delete() 不适用于 [已删除的视频] (YouTube API v3)

无法将元素插入到列表的向量中

无法将地图列表插入到 Apache Cassandra

无法将视频插入稍后观看 (WL) 播放列表