CuDemVN.Wap.Sh



![]() | ![]() ![]() ![]() |
Nằm trong loạt bài hướng dẫn get link, ở bài trước mình đã
share code get link video facebook
và mới đây là
code rss grab video youtube
hôm nay mình sẽ tiếp tục hướng dẫn get full link video youtube bằng PHP các định dạng mp4 HD 720, FLV, 3GP.. mong rằng sẽ giúp các bạn hiểu được phần nào nguyên lí của những code get link này.
Ở bài viết này mình sẽ đưa ra những function sẽ giúp các bạn view source, lấy ID video và cuối cùng là get ra link video
Trước khi đi vào hướng dẫn bạn hãy xem thử demo get link video youtube đã nhé.
→demo:

Hướng dẫn viết code PHP Get link video Youtube
- Đầu tiên bạn phải có function cURL để phục vụ mục đích lấy source code
<?php
function curl($url) {
$ch = @curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$head[] = "Connection: keep-alive";
$head[] = "Keep-Alive: 300";
$head[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$head[] = "Accept-Language: en-us,en;q=0.5";
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36');
curl_setopt($ch, CURLOPT_HTTPHEADER, $head);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
$page = curl_exec($ch);
curl_close($ch);
return $page;
}
?>
function curl($url) {
$ch = @curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$head[] = "Connection: keep-alive";
$head[] = "Keep-Alive: 300";
$head[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$head[] = "Accept-Language: en-us,en;q=0.5";
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36');
curl_setopt($ch, CURLOPT_HTTPHEADER, $head);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
$page = curl_exec($ch);
curl_close($ch);
return $page;
}
?>
- Tiếp theo chúng ta sẽ cần một function để lấy ra ID của video qua URL
Ví dụ URL video của bạn có dạng:
thì 1Zn4L7vi9gg chính là ID của video đó. Code PHP Get ID video như sau:
<?php
function getIdYoutube($link){
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $link, $id);
if(!empty($id)) {
return $id = $id[0];
}
return $link;
}
?>
function getIdYoutube($link){
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $link, $id);
if(!empty($id)) {
return $id = $id[0];
}
return $link;
}
?>
- Đây là function quan trọng nhất trong get link video facebook sẽ tạo ra 1 mảng các phần tử là từng loại video youtube
<?php
function getVideoYoutube($link) {
$id = getIdYoutube($link);
$getlink = "https://www.youtube.com/watch?v=".$id;
if ($get = curl($getlink )) {
$return = array();
if (preg_match('/;ytplayer\.config\s*=\s*({.*?});/', $get, $data)) {
$jsonData = json_decode($data[1], true);
$streamMap = $jsonData['args']['url_encoded_fmt_stream_map'];
foreach (explode(',', $streamMap) as $url)
{
$url = str_replace('\u0026', '&', $url);
$url = urldecode($url);
parse_str($url, $data);
$dataURL = $data['url'];
unset($data['url']);
$return[$data['quality']."-".$data['itag']] = $dataURL.'&'.urldecode(http_build_query($data));
}
}
return $return;
}else{
return 0;
}
}
?>
function getVideoYoutube($link) {
$id = getIdYoutube($link);
$getlink = "https://www.youtube.com/watch?v=".$id;
if ($get = curl($getlink )) {
$return = array();
if (preg_match('/;ytplayer\.config\s*=\s*({.*?});/', $get, $data)) {
$jsonData = json_decode($data[1], true);
$streamMap = $jsonData['args']['url_encoded_fmt_stream_map'];
foreach (explode(',', $streamMap) as $url)
{
$url = str_replace('\u0026', '&', $url);
$url = urldecode($url);
parse_str($url, $data);
$dataURL = $data['url'];
unset($data['url']);
$return[$data['quality']."-".$data['itag']] = $dataURL.'&'.urldecode(http_build_query($data));
}
}
return $return;
}else{
return 0;
}
}
?>
- Bước cuối cùng khá đơn giản nhưng như đã nói ở trên - dữ liệu tạo ra dạng mảng nên khi bạn echo ra thì sẽ trắng trang. Ta sẽ sử dụng print_r() nhé
<?php
echo '<pre>';
print_r(getVideoYoutube('https://www.youtube.com/watch?v=KjuGYC88CA8'));
echo '</pre>';
?>
echo '<pre>';
print_r(getVideoYoutube('https://www.youtube.com/watch?v=KjuGYC88CA8'));
echo '</pre>';
?>
Bạn có thể điền link Youtube hoặc ID của video vào function getVideoYoutube($link) là nó sẽ trả về một mảng chứa tất cả các link SD, HD của video đó rồi. Chúc các bạn thành công!
→Bonus:

Nguồn: Hải Long - BlogIT.Vn
↓ Tập tin Đính kèm ↓

Đánh giá: 4.5/ 5, 5160 bình chọn
