【问题标题】:insert video into a playlist with youtube api v3使用 youtube api v3 将视频插入播放列表
【发布时间】:2014-01-06 04:12:04
【问题描述】:

嘿,所以我对 youtube api 相当熟悉 .. 我知道如何阅读频道和播放列表以及获取我认为重要的任何相关视频信息 我正在使用 php 来完成所有这些工作,但为了确保我对每个请求/响应的工作方式有正确的认识,我在浏览器中使用 API 资源管理器进行了尝试

现在我正在尝试将视频插入到我刚刚创建的播放列表中(也通过 API),但我在弄清楚我的请求是如何不正确形成时遇到了一些麻烦

这是请求

POST https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  Bearer ya29.1.AADtN_WT2TRZzH1t86nVlX26z9WPp-gnDTxVHGvdQ6xx0vyTzmkYeXkLdJerwllLzF_a
X-JavaScript-User-Agent:  Google APIs Explorer

{
  "snippet": {
    "playlistId": "PL8hD12HFC-nuswc21_e64aPAy9B25sEH7",
    "resourceId": {
      "videoId": "KMGuyGY5gvY"
    }
  }
} 

这是回复

400 Bad Request

- Show headers -

{
 "error": {
  "errors": [
   {
     "domain": "youtube.playlistItem",
     "reason": "invalidResourceType",
     "message": "Resource type not supported."
   }
  ],
   "code": 400,
   "message": "Resource type not supported."
 }
}

播放列表是我使用 API Explorer 创建的可公开查看的空播放列表,可通过标准 youtube 网站查看。 该视频是从 youtube 上随机选择的...尝试了一些,认为这可能是视频的特定问题,但没有运气..我已打开 OAuth 并且正在使用经过验证的 youtube 合作伙伴帐户

但是我似乎可以弄清楚为什么不支持资源类型我已经环顾网络以及左侧的答案,但没有发现我做错了什么......对于这个问题的任何帮助将不胜感激 因为我现在有点卡住了

【问题讨论】:

标签: youtube youtube-api


【解决方案1】:

您的 resourceId 不完整,因为它没有向 API 指明如何解释 videoId 参数。尝试设置resourceId 的kind 属性,如下所示:

  "snippet": {
    "playlistId": "PL8hD12HFC-nuswc21_e64aPAy9B25sEH7",
    "resourceId": {
      "kind": "youtube#video",
      "videoId": "KMGuyGY5gvY"
    }
  }

这样,API 将知道在哪个“域”(可以这么说)中找到您发送的字符串所标识的资源。

【讨论】:

  • 太棒了,谢谢 .. 如果我需要将一种类型定义为 youtube#video,因为我认为 youtube 视频将是唯一可以添加到播放列表中的东西,所以还有哪些其他类型可以接受?
【解决方案2】:

这将有助于构建资源ID

def add_video_to_playlist(videoID,playlistID):
    youtube = get_authenticated_service() #write it yourself
    add_video_request=youtube.playlistItems().insert(
        part="snippet",
        body={
                'snippet': {
                  'playlistId': playlistID, 
                  'resourceId': {
                          'kind': 'youtube#video',
                      'videoId': videoID
                    }
                #'position': 0
                }
        }
    ).execute()

【讨论】:

    【解决方案3】:

    在Youtube Data Api阅读文档

        $playlistId = 'REPLACE_WITH_YOUR_PLAYLIST_ID_STARTS_WITH_PL';
        $resourceId = new Google_Service_YouTube_ResourceId();
        $resourceId->setVideoId('REPLACE_WITH_VIDEO_ID_YOU_WANT_TO_ADD');
        $resourceId->setKind('youtube#video');
    
    
        $playlistItemSnippet = new Google_Service_YouTube_PlaylistItemSnippet();
        $playlistItemSnippet->setTitle('YOUR_VIDEO_TITLE');
        $playlistItemSnippet->setPlaylistId($playlistId);
        $playlistItemSnippet->setResourceId($resourceId);
    
    
        $playlistItem = new Google_Service_YouTube_PlaylistItem();
        $playlistItem->setSnippet($playlistItemSnippet);
        $playlistItemResponse = $youtube->playlistItems->insert(
            'snippet,contentDetails', $playlistItem, array());</i>
    

    完整的项目可以在我的GitHub获得

    【讨论】:

    猜你喜欢
    • 2015-04-23
    • 2018-06-11
    • 2017-06-25
    • 1970-01-01
    • 2022-01-08
    • 2019-01-26
    • 2018-04-09
    • 2016-07-07
    • 1970-01-01
    相关资源
    最近更新 更多