使用youtubeapiv3将视频插入播放列表



嘿,所以我对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资源管理器创建的空的可公开查看的播放列表,并且可以通过标准youtube网站查看。视频是从youtube上随机选择的。。。尝试了一些,认为这可能是视频的特定问题,但没有运气。。我已经打开了OAuth,并且正在使用一个经过验证的youtube合作伙伴帐户

然而,我似乎能弄清楚为什么不支持资源类型。我在网上浏览了一下,并找到了左边的答案,但没有发现我到底做错了什么。。对这个问题的任何帮助都将不胜感激因为我现在有点卡住了

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

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

这样,API将知道在哪个"域"(也就是说)中查找由您发送的字符串标识的资源。

这将有助于构建resourceID

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

阅读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 上获得

相关内容

  • 没有找到相关文章

最新更新