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
0 nhận xét:
Đăng nhận xét