Skip to content
WONGCW 網誌
  • 首頁
  • 論壇
  • 微博
  • 壁紙下載
  • 免費圖床
  • 視頻下載
  • 聊天室
  • SEO工具
  • 支援中心
  • 表格製作
  • More
    • 在線名片
    • 網頁搜索
    • 天氣預報
    • 二維碼生成器
  • Search Icon

WONGCW 網誌

記錄生活經驗與點滴

YouTube视频解析API

YouTube视频解析API

2018-10-21 Comments 0 Comment

下方为YouTube视频解析API源码,存储为.php文件调用即可

<?php
/**
*
* YouTuBe API
*
* @author DanMo <https://www.cheshirex.com/>
* @date 2018-08-18 19:42:30
* @version 0.26
*
*
*/
error_reporting(0);
header('Content-type: text/json;charset=utf-8');

$ui = array();
foreach($_GET as $key => $value){
$ui[$key] = trim($value);
}

if( empty($ui['vid']) ){
die('Please attach relevant parameters!');
}

define('VID',$ui['vid'] );
define('VIDEO_URL',"https://www.youtube.com/watch?v=");
define('YouTuBe_Api',"https://y2mate.com/zh-cn/analyze/ajax");
define('TEST_API_KEY', 'AIzaSyCOz5Yml_mICULfhM0s_u87l4MRvcL7_p0' );
define('API_KEY', 'AIzaSyBiMxVlkwUqqHbxVU3HJV3KcPFQPikfZwE' );

function https_curl($url,$params=false,$ispost=0){
$httpInfo = array();
$ch = curl_init();

curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
if( $ispost )
{
curl_setopt( $ch , CURLOPT_POST , true );
curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
curl_setopt( $ch , CURLOPT_URL , $url );
}
else
{
if($params){
curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
}else{
curl_setopt( $ch , CURLOPT_URL , $url);
}
}
$response = curl_exec( $ch );
if ($response === FALSE) {
//echo "cURL Error: " . curl_error($ch);
return false;
}
$httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
$httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
curl_close( $ch );
return $response;
}

function api_curl($url,$data){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
curl_setopt($curl, CURLOPT_HEADER,0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
if (curl_errno($curl)) {
return 'ERROR '.curl_error($curl);
}
curl_close($curl);
return $response ;
}

$APIs = [
'categories.list' => 'https://www.googleapis.com/youtube/v3/videoCategories',
'videos.list' => 'https://www.googleapis.com/youtube/v3/videos',
'search.list' => 'https://www.googleapis.com/youtube/v3/search',
'channels.list' => 'https://www.googleapis.com/youtube/v3/channels',
'playlists.list' => 'https://www.googleapis.com/youtube/v3/playlists',
'playlistItems.list' => 'https://www.googleapis.com/youtube/v3/playlistItems',
'activities' => 'https://www.googleapis.com/youtube/v3/activities',
];

function getApi($name){
global $APIs;
return $APIs[$name]."?";
}

function _parse_url_path($url){
$array = parse_url($url);
return $array['path'];
}

function _parse_url_query($url){
$array = parse_url($url);
$query = $array['query'];
$queryParts = explode('&', $query);
$params = [];
foreach ($queryParts as $param) {
$item = explode('=', $param);
$params[$item[0]] = empty($item[1]) ? '' : $item[1];
}
return $params;
}

function getVideoInfo($vId, $part = ['id', 'snippet', 'contentDetails', 'player', 'statistics', 'status']){
$API_URL = getApi('videos.list');
$params = [
'id' => is_array($vId) ? implode(',', $vId) : $vId,
'key' => API_KEY,
'part' => implode(', ', $part),
];
return https_curl($API_URL,$params,0);
}

function getPageContent($id){
$page = 'http://www.youtube.com/watch?v='.$id;
$arr = array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false,
),
); 
$content = file_get_contents($page, false, stream_context_create($arr));
return $content;
}

function getDownloadLinks($id){
$videoMap = array(
"13" => array("3GP", "Low Quality - 176x144"),
"17" => array("3GP", "Medium Quality - 176x144"),
"36" => array("3GP", "High Quality - 320x240"),
"5" => array("FLV", "Low Quality - 400x226"),
"6" => array("FLV", "Medium Quality - 640x360"),
"34" => array("FLV", "Medium Quality - 640x360"),
"35" => array("FLV", "High Quality - 854x480"),
"43" => array("WEBM", "Low Quality - 640x360"),
"44" => array("WEBM", "Medium Quality - 854x480"),
"45" => array("WEBM", "High Quality - 1280x720"),
"18" => array("MP4", "Medium Quality - 480x360"),
"22" => array("MP4", "High Quality - 1280x720"),
"37" => array("MP4", "High Quality - 1920x1080"),
"38" => array("MP4", "High Quality - 4096x230")
);

$content = getPageContent($id);
$videos = array('MP4' => array(), 'FLV' => array(), '3GP' => array(), 'WEBM' => array());

if(preg_match("'\"url_encoded_fmt_stream_map\":\"(.*?)\"'si", $content, $r)){
$data = $r[1];
$data = explode(',', $data);

foreach($data As $cdata){
$cdata = str_replace('\u0026', '&', $cdata);
$cdata = explode('&', $cdata);

foreach($cdata As $xdata){
if(preg_match('/^sig/', $xdata)){
$sig = substr($xdata, 4);
}

if(preg_match('/^url/', $xdata)){
$url = substr($xdata, 4);
}

if(preg_match('/^itag/', $xdata)){
$type = substr($xdata, 5);
}
}
$url = urldecode($url);
$videos[$videoMap[$type][0]][$videoMap[$type][1]] = $url;
}
}
return $videos;
}
function format_bytes($size){
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for($i = 0; $size >= 1024 && $i < 4; $i++){
$size /= 1024;
}
return round($size, 2).$units[$i];
}
function itag($itag){
$stream_itag = array(
"38" =>"3072p",
"85" =>"1080p",
"46" =>"1080p",
"37" =>"1080p",
"102" =>"720p",
"45" =>"720p",
"84" =>"720p",
"22" =>"720p",
"120" =>"720p",
"44" =>"480p",
"35" =>"480p",
"101" =>"360p",
"100" =>"360p",
"43" =>"360p",
"34" =>"360p",
"82" =>"360p",
"18" =>"270p/360p",
"6" =>"270p",
"83" =>"240p",
"13" =>"144p",
"5" =>"240p",
"36" =>"240p",
"17" =>"144p"
);
//return $stream_itag[$itag];
parse_str($itag,$info);

return array(
'iTag' => $stream_itag[$info['itag']],//清晰度
//'Duration' => $info['dur'],//时间
'mt' => $info['expire'],//文件大小
'type' => $info['mime'] //文件形式
);
}

function compress_html_main($buffer){
$initial=strlen($buffer);
$buffer=explode("<!--html-->", $buffer);
$count=count ($buffer);
for ($i = 0; $i <= $count; $i++){
if (stristr($buffer[$i], '<!--html no compression-->')){
$buffer[$i]=(str_replace("<!--html no compression-->", " ", $buffer[$i]));
}else{
$buffer[$i]=(str_replace("\t", " ", $buffer[$i]));
$buffer[$i]=(str_replace("\n\n", "\n", $buffer[$i]));
$buffer[$i]=(str_replace("\n", "", $buffer[$i]));
$buffer[$i]=(str_replace("\r", "", $buffer[$i]));
while (stristr($buffer[$i], ' '))
{
$buffer[$i]=(str_replace(" ", " ", $buffer[$i]));
}
}
$buffer_out.=$buffer[$i];
}
return $buffer_out;
}

function returns($data){
global $ui;
return $ui['callback'] ? $ui['callback']."({$data})" : "Jquery_".bin2hex(base64_encode('sbtencentsbtencent'))."({$data})";
}

$params = [
'url' => VIDEO_URL.VID,
'ajax' => 1,
];

//$_loc1_ = json_decode(api_curl(YouTuBe_Api,$params),true);
$_loc1_ = json_decode(https_curl(YouTuBe_Api,$params,1),true);

preg_match('|<div class="tab-pane fade active in" id="mp4">(.*?)</div> <div class="tab-pane fade" id="mp3">|',compress_html_main($_loc1_['result']),$_loc2_);

preg_match("#data-vlink=\"(.*?)\" .*class=\"video-thumbnail\".* >#",compress_html_main($_loc1_['result']),$_loc3_);//默认播放
preg_match_all("#data-vlink=\"(.*?)\" >#",$_loc2_[1],$_loc4_);//视频链接

//preg_match_all("#</td> <td>(.*?)</td> <td class=\"txt-center\">#",$_loc2_[1],$_loc5_);//视频大小

foreach( $_loc4_[1] as $row ){
$vinfo = itag($row);
$video[] = array(
'url' => $row,
'itag' => $vinfo['iTag'],//清晰度
'mt' => $vinfo['mt'],//文件大小
'type' => $vinfo['type'] //文件形式
);
}
$_loc6_ = itag($_loc3_[1]);
$data = array(
'date' => gmdate("D M d Y h:i:s ")."GMT+0800 (中国标准时间)",
'api' => 'mtop.api.video.url.youtube.get',
'version' => '0.26',
'tip' => 'More than 1080 definition films and audio segmentation are not provided', 
'result' => array(
'default' => array(
'url' => $_loc3_[1],
'itag' => $_loc6_['iTag'],//清晰度
'mt' => $_loc6_['mt'],//文件大小
'type' => $_loc6_['type'] //文件形式
),
'video' => $video,
)
);

//print_r( $_loc4_[1] );
//print_r( compress_html_main($_loc1_['result']) );
print_r( returns(json_encode($data)) );

分享此文:

  • 按一下即可分享至 X(在新視窗中開啟) X
  • 按一下以分享至 Facebook(在新視窗中開啟) Facebook
  • 分享到 WhatsApp(在新視窗中開啟) WhatsApp
  • 按一下以分享到 Telegram(在新視窗中開啟) Telegram
  • 分享到 Pinterest(在新視窗中開啟) Pinterest
  • 分享到 Reddit(在新視窗中開啟) Reddit
  • 按一下即可以電子郵件傳送連結給朋友(在新視窗中開啟) 電子郵件
  • 點這裡列印(在新視窗中開啟) 列印

相關


PHP資訊, 教學資源

Post navigation

PREVIOUS
教程:一键检测VPS服务器是Openvz还是KVM还是Xen架构
NEXT
乐视云视频解析源码

發表迴響取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料。

More results...

Generic filters
Exact matches only
Search in title
Search in content
Search in excerpt
Filter by 分類
網站公告
Featured
限時免費
Windows 軟件下載
系統軟件
辦公軟件
圖像處理
影音媒體
網絡軟件
應用軟件
Mac 軟件下載
安卓軟件下載
網絡資訊
Mac資訊
Linux資訊
VPS資訊
NASA資訊
WordPress資訊
WeChat資訊
PHP資訊
教學資源
開源程序
網頁工具
SEO工具
醫療健康
其他資訊
Content from
Content to
2018 年 10 月
一 二 三 四 五 六 日
1234567
891011121314
15161718192021
22232425262728
293031  
« 9 月   11 月 »

分類

  • 網站公告
  • 限時免費
  • Windows 軟件下載
  • 系統軟件
  • 辦公軟件
  • 圖像處理
  • 影音媒體
  • 網絡軟件
  • 應用軟件
  • Mac 軟件下載
  • 安卓軟件下載
  • 網絡資訊
  • Mac資訊
  • Linux資訊
  • VPS資訊
  • NASA資訊
  • WordPress資訊
  • WeChat資訊
  • PHP資訊
  • 教學資源
  • 開源程序
  • 網頁工具
  • SEO工具
  • 醫療健康
  • 其他資訊

彙整

近期文章

  • 微軟裁員風暴:軟體工程崗位成重災區AI搶走程式設計師飯碗? 2025-05-15
  • 星巴克據悉已啟動出售龐大中國業務部分股份的進程 2025-05-15
  • 資料外洩後Valve向Steam用戶保證其係統沒有被入侵 2025-05-15
  • 小米盒子5系列今日開賣:299元起支援4K 2025-05-15
  • 假期3天不調休端午假期火車票即將開售 2025-05-15
  • 網友在馬耳他偶遇劉強東夫婦打扮顯眼被認出 2025-05-15
  • 智慧仿生魚已投入長江保護:模仿魚類遊動進行生態資料採集 2025-05-15
  • 華為折疊PC將在5月19日正式發布 2025-05-15
  • 小鵬全新純電轎跑官宣:還叫P7 2025-05-15
  • DeepMind放出新AI大招:竟能自我糾錯但有致命弱點 2025-05-15

熱門文章與頁面︰

  • 您可以在Windows 11 24H2 中找回WordPad
  • 76%美國汽車高層認為中國電動車登陸美國是遲早的事
  • Waymo透露第六代無人駕駛計程車細節:成本更低、功能更強
  • NVIDIA對川普的迎合促成了AI技術擴散限制的逆轉以及對華為的進一步壓制
  • 黃仁勳將出席台北電腦展成焦點更多AI合作曝光
  • 英偉達CEO黃仁勳:不會使用人工智慧的人將失業
  • 新《超級瑪利歐兄弟》動畫電影定名《超級瑪利歐世界》
  • PS5可能會再次漲價索尼考慮讓其在美生產
  • 波音斬獲公司史上最大單筆訂單卡達航空訂至少160架飛機
  • 假期3天不調休端午假期火車票即將開售

投遞稿件

歡迎各界人士投遞稿件到admin@wongcw.com

請提供以下資料:

1.你的名字

2.你的電郵

3.分類目錄

4.文章標題

5.文章摘要

6.文章內容

7.文章來源

 

聯繫我們

查詢,投稿,商務合作:
​admin@wongcw.com
​技術支援:
​support@wongcw.com
​客户服務:
​cs@wongcw.com

QQ群:833641851

快帆

MALUS

極度掃描

DMCA.com Protection Status

WONGCW 網誌

  • 免責聲明
  • 捐助我們
  • ThemeNcode PDF Viewer
  • ThemeNcode PDF Viewer SC
  • Events

服務器提供

本站使用之服務器由ikoula提供。

聯繫我們

查詢,投稿,商務合作:
​admin@wongcw.com
​技術支援:
​support@wongcw.com
​客户服務:
​cs@wongcw.com

QQ群:833641851

© 2025   All Rights Reserved.