【问题标题】:YouTube API v3: Liking a video in PythonYouTube API v3:用 Python 点赞视频
【发布时间】:2012-11-07 18:46:13
【问题描述】:

我需要能够通过新的 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">

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

提前致谢, 贾斯汀

更新

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

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()

【问题讨论】:

    标签: python youtube-api


    【解决方案1】:

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

    正确的调用是playlistItems.insert()(即发给https://www.googleapis.com/youtube/v3/playlistItems的POST),请求正文如下:

    "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,例如,将视频添加为收藏夹或将其添加到帐户的稍后观看列表中。该代码与“喜欢”视频的代码相同。

    【讨论】:

    • 感谢您的快速回复杰夫!我让它工作得很好,并将我的代码发布为问题本身的更新。
    • 另外,值得注意的是,我们在文档 (developers.google.com/youtube/v3/docs/playlistItems/insert) 中没有这样的示例,因为直到最近才返回相关播放列表的整个列表。我刚刚用 Python 编写了一个完整的工作示例,它应该很快就会添加到文档中。
    猜你喜欢
    • 2013-06-12
    • 2021-11-03
    • 2017-04-07
    • 2016-08-27
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 2015-04-17
    相关资源
    最近更新 更多