Hướng dẫn viết class get link Youtube



Hướng dẫn viết class get link download video youtube bằng php, nhanh chóng và đơn giản bằng cách sử dụng API get_video_info của youtube.

Tìm một vòng trên google search thấy có khá nhiều bạn có nhu cầu tìm code lấy link file video từ youtube. Có lẽ là có rất nhiều lý do khác nhau, dù hiện tại đã có quá nhiều công cụ hỗ trợ việc đó như extension Savior trên Cốc Cốc, hoặc phần mềm IDM. Cả hai đều hỗ trợ tốt việc getlink và tải về. Nhưng đó là get từ client, vậy server thì sao ?

Tuy nhiên vẫn còn rất nhiều lý do khác, ví dụ như tạo một trang chia sẻ video cá nhân, bạn có thể thêm chức năng import from Youtube. Sẽ rất hay đúng không. Không nói nhiều về các lý do nữa ta sẽ bắt đầu vào bài viết : get link youtube.

Bài viết ngày hôm nay sẽ hướng dẫn bạn viết một class, tạm gọi là YoutubeDownloader. Class này có chức năng như sau :

Get link download của tất cả các chất lượng mà video có.

<?php
class YoutbeDownloader
{
    private static $endpoint = "http://www.youtube.com/get_video_info";
    public static function getInstance()
    {
        static $instance = null;
        if (null === $instance) {
            $instance = new static();
        }
        return $instance;
    }
    public function getLink($id)
    {
        $API_URL = self::$endpoint . "?&video_id=" . $id;
        $video_info = $this->curlGet($API_URL);
        $url_encoded_fmt_stream_map = '';
        parse_str($video_info);
        if(isset($reason))
        {
            return $reason;
        }
        if (isset($url_encoded_fmt_stream_map)) {
            $my_formats_array = explode(',', $url_encoded_fmt_stream_map);
        } else {
            return 'Không có dòng định dạng mã hóa được tìm thấy.';
        }
        if (count($my_formats_array) == 0) {
            return 'Không có định dạng bản đồ dòng tìm thấy - là id video chính xác?';
        }
        $avail_formats[] = '';
        $i = 0;
        $ipbits = $ip = $itag = $sig = $quality = $type = $url = '';
        $expire = time();
        foreach ($my_formats_array as $format) {
            parse_str($format);
            $avail_formats[$i]['itag'] = $itag;
            $avail_formats[$i]['quality'] = $quality;
            $type = explode(';', $type);
            $avail_formats[$i]['type'] = $type[0];
            $avail_formats[$i]['url'] = urldecode($url) . '&signature=' . $sig;
            parse_str(urldecode($url));
            $avail_formats[$i]['expires'] = date("G:i:s T", $expire);
            $avail_formats[$i]['ipbits'] = $ipbits;
            $avail_formats[$i]['ip'] = $ip;
            $i++;
        }
        return $avail_formats;
    }
    function curlGet($URL)
    {
        $ch = curl_init();
        $timeout = 3;
        curl_setopt($ch, CURLOPT_URL, $URL);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $tmp = curl_exec($ch);
        curl_close($ch);
        return $tmp;
    }
}
$qualitys = YoutbeDownloader::getInstance()->getLink($_GET['url']);
if(is_string($qualitys))
{
    echo    $qualitys;
}
else {
    foreach ($qualitys as $video) {
        echo "<a href='" . $video['url'] . "'>" . $video['quality'] . "-" . $video['type'] . "</a></br>";
    }

Link :https://www.youtube.com/watch?v=cr6W9ZHT0eM
Get link dạng http://domain.com/youtube.php?url=cr6W9ZHT0eM

Share on Google Plus

About NHOCLAK DJ

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

0 nhận xét:

Đăng nhận xét