我尝试使用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'数组中没有缩略图。
不确定原因,或者我做错了什么。我试图记录尽可能多的信息,我根本找不到任何缩略图集合的痕迹。
答案 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 ,则只需使用此功能即可获取图片。