การหาไฟล์ Image
การหาไฟล์รูปของ Youtube นั่นง่ายมาก เนื่องจาก Youtube จะมีการเก็บไฟล์ที่เป็นมาตรฐานมาก เพียงแค่นำ ID ของ youtube ออกมาวางในรูปแบบนี้ ก็สามารถหาตำแหน่งภาพได้แล้ว
"default" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/default.jpg" "medium" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/mqdefault.jpg" "high" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/hqdefault.jpg" "standard" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/sddefault.jpg"
ยกตัวอย่างเช่น https://www.youtube.com/watch?v=brUyoeiEha4 หาต้องการรูปขนาดกลางก็สามารถไปเอาได้ที่
https://i1.ytimg.com/vi/brUyoeiEha4/mqdefault.jpg
การหาไฟล์ MP4 การหาตำแหน่งไฟล์ของ MP4 สามารถหาได้จาก http://youtube.com/get_video_info เพียงใส่ ID เข้าไป ก็จะมีข้อมูลออกมาแล้วทำการ parser ออกมา ในเรื่อง parser มีหลายวิธีก็แล้วแต่จะเลือกนะครับ ของผมเป็นแบบนี้ ขั้นแรกทำการนำ ID ออกมาจาก URL สามารถใช้คำสั่งได้จากชุดนี้
$PathURL = $_REQUEST['URL'];
if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $PathURL, $match)) {
$IDClipYoutube = $match[1];
}
เมื่อได้ ID ออกมาแล้วก็ทำส่ง ID เข้าไปใน Get info เพื่อนำข้อมูลมาเพื่อหาที่อยู่ของ MP4
$content = file_get_contents("http://youtube.com/get_video_info?video_id=".$IDClipYoutube);
parse_str($content, $ytarr);
$yarr=explode(",",$ytarr["url_encoded_fmt_stream_map"]);
$arrayurl=array();
for($i=0; $i<count($yarr);$i++){
if((strpos($yarr[$i],"mp4") !== false)&&(strpos($yarr[$i],"quality=medium") !==false)){
parse_str($yarr[$i],$starray);
array_push($arrayurl,$starray["url"]);
}
}
return $arrayurl[0];
* ปล. แต่เนื่องจาก ในบาง Clip ของ Youtube มีการ Set ค่าเป็น Private หรือดูได้เฉพาะบางเวปในส่วน get_video_info จะไม่สามารถใช้งานได้ หากต้องการดูดไฟล์นั่นจริงๆ จำเป็นต้องใช้ PHP Command line ผมแนะนำให้ใช้ youtube dl แต่ก็ระวังเรื่อง ลิขสิทธิ์ด้วยนะครับ ขอให้สนุกกับการดูไฟล์ในเครื่องนะครับ ^^
Full Script
if(isset($_REQUEST['URL'])){
$PathURL = $_REQUEST['URL'];
if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $PathURL, $match)) {
$IDClipYoutube = $match[1];
}
$content = file_get_contents("http://youtube.com/get_video_info?video_id=".$IDClipYoutube);
parse_str($content, $ytarr);
$yarr=explode(",",$ytarr["url_encoded_fmt_stream_map"]);
$arrayurl=array();
for($i=0; $i<count($yarr);$i++){ if((strpos($yarr[$i],"mp4") !== false)&&(strpos($yarr[$i],"quality=medium") !==false)){ parse_str($yarr[$i],$starray); array_push($arrayurl,$starray["url"]); } } $array_info["body"]["items"] = Array( "mp4" => $arrayurl[0],
"image" => Array(
"default" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/default.jpg",
"medium" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/mqdefault.jpg",
"high" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/hqdefault.jpg",
"standard" => "https://i1.ytimg.com/vi/".$IDClipYoutube."/sddefault.jpg"
),
"related" => "getyoutube_related.php?ID=".$IDClipYoutube
);
if(isset($_REQUEST['TYPE'])){
$TYPE = $_REQUEST['TYPE'];
if($TYPE == "json"){
echo json_encode($array_info);
}
}else{
if(isset($arrayurl[0])){
echo $arrayurl[0];
}else{
echo "return : ".$content;
}
}
}else{
echo "Required parameter: URL";
}
ตัวอย่างไฟล์ : getyoutube
