Trong bài này chúng ta sẽ đi lấy ID, thời gian, tiêu đề, hình ảnh thumbnail của video từ youtube nhé.
Mục đích lấy để làm gì?
Mục đích sử dụng thì rất nhiều. Mỗi người có 1 ý tưởng riêng đúng không? Như mình thì mình có ý tưởng làm 1 trang web chuyên về video và nguồn video thì lấy từ youtube ^^
Để duy trì blog nên mình có làm aff cho 1 số bên hosting. Nhưng dù aff mình cũng chọn 1 số nhà cung cấp uy tín về chất lượng và support nên các bạn cứ yên tâm nhé.
Nếu có mua hosting mà có trong list dưới đây các bạn click vào link trước khi mua để ủng hộ mình nhé. Mình cảm ơn nhiều
- Azdigi: Giá rẻ thì dùng gói Pro Gold Hosting còn chất lượng hơn thì em khuyên dùng Business Hosting. Có điều kiện thì lên VPS nhé
- Tino hosting
- iNet
- Nước ngoài thì Vultr
Từ đâu có dữ liệu này?
Chúng ta sẽ giải đáp câu hỏi này trước khi làm nhé.
Dữ liệu chúng ta sẽ lấy tại https://www.googleapis.com/youtube/v3/videos/?id=_IDVIDEO_&key=_APIKEY_&part=snippet,contentDetails,statistics,status
Chú ý: _APIKEY_ là bạn phải tự tạo API của riêng mình theo hướng dẫn trong link này https://developers.google.com/youtube/v3/getting-started
Và cách làm như nào? Câu trả lời ngay bên dưới
Định dạng thời gian
Mặc định giá trị nhận về là giây, tại key [duration]. Vì vậy ta phải có hàm sau để chuyển về dạng giờ:phút:giây
function getTimeLength($VidDuration){
preg_match_all('/(\d+)/',$VidDuration,$parts);
return implode(':',$parts[0]);
}
Lấy ID, thời gian và thumbnail của video
Trong code này có hàm file_get_contents chỉ chạy ở PHP >=4.3.0 và PHP 5 vì vậy sẽ bị lỗi trên 1 số host.
function getYoutubeVideo($url)
{
$pattern = '%^# Match any youtube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www\.)? # Optional www subdomain
(?: # Group host alternatives
youtu\.be/ # Either youtu.be,
| youtube\.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /watch\?v= # or /watch\?v=
) # End path alternatives.
) # End host alternatives.
([\w-]{10,12}) # Allow 10-12 for 11 char youtube id.$%x';
$result = preg_match($pattern, $url, $matches);
if (false !== $result) {
$video_id = isset($matches[1]) ? $matches[1] : '';
if($video_id) {
$apiKey = 'HÃY NHẬP API KEY CỦA BẠN Ở ĐÂY';
$data = @file_get_contents('https://www.googleapis.com/youtube/v3/videos/?id=' . $video_id . '&key=' . $apiKey . '&part=snippet,contentDetails,statistics,status');
$obj = json_decode($data);
if (!$data) {
echo 'Lỗi Video ID';
die();
}
foreach ($obj->items as $video) {
//Thời gian
echo getTimeLength($video->contentDetails->duration) . ' <br>';
//Video ID
echo $video_id . '<br />';
//Tiêu đề video
echo $video->snippet->title . ' <br>';
//Ảnh 120x90
$thumb_120 = $video->snippet->thumbnails->default->url;
echo '<img src="' . $thumb_120 . '" alt="..."/> <br>';
//Ảnh 480x360
$thumb_480 = $video->snippet->thumbnails->high->url;
echo '<img src="' . $thumb_480 . '" alt="..."/> <br>';
//Ảnh Full HD 1280x720
$thumb_1280 = $video->snippet->thumbnails->maxres->url;
echo '<img src="' . $thumb_1280 . '" alt="..."/> <br>';
}
}else{
echo 'Không tìm thấy ID';
}
} else {
echo 'Sai URL';
}
}
Như các bạn thấy ở trên có 2 thumbnail 120×90 và 480×360. Cách bạn hãy chọn kích thước cho phù hợp
Sử dụng
Để sử dụng ta dùng hàm sau
//$link là link video youtube của bạn
$link = 'http://www.youtube.com/watch?v=Iln8PlCM82M';
getYoutubeVideo($link);
Code hoàn thiện
function getTimeLength($VidDuration)
{
preg_match_all('/(\d+)/', $VidDuration, $parts);
return implode(':', $parts[0]);
}
function getYoutubeVideo($url)
{
$pattern = '%^# Match any youtube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www\.)? # Optional www subdomain
(?: # Group host alternatives
youtu\.be/ # Either youtu.be,
| youtube\.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /watch\?v= # or /watch\?v=
) # End path alternatives.
) # End host alternatives.
([\w-]{10,12}) # Allow 10-12 for 11 char youtube id.$%x';
$result = preg_match($pattern, $url, $matches);
if (false !== $result) {
$video_id = isset($matches[1]) ? $matches[1] : '';
if ($video_id) {
$apiKey = 'HÃY NHẬP API KEY CỦA BẠN Ở ĐÂY';
$data = @file_get_contents('https://www.googleapis.com/youtube/v3/videos/?id=' . $video_id . '&key=' . $apiKey . '&part=snippet,contentDetails,statistics,status');
$obj = json_decode($data);
if (!$data) {
echo 'Lỗi Video ID';
die();
}
foreach ($obj->items as $video) {
//Thời gian
echo getTimeLength($video->contentDetails->duration) . ' <br>';
//Video ID
echo $video_id . '<br />';
//Tiêu đề video
echo $video->snippet->title . ' <br>';
//Ảnh 120x90
$thumb_120 = $video->snippet->thumbnails->default->url;
echo '<img src="' . $thumb_120 . '" alt="..."/> <br>';
//Ảnh 480x360
$thumb_480 = $video->snippet->thumbnails->high->url;
echo '<img src="' . $thumb_480 . '" alt="..."/> <br>';
//Ảnh Full HD 1280x720
$thumb_1280 = $video->snippet->thumbnails->maxres->url;
echo '<img src="' . $thumb_1280 . '" alt="..."/> <br>';
}
} else {
echo 'Không tìm thấy ID';
}
} else {
echo 'Sai URL';
}
}
getYoutubeVideo('https://www.youtube.com/watch?v=lxCdwtDFecw');
Ví dụ sử dụng CURL để lấy dữ liệu
Đây là đoạn full code luôn. Các bạn đọc để tham khảo nha
function getTimeLength($VidDuration)
{
preg_match_all('/(\d+)/', $VidDuration, $parts);
return implode(':', $parts[0]);
}
function getVideoID($url)
{
$pattern = '%^# Match any youtube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www\.)? # Optional www subdomain
(?: # Group host alternatives
youtu\.be/ # Either youtu.be,
| youtube\.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /watch\?v= # or /watch\?v=
) # End path alternatives.
) # End host alternatives.
([\w-]{10,12}) # Allow 10-12 for 11 char youtube id.$%x';
preg_match($pattern, $url, $matches);
$video_id = isset($matches[1]) ? $matches[1] : '';
return $video_id;
}
function getYoutubeVideo($url)
{
$video_id = getVideoID($url);
if ($video_id) {
$apiKey = 'HÃY NHẬP API CỦA BẠN';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.googleapis.com/youtube/v3/videos/?id=' . $video_id . '&key=' . $apiKey . '&part=snippet,contentDetails,statistics,status');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
$obj = json_decode($response);
if (!$obj) {
echo 'Lỗi Video ID';
die();
}
foreach ($obj->items as $video) {
//Thời gian
echo getTimeLength($video->contentDetails->duration) . ' <br>';
//Video ID
echo $video_id . '<br />';
//Tiêu đề video
echo $video->snippet->title . ' <br>';
//Ảnh 120x90
$thumb_120 = $video->snippet->thumbnails->default->url;
echo '<img src="' . $thumb_120 . '" alt="..."/> <br>';
//Ảnh 480x360
$thumb_480 = $video->snippet->thumbnails->high->url;
echo '<img src="' . $thumb_480 . '" alt="..."/> <br>';
//Ảnh Full HD 1280x720
$thumb_1280 = $video->snippet->thumbnails->maxres->url;
echo '<img src="' . $thumb_1280 . '" alt="..."/> <br>';
}
} else {
echo 'Không tìm thấy ID';
}
}
getYoutubeVideo('https://www.youtube.com/watch?v=lxCdwtDFecw');
Chúc các bạn thành công^^
- Bình luận