获取 YouTube 视频缩略图并将其用于 PHP
Get YouTube video thumbnail and use it with PHP
如何使用来自 YouTube API 的视频的 link 访问 YouTube 视频的缩略图集。
我希望使用 PHP 使用存储在变量中的视频 ID 在网站上显示缩略图,例如 $link
YouTube 在其服务器上为不同的设备存储了许多不同类型的缩略图。您可以使用视频 ID 访问它
每个 YouTube 视频都有。您可以使用变量 $link
在您的网站上显示图像,该变量保存视频的 ID 并替换它
在 link.
中 video_ID 的位置
低质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
中等质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
高质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
最高质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
示例:
如果您想访问以下视频的缩略图:
https://www.youtube.com/watch?v=Q-GYwhqDo6o
视频 ID:Q-GYwhqDo6o
所以,视频缩略图 link 看起来像这样:
http://img.youtube.com/vi/Q-GYwhqDo6o/mqdefault.jpg
希望对您有所帮助。享受编码。
Google 在 v.3 上更改了 API,Python 中的那些代码可以正常工作!您可以使用 PHP.
def get_small_image_url(self):
return 'http://img.youtube.com/vi/%s/%s.jpg' % (self.video_id, random.randint(1, 3))
def get_hqdefault(self):
return 'http://i1.ytimg.com/vi/%s/hqdefault.jpg' % self.video_id
def get_mqdefault(self):
return 'http://i1.ytimg.com/vi/%s/mqdefault.jpg' % self.video_id
def get_sddefault(self):
return 'http://i1.ytimg.com/vi/%s/sddefault.jpg' % self.video_id
def get_video_id(self, url):
link = urlparse.urlparse(url)
if link.hostname == 'youtu.be':
return link.path[1:]
if link.hostname in ('www.youtube.com', 'youtube.com'):
if link.path == '/watch':
state = urlparse.parse_qs(link.query)
return state['v'][0]
if link.path[:7] == '/embed/':
return link.path.split('/')[2]
if link.path[:3] == '/v/':
return link.path.split('/')[2]
return False
def get_meta(self, video_id):
api_token = **'here your API_Token'**
url = 'https://www.googleapis.com/youtube/v3/videos?part=snippet&id=%s&key=%s' % (video_id, api_token)
response = json.load(urllib.urlopen(url))
print response
context = {
'title': response['items'][0]['snippet']['localized']['title'],
'desc': response['items'][0]['snippet']['localized']['description']
}
return context
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
video_id = self.get_video_id(self.url)
meta = self.get_meta(video_id)
self.video_id = video_id
self.title = meta['title']
self.description = meta['desc']
super(Videos, self).save(
force_insert=force_insert,
force_update=force_update,
using=using,
update_fields=update_fields
)
要获得高质量的图像,您可以使用从 youtube API
中获取的以下 URL
$video_id = explode("?v=", $link);
$video_id = $video_id[1];
$thumbnail="http://img.youtube.com/vi/".$video_id."/maxresdefault.jpg";
您可以使用下面的代码。这是为我工作。根据您的要求选择图像质量。
<?php
$youtubeID = getYouTubeVideoId('youtube video url');
$thumbURL = 'https://img.youtube.com/vi/' . $youtubeID . '/mqdefault.jpg';
print_r($thumbURL);
function getYouTubeVideoId($pageVideUrl) {
$link = $pageVideUrl;
$video_id = explode("?v=", $link);
if (!isset($video_id[1])) {
$video_id = explode("youtu.be/", $link);
}
$youtubeID = $video_id[1];
if (empty($video_id[1])) $video_id = explode("/v/", $link);
$video_id = explode("&", $video_id[1]);
$youtubeVideoID = $video_id[0];
if ($youtubeVideoID) {
return $youtubeVideoID;
} else {
return false;
}
}
?>
这是我下载 Youtube 缩略图的便捷功能
function downloadYouTubeThubnailImage($youTubeLink='',$thumbNamilQuality='',$fileNameWithExt='',$fileDownLoadPath='')
{
$videoIdExploded = explode('?v=', $youTubeLink);
if ( sizeof($videoIdExploded) == 1)
{
$videoIdExploded = explode('&v=', $youTubeLink);
$videoIdEnd = end($videoIdExploded);
$removeOtherInVideoIdExploded = explode('&',$videoIdEnd);
$youTubeVideoId = current($removeOtherInVideoIdExploded);
}else{
$videoIdExploded = explode('?v=', $youTubeLink);
$videoIdEnd = end($videoIdExploded);
$removeOtherInVideoIdExploded = explode('&',$videoIdEnd);
$youTubeVideoId = current($removeOtherInVideoIdExploded);
}
switch ($thumbNamilQuality)
{
case 'LOW':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/sddefault.jpg';
break;
case 'MEDIUM':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/mqdefault.jpg';
break;
case 'HIGH':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/hqdefault.jpg';
break;
case 'MAXIMUM':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/maxresdefault.jpg';
break;
default:
return 'Choose The Quality Between [ LOW (or) MEDIUM (or) HIGH (or) MAXIMUM]';
break;
}
if( empty($fileNameWithExt) || is_null($fileNameWithExt) || $fileNameWithExt === '')
{
$toArray = explode('/',$imageUrl);
$fileNameWithExt = md5( time().mt_rand( 1,10 ) ).'.'.substr(strrchr(end($toArray),'.'),1);
}
if (! is_dir($fileDownLoadPath))
{
mkdir($fileDownLoadPath,0777,true);
}
file_put_contents($fileDownLoadPath.$fileNameWithExt, file_get_contents($imageUrl));
return $fileNameWithExt;
}
Function Description
参数
$youTubeLink
Youtube url for example
https://www.youtube.com/watch?v=a3ICNMQW7Ok
$thumbNamilQuality
它有许多品质如 LOW ,MEDIUM, HIGH, MAXIMUM
缩略图质量列表取自
&&
$fileNameWithExt
带扩展名的文件名**for example
** myfavouriteimage.png
NOTE $fileNameWithExt
is not mandatory it will generate the uuid
based file name
for Example
91b2a30d0682058ebda8d71606f5e327.jpg
如果您想将文件放入自定义目录,请使用此参数
NOTE $fileDownLoadPath
is not mandatory it will generate the image file where the script is executing
部分示例
$folderpath = 'c:'.DIRECTORY_SEPARATOR.'xampp'.DIRECTORY_SEPARATOR.'htdocs'.DIRECTORY_SEPARATOR.'youtube'.DIRECTORY_SEPARATOR;
$imageName = 'mybeautfulpic.jpg';
downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','MAXIMUM',null,$folderpath );
downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','LOW',$imageName ,null);
希望它已经得到解答,但此函数有 some exta features
如何使用来自 YouTube API 的视频的 link 访问 YouTube 视频的缩略图集。
我希望使用 PHP 使用存储在变量中的视频 ID 在网站上显示缩略图,例如 $link
YouTube 在其服务器上为不同的设备存储了许多不同类型的缩略图。您可以使用视频 ID 访问它
每个 YouTube 视频都有。您可以使用变量 $link
在您的网站上显示图像,该变量保存视频的 ID 并替换它
在 link.
低质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
中等质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
高质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
最高质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
示例:
如果您想访问以下视频的缩略图:
https://www.youtube.com/watch?v=Q-GYwhqDo6o
视频 ID:Q-GYwhqDo6o
所以,视频缩略图 link 看起来像这样:
http://img.youtube.com/vi/Q-GYwhqDo6o/mqdefault.jpg
希望对您有所帮助。享受编码。
Google 在 v.3 上更改了 API,Python 中的那些代码可以正常工作!您可以使用 PHP.
def get_small_image_url(self):
return 'http://img.youtube.com/vi/%s/%s.jpg' % (self.video_id, random.randint(1, 3))
def get_hqdefault(self):
return 'http://i1.ytimg.com/vi/%s/hqdefault.jpg' % self.video_id
def get_mqdefault(self):
return 'http://i1.ytimg.com/vi/%s/mqdefault.jpg' % self.video_id
def get_sddefault(self):
return 'http://i1.ytimg.com/vi/%s/sddefault.jpg' % self.video_id
def get_video_id(self, url):
link = urlparse.urlparse(url)
if link.hostname == 'youtu.be':
return link.path[1:]
if link.hostname in ('www.youtube.com', 'youtube.com'):
if link.path == '/watch':
state = urlparse.parse_qs(link.query)
return state['v'][0]
if link.path[:7] == '/embed/':
return link.path.split('/')[2]
if link.path[:3] == '/v/':
return link.path.split('/')[2]
return False
def get_meta(self, video_id):
api_token = **'here your API_Token'**
url = 'https://www.googleapis.com/youtube/v3/videos?part=snippet&id=%s&key=%s' % (video_id, api_token)
response = json.load(urllib.urlopen(url))
print response
context = {
'title': response['items'][0]['snippet']['localized']['title'],
'desc': response['items'][0]['snippet']['localized']['description']
}
return context
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
video_id = self.get_video_id(self.url)
meta = self.get_meta(video_id)
self.video_id = video_id
self.title = meta['title']
self.description = meta['desc']
super(Videos, self).save(
force_insert=force_insert,
force_update=force_update,
using=using,
update_fields=update_fields
)
要获得高质量的图像,您可以使用从 youtube API
中获取的以下 URL$video_id = explode("?v=", $link);
$video_id = $video_id[1];
$thumbnail="http://img.youtube.com/vi/".$video_id."/maxresdefault.jpg";
您可以使用下面的代码。这是为我工作。根据您的要求选择图像质量。
<?php
$youtubeID = getYouTubeVideoId('youtube video url');
$thumbURL = 'https://img.youtube.com/vi/' . $youtubeID . '/mqdefault.jpg';
print_r($thumbURL);
function getYouTubeVideoId($pageVideUrl) {
$link = $pageVideUrl;
$video_id = explode("?v=", $link);
if (!isset($video_id[1])) {
$video_id = explode("youtu.be/", $link);
}
$youtubeID = $video_id[1];
if (empty($video_id[1])) $video_id = explode("/v/", $link);
$video_id = explode("&", $video_id[1]);
$youtubeVideoID = $video_id[0];
if ($youtubeVideoID) {
return $youtubeVideoID;
} else {
return false;
}
}
?>
这是我下载 Youtube 缩略图的便捷功能
function downloadYouTubeThubnailImage($youTubeLink='',$thumbNamilQuality='',$fileNameWithExt='',$fileDownLoadPath='')
{
$videoIdExploded = explode('?v=', $youTubeLink);
if ( sizeof($videoIdExploded) == 1)
{
$videoIdExploded = explode('&v=', $youTubeLink);
$videoIdEnd = end($videoIdExploded);
$removeOtherInVideoIdExploded = explode('&',$videoIdEnd);
$youTubeVideoId = current($removeOtherInVideoIdExploded);
}else{
$videoIdExploded = explode('?v=', $youTubeLink);
$videoIdEnd = end($videoIdExploded);
$removeOtherInVideoIdExploded = explode('&',$videoIdEnd);
$youTubeVideoId = current($removeOtherInVideoIdExploded);
}
switch ($thumbNamilQuality)
{
case 'LOW':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/sddefault.jpg';
break;
case 'MEDIUM':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/mqdefault.jpg';
break;
case 'HIGH':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/hqdefault.jpg';
break;
case 'MAXIMUM':
$imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/maxresdefault.jpg';
break;
default:
return 'Choose The Quality Between [ LOW (or) MEDIUM (or) HIGH (or) MAXIMUM]';
break;
}
if( empty($fileNameWithExt) || is_null($fileNameWithExt) || $fileNameWithExt === '')
{
$toArray = explode('/',$imageUrl);
$fileNameWithExt = md5( time().mt_rand( 1,10 ) ).'.'.substr(strrchr(end($toArray),'.'),1);
}
if (! is_dir($fileDownLoadPath))
{
mkdir($fileDownLoadPath,0777,true);
}
file_put_contents($fileDownLoadPath.$fileNameWithExt, file_get_contents($imageUrl));
return $fileNameWithExt;
}
Function Description
参数
$youTubeLink
Youtube url for example
https://www.youtube.com/watch?v=a3ICNMQW7Ok
$thumbNamilQuality
它有许多品质如 LOW ,MEDIUM, HIGH, MAXIMUM
缩略图质量列表取自
&&
$fileNameWithExt
带扩展名的文件名**for example
** myfavouriteimage.png
NOTE
$fileNameWithExt
is not mandatory it will generate theuuid
based file name forExample
91b2a30d0682058ebda8d71606f5e327.jpg
如果您想将文件放入自定义目录,请使用此参数
NOTE
$fileDownLoadPath
is not mandatory it will generate the image file where the script is executing
部分示例
$folderpath = 'c:'.DIRECTORY_SEPARATOR.'xampp'.DIRECTORY_SEPARATOR.'htdocs'.DIRECTORY_SEPARATOR.'youtube'.DIRECTORY_SEPARATOR;
$imageName = 'mybeautfulpic.jpg';
downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','MAXIMUM',null,$folderpath );
downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','LOW',$imageName ,null);
希望它已经得到解答,但此函数有 some exta features