3

我需要能够通过新的 YouTube API v3 为经过身份验证的用户按 ID“喜欢”特定视频。我正在关注此处的活动/插入指南:

https://developers.google.com/youtube/v3/docs/activities/insert

此示例代码可以很好地向我的频道发布公告,但是当我尝试修改正文以形成类似的声明时,我不断收到 400 错误。这是我从设置正文 dict 的原始示例更改的内容:

body = {}
body["snippet"] = dict(type='like')
body["contentDetails"] = dict(
    like=dict(
        resourceId=dict(
            kind="youtube#video",
            videoId='_M9khs87xQ8'
        )
    )
)

根据以下文档,这些字段似乎设置正确。

https://developers.google.com/youtube/v3/docs/activities

但是我一直像这样得到 400 HttpEror

<HttpError 400 when requesting https://www.googleapis.com/youtube/v3/activities?alt=json&part=snippet%2CcontentDetails returned "Bad Request">

我也尝试过调整它以收藏视频动作,但得到相同的结果。我是否缺少一些必填字段?这是创建类似操作的正确端点吗?

在此先感谢,贾斯汀

更新

杰夫已经回答了这个问题,工作解决方案发布在下面

for item in youtube.channels().list(part='contentDetails', mine=True).execute().get('items', []):
    playlists = item['contentDetails'].get('relatedPlaylists', {})
    if 'likes' in playlists:
        body = {
            "snippet": {
                "playlistId": playlists['likes'],
                "resourceId": {
                    "kind": 'youtube#video',
                    "videoId": '_M9khs87xQ8'
                }
            }
        }
        youtube.playlistItems().insert(body=body, part='snippet').execute()
4

1 回答 1

3

要“喜欢”v3 中的视频,您需要将其添加到特定的播放列表 ID。(您还可以阅读此播放列表以获取您之前“喜欢”的视频列表。)

正确调用 make 是一个playlistItems.insert()(即 POST 到https://www.googleapis.com/youtube/v3/playlistItems),请求正文如下:

"body": {
  "snippet": {
    "playlistId": LIKED_LIST_ID,
    "resourceId": {
      "kind": "youtube#video",
      "videoId": VIDEO_ID
    }
  }
}

要插入的两个东西是LIKED_LIST_IDVIDEO_IDVIDEO_ID希望应该是不言自明的。LIKED_LIST_ID对应于发出 channels.list(part=contentDetails) 请求时返回的播放列表 ID。响应看起来像

"contentDetails": {
  "relatedPlaylists": {
    "likes": "LL0c49w3rVoFjTkQVbyRs8Sg",
    "favorites": "FL0c49w3rVoFjTkQVbyRs8Sg",
    "uploads": "UU0c49w3rVoFjTkQVbyRs8Sg",
    "watchHistory": "HL0c49w3rVoFjTkQVbyRs8Sg",
    "watchLater": "WL0c49w3rVoFjTkQVbyRs8Sg"
  }
}

您可以插入其中一些其他播放列表 ID,例如,将视频添加为收藏夹或将其添加到帐户的稍后观看列表中。该代码与“喜欢”视频的代码相同。

于 2012-11-19T19:39:06.343 回答