优酷全站视频代理程序
程序员文章站
2024-02-20 13:59:34
...
申明:全部搜集于优酷网,版权属于优酷网!由于官网不断地改变规则,故有些视频在采集后播放不了。把代码贴出来,让大家学习研究,请不要用作它途传播!若因此而造成的任何责任,本人概不负责!
演示:http://chaoqing.duapp.com/chaoqing.swf?lists=daili/youku.com
演示:http://chaoqing.duapp.com/chaoqing.swf?lists=daili/youku.com
// 防盗链
$Anti_theft = False; // 是否开启防盗链 True 为开启,False 为关闭。
// 需要输出那些分类的,仅在直接调用php的情况下有效。
//不需要输出,直接注释掉或删除那一行。
$p_olist = array(
84=>"纪录片",
85=>"综艺",
96=>"电影",
97=>"电视剧",
100=>"动漫"
);
$p_showlist = array(
86=>"娱乐",
87=>"教育",
88=>"旅游",
89=>"时尚",
90=>"母婴",
91=>"资讯",
92=>"原创",
94=>"搞笑",
98=>"体育",
99=>"游戏",
102=>"广告",
103=>"生活",
104=>"汽车",
105=>"科技"
);
//好了,下面的东西就不要乱动了,动了后果自负。
error_reporting(0);
header("Content-type: text/xml; charset=utf-8");
//获得当前页面的URL
$fname = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
if($Anti_theft == True){
$refer = $_SERVER["HTTP_REFERER"];
preg_match('/(.*):\/\/(.*)\//imsU',$refer,$refer);
if ($_SERVER['SERVER_NAME'] != $refer[2]){
$xml.= '
';
echo $xml;
exit;
}
}
if (isset($_GET['show'])){
// 展示SHOW所有视屏 //
$xml = get_show_page($_GET['show']);
} elseif (isset($_GET['movie_show'])) {
// 如果传来的是 电影页面。
$xml = get_movie_show($_GET['movie_show']);
} elseif (isset($_GET['olist']) and isset($_GET['showlist'])){
// 同时传来 olist 与 showlist 时,拒绝输出。//
echo "你是想叫我闹哪个?";
} elseif ( isset($_GET['olist']) ){
// 处理 olist 列表 //
if (isset($_GET['page'])) {
// 传来页数,输出该页内容 //
$xml = get_olist_page($_GET['olist'],$_GET['page']);
} else {
// 没有传来页数,则输出页数。//
$xml = get_list_page("olist",$_GET['olist']);
}
} elseif ( isset($_GET['showlist']) ){
// 处理 showlist 列表
if (isset($_GET['page'])) {
// 传来页数,输出该页内容
$xml = get_showlist_page($_GET['showlist'],page);
} else {
// 没有传来页数,则输出页数。 //
$xml = get_list_page("showlist",$_GET['showlist']);
}
} else {
// 没有传来任何值,输出分类列表。
$xml = get_vlist();
}
// 两头附加上
$xml ="\n" . $xml . '
';
// 如果不为 调试模式 ,则正常输出。
if(!isset($_GET['debug'])){
echo $xml;
}
// 以下 获取并产生相关的列表
//输出所有支持的分类列表
function get_vlist() {
global $fname;
global $p_olist;
global $p_showlist;
$list = '';
foreach($p_olist as $key=>$id)
{
$list.=' '."\n";
}
$list.=' '."\n";
foreach($p_showlist as $key=>$id)
{
$list.=' '."\n";
}
return $list;
}
//获取分页数量。
function get_list_page($v_name,$v_id) {
global $fname;
$list = '';
if($v_name == "olist"){
$url="http://www.youku.com/v_olist/c_" . $v_id . ".html";
} elseif($v_name == "showlist") {
$url="http://www.youku.com/v_showlist/c" . $v_id . ".html";
}
$url=g_contents($url);
preg_match('/...(.*)
(.*)/imsU',$url,$page);
$page=$page[4];
if ($page == ""){
preg_match('/(.*)/imsU',$url,$page);
preg_match_all('/charset="(.*)">(.*)/imsU',$page[1],$page);
$page = end($page[2]);
}
if($page!="")for($i=1;$i
$list.=' '."\n";
}
return $list;
}
// 获取指定 olist 某页的所有视频
function get_olist_page($v_id,$page){
global $fname;
if ($v_id == 96){
return get_olist_movie_page($page);
}
// http://www.youku.com/v_olist/c_85_p_4.html
$url='http://www.youku.com/v_olist/c_' . $v_id . '_p_'.$page.'.html';
$url=g_contents($url);
$list='';
preg_match('/(.*)/imsU',$url,$arr);
preg_match_all('|-
//print_r($id);
$ids=$id[1];
$title=$id[2];
foreach($ids as $k=>$id ){
$list.=' '."\n";
}
return $list;
}
// 针对 电影页面,特别制作。
function get_olist_movie_page($page){
global $fname;
$url='http://www.youku.com/v_olist/c_96_p_'.$page.'.html';
$url=g_contents($url);
$list='';
preg_match('/(.*)/imsU',$url,$arr);
preg_match_all('|
-
(.*)(.*)(.*)|imsU',$arr[1],$id);
$e_id=$id[1];
$e_title=$id[2];
$e_Actor=$id[5];
$e_type=$id[7];
$e_free=$id[9];
foreach($e_id as $k=>$e_id ){
preg_match_all('|>(.*)|imsU',$e_Actor[$k],$Actors);
$Actors = $Actors[1];
//print_r($Actors);
$Actor = '';
foreach($Actors as $key=>$k_id ){
if ($key != 0){
$Actor.= ",";
}
$Actor.= $k_id;
}
$e_typeB = "";
if($e_type[$k] != "正片"){
$e_typeB = '[预]';
}
if($e_free[$k] == "今日新增:"){
$list.=' '."\n";
}
}
return $list;
}
// 输出电影页面细节。
function get_movie_show($show_id){
$url='http://www.youku.com/show_page/id_' . $show_id . '.html';
$url=g_contents($url);
$list='';
preg_match("|videoUrl:'http://v.youku.com/v_show/id_(\w{13}).html'(.*)>播放预告片|imsU",$url,$e_notice);
preg_match('|href="http://v.youku.com/v_show/id_(\w{13}).html" target="_blank">播放正片|imsU',$url,$e_formal);
preg_match_all('|http:\/\/v.youku.com\/v_show\/id_(\w{13}).html(.*)>(.*)|imsU',$url,$id);
if($e_formal[1] != ""){$list.=' '."\n";}
if($e_notice[1] != ""){$list.=' '."\n";}
//print_r($id);
$e_title=$id[3];
foreach($e_title as $key=>$k_id ){
if($k_id != ""){
preg_match('//imsU',$k_id,$ids);
if($ids[1] == ""){
$list.=' '."\n";
}
}
}
return $list;
}
//输出视频列表
function get_show_page($show_id){
$url='http://www.youku.com/show_page/id_'.$show_id.'.html';
$url=g_contents($url);
$list='';
preg_match('/id="zySeriesTab">(.*)/imsU',$url,$arr);
preg_match_all('/-
//print_r($id);
if($id[1][0] == ""){$id[1][0] = "reload_1";}
foreach ($id[1] as $reload)
{
$url="http://www.youku.com/show_episode/id_" . $show_id . ".html?dt=json&divid=" . $reload . "&__rt=1&__ro=" . $reload;
$url=g_contents($url);
//preg_match_all('/href="http:\/\/v.youku.com\/v_show\/id_(.*).html/',$url,$v_id);
//preg_match_all('/target="_blank">(.*)/',$url,$v_name);
preg_match_all('|href="http://v.youku.com/v_show/id_(.*).html" t(.*)_blank">(.*)
|',$url,$v_name);
$v_id = $v_name[1];
$v_name = $v_name[3];
foreach($v_id as $key=>$id)
{
//echo $v_name[$key].'=>'.$value . "\n";
$list.=' '."\n";
}
}
return $list;
}
// 输出 showlist 的视频列表
function get_showlist_page($show_id,$page){
$url='http://www.youku.com/v_showlist/c' . $show_id . 'p' . $page . '.html';
$url=g_contents($url);
$list='';
preg_match('/(.*)/imsU',$url,$arr);
preg_match_all('||imsU',$arr[1],$id);
//print_r($id);
$v_id = $id[1];
$v_title = $id[2];
foreach($v_id as $key=>$id)
{
//echo $v_name[$key].'=>'.$value . "\n";
$list.=' '."\n";
}
return $list;
}
//一些共用的处理参数。
// 转义特殊符号。
function str_escape($str_subject) {
$arr_search = array('','&','\'','"');
$arr_replace = array('','&',''','"');
$str = str_ireplace($arr_search,$arr_replace,$str_subject);
return $str;
}
//伪造用户User Agent 读取网页内容。
// 可用 file_get_contents(filename); 代替。
function g_contents($url) {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
@ $data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
AD:真正免费,域名+虚机+企业邮箱=0元
上一篇: php里array_work用法实例分析