youtube api中没有返回缩略图

时间:2014-05-01 04:26:43

标签: php youtube-data-api

我尝试使用YouTube服务API V3并遇到了一个我不确定如何继续的问题。

我通过Jquery的Ajax调用我的脚本。没什么了不起的。 传入我想要的视频的ID,然后我去。

脚本是这样的:

session_start();
$return_msg = array();

// ===================================
//  Require Google libraries
// ===================================
set_include_path("../../includes/");
if(!(@require_once('Google/Client.php')))
{
    $return_msg['error'] = 'Unable to includes Google Client Library:<br>'.$e->getMessage();
    return $return_msg;
}
if(!(@require_once('Google/Service/YouTube.php')))
{
    $return_msg['error'] = 'Unable to includes Google YouTube Library:<br>'.$e->getMessage();
    return $return_msg;
}

// ===================================
//  Include Global settings
// ===================================
if(!(@require_once('Global-Settings.php')))
{
    $return_msg['error'] = 'Unable to includes site settings:<br>'.$e->getMessage();
    return $return_msg;
}
$globals = new Globals();

// Set API key
$api_key = $globals->youtube_key;

if(!isset($data['id']))
{
    $return_msg['error'] = 'Unable to determine the video you are attempting to find.';
    return $return_msg;
}

// ===================================
//  Create Client
// ===================================
try
{
    $client = new Google_Client();
    $client->setApplicationName("YouTube_Test");
    $client->setDeveloperKey($api_key);
}catch(Exception $e){
    $return_msg['error'] = 'Error creating Google client:<br>'.$e->getMessage();
    return $return_msg;
}   

// ===================================
//  Get video
// ===================================
try
{
    $service = new Google_Service_YouTube($client);
    $response = $service->videos->listVideos('id,snippet,contentDetails', array(
        "id" => $data['id']
    ));

    $return_msg['results'] = $response;

    foreach($response->items as $video)
    {
        $item = array();
        $item['id']      = $video['id'];
        $item['snippet'] = $video['snippet'];]
        $item['contentDetails'] = $video['contentDetails'];
        $return_msg['items'][$item['id']] = $item;
    }

}catch(Exception $e){
    $return_msg['error'] = 'Error finding video:<br>'.$e->getMessage();
    return $return_msg;
}

return $return_msg;

我将单个项目存储在数组中的原因是因为行$return_msg['results'] = $response;返回字段,而不是像我期望的那样返回项目对象。

Anywho,一旦我将所有这些返回给JS并将其记录到控制台,我看到在'snippets'数组中没有缩略图。

不确定原因,或者我做错了什么。我试图记录尽可能多的信息,我根本找不到任何缩略图集合的痕迹。

1 个答案:

答案 0 :(得分:2)

从youtube获取视频缩略图的一种简单方法是使用视频ID

http://img.youtube.com/vi/<your_video_id>/0.jpg
可以使用

[ 0.jpg 1.jpg 2.jpg 3.jpg ]

例如:

http://img.youtube.com/vi/-w8KI3A5zu4/0.jpg

如果您从youtube API获得 video_id ,则只需使用此功能即可获取图片。