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

Để 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

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

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

4.7/5 - (99 votes)
  • Bình luận
Sản phẩm nổi bật của Toản
x