使用youtube api v3将视频插入播放列表

时间:2013-12-18 05:37:41

标签: youtube youtube-api

嘿所以我对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合作伙伴

然而,我似乎可以弄清楚为什么资源类型不受支持我已经环顾网络以及左边的答案而没有找到我做错了什么..任何有关此问题的帮助将不胜感激  因为我现在有点卡住了

3 个答案:

答案 0 :(得分:14)

您的resourceId尚未完成,因为它无法向API确定如何解释videoId参数。尝试设置kind的{​​{1}}属性,如下所示:

resourceId

这样,API就会知道'域' (可以这么说)找到你发送的字符串所标识的资源。

答案 1 :(得分:2)

这将有助于构建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()

答案 2 :(得分:0)

阅读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

提供完整的项目