Lấy ID, thời gian của video và ảnh thumbnail của Youtube Video từ URL

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 ^^

Lấy ID thumbnail và thời gian của youtube video

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

Tham khảo thêm: 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

code:

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 = 'AIzaSyDQtNXcQkLGy7RVdA1k3JC0FqPZIXTrK3s';
            $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

<?php
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 = 'AIzaSyDQtNXcQkLGy7RVdA1k3JC0FqPZIXTrK3s';
            $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

<?php
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 = 'AIzaSyDQtNXcQkLGy7RVdA1k3JC0FqPZIXTrK3s';

        $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^^

Lấy ID, thời gian của video và ảnh thumbnail của Youtube Video từ URL
1.3 (26.26%) 99 votes
  • Bình luận
Hosting nên dùng cho WordPress tại Việt Nam
Có thể bạn quan tâm
x