讯睿CMS问答:给大家分享一个视频播放器中间件PHP源码

讯睿CMS问答:给大家分享一个视频播放器中间件PHP源码

2024-07-25 XunRuiCMS Sincere

问题:

说明:

1 首先这个中间件是我自己写的,它是一个单独的PHP文件。

2 初次运行后会生成一个JSON的文件作为保存内容所用

3 它的原理是比如你在该文件后面添加上播放路径,它会利用识别码,也就是你路径里的如域名或者最后的后缀进行匹配,然后进行直接播放,如果有几个相同的满足条件路径,会直接在下面变成切换按钮。

第一次会初始化操作,生成config.json文件

这个文件我顶部已经带了注释了自己看,你们自己保存下面的源码为PHP文件即可。

默认登录的账号密码都是admin,进去后分别在解析管理和识别管理内选择导入列表操作,如下:


QQ图片20171205234421.png

顺便说一句,该文件可以任意命名。拿来当播放器不错,我界面不咋样,以后有优化过的记得给我一份哦!

'.$value.'  '; ++$i; } //读取JSON文件 $json_name ='config.json'; $jsondata = go_json($json_name); if(is_array($jsondata)){ $userall = $jsondata['user']; $parse = $jsondata['parse']; $discern = $jsondata['discern']; }else{ $userall = array("id"=>"1","username"=>"admin","password"=>md5("admin")); $parse =array(); $discern =array(); $jsonarr = array( 'time' => date('y-m-d h:i:s',time()), 'user' => $userall, 'parse' => $parse, 'discern' => $discern ); file_put_contents($json_name,json_encode($jsonarr)); } //---------------------------------------------- $play_url = $_GET['url']; //播放解析接口 if(empty($play_url)== FALSE){ //播放器的前期设置 $level=0; $play_url = strtolower($play_url); //避免连接大写转换成小写字母 $play_suffix = getExt($play_url); //获取后缀 $play_type=''; //播放器识别字符 $play_Name=''; //播放器识别名称 $play_Arry=array(); //播放器数组 $_SESSION['ok']=0; } //解析结束进行跳转 //---------------------------------------------- //管理登录开始 if($_GET['out']==1){$_SESSION['ok']=0;} $time =date('y-m-d h:i:s',time()); $username = $_POST['username']; $password = $_POST['password']; $alter = $_POST['alter']; if($alter ==1 && $_SESSION['ok']==1){ $userTT = array("id"=>"1","username"=>$_POST['username'],"password"=>md5($_POST['password'])); $jsonarr = array( 'time' => date('y-m-d h:i:s',time()), 'user' => $userTT, 'parse' => $parse, 'discern' => $discern ); file_put_contents($json_name,json_encode($jsonarr)); echo ""; session_destroy(); } //if(isset($username) && empty($_POST['alter'])!== FALSE){ if(isset($username) && empty($_POST['alter'])!== FALSE){ if($username !== $userall['username'])echo ""; elseif(md5($password)!==$userall['password'])echo ""; elseif($username == $userall['username'] && md5($password)==$userall['password']){$_SESSION['ok'] = 1;$_SESSION['username']=$userall['username'];$_SESSION['password']=$userall['password']; header('location:?');} } if(!isset($_SESSION['ok']) && !isset($play_url)== true){ exit(' 管理登录

服务器时间:'.$time.'

     转到播放地址页
'); } if($_SESSION['ok'] == 1){ //管理登录结束 //开始后台管理 $all =$_GET['all']; $save = $_GET['save']; //操作 0=读取 1=添加,2=修改,3=删除 (Add, delete, modify) //判断项目 $type =$_GET['type']; //分类 1=添加删除解析连接地址 或 2 =添加删除识别字段 //数据项目 $sbid = $_GET['sbid']; //识别ID,修改和删除使用的 $sbname = $_GET['sbname']; //识别名称 $sburl = $_GET['sburl']; //识别字段 $sbkey = $_GET['sbkey']; //识别字段 $jxid = $_GET['jxid']; //解析ID,修改和删除使用的 $jxname = $_GET['jxname']; //解析名称 $jxurl = $_GET['jxurl']; //解析字段 $jxtags = $_GET['tags']; //解析标签 $md5 = $_GET['md5']; $level = $_GET['level']; $yd = $_GET['yd']; $copy = $_GET['copy']; if(empty($level))$level=0; if(empty($type))$type=1; if(empty($save))$save=1; if(empty($yd))$yd=0; if($save==1){$an ='添加';$fg='btn-danger';}elseif($save==2 ){$an ='修改';$fg='btn-primary';}elseif($save==3){$an ='删除'; $fg='btn-danger'; } //处理和保存数组 //添加删除数据 if($level==1){ if($type==1){ if($save==1){$md5 = md5($jxurl);} $saveall=''; for ($i=0;$i$i+1,'Name'=>$Name,'Url'=>$Url,'Tags'=>$Tags,'md5'=>$MD5);} if($save==2){if($yd==1){$jxname=$Name; $jxurl=$Url;$jxtags=$Tags; $parsearr[$i]=array('ID'=>$i+1,'Name'=>$Name,'Url'=>$Url,'Tags'=>$Tags,'md5'=>$MD5);}else{$parsearr[$i]=array('ID'=>$i+1,'Name'=>$jxname,'Url'=>$jxurl,'Tags'=>$jxtags,'md5'=>md5($jxurl));$title='解析数据修改成功!';}} if($save==3){continue;$title='解析数据删除成功!';} }else{ $parsearr[$i]=array('ID'=>$i+1,'Name'=>$Name,'Url'=>$Url,'Tags'=>$Tags,'md5'=>$MD5); } } if($save==1){ if(strripos($saveall,$md5)!== FALSE){$title='已经有相同解析地址数据!';}else{$parsearr[count($parsearr)] = array('ID'=>count($parsearr)+1,'Name'=>$jxname,'Url'=>$jxurl,'Tags'=>$jxtags,'md5'=>md5($jxurl));$title='解析数据添加成功!';} } $parse = $parsearr; }elseif($type==2){ if($save==1){$md5 = md5($sbKey);} $saveall=''; for ($i=0;$i$i+1,'Name'=>$Name,'Url'=>$Url,'Key'=>$Key,'md5'=>$MD5); } if($save==2){ if($yd==1){$sbname=$Name; $sburl=$Url;$sbkey=$Key;$discernarr[$i] = array('ID'=>$i+1,'Name'=>$Name,'Url'=>$Url,'Key'=>$Key,'md5'=>$MD5);}else{$discernarr[$i] = array('ID'=>$i+1,'Name'=>$sbname,'Url'=>$sburl,'Key'=>$sbkey,'md5'=>md5($sbKey));$title='识别数据修改成功!';}} if($save==3){continue;$title='识别数据删除成功!';} }else{ $discernarr[$i] = array('ID'=>$i+1,'Name'=>$Name,'Url'=>$Url,'Key'=>$Key,'md5'=>$MD5); } } if($save==1){ if(strripos($saveall,$md5)!== FALSE){$title='已经有相同识别地址数据!';}else{$discernarr[count($discernarr)] = array('ID'=>count($discernarr)+1,'Name'=>$sbname,'Url'=>$sburl,'Key'=>$sbkey,'md5'=>md5($sbkey));$title='识别数据添加成功!';} } $discern = $discernarr; } //添加删除数据结束 //批量识别放入 if($all==2){ if($type==1){ $data = file_get_contents('Parse.json'); if($data==''){ $data='强强解析%%http://000o.cc/jx/ty.php?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#品优解析%%http://api.pucms.com/?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#速度牛解析%%http://api.wlzhan.com/sudu/?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#那片解析%%http://api.nepian.com/ckparse/?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#OFFLV解析%%http://aikan-tv.com/?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#花园解析%%http://j.zz22x.com/jx/?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#石头解析%%http://jiexi.071811.cc/jx2.php?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#旋风解析%%http://api.xfsub.com/index.php?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu,mp4,m3u8,#全民解析%%http://vip.jlsprh.com/index.php?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#桃阁解析%%http://api.taoge.la/jiexi/index.php?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#百域阁解析%%http://api.baiyug.cn/vip/index.php?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#云解析%%http://jiexi.92fz.cn/player/vip.php?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#vparse解析%%https://api.flvsp.com/?url=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu#Sup解析%%http://player.jidiaose.com/supapi/iframe.php?v=%%,acfun,sohu,ku6,iqiyi,youku,sina,tudou,letv,leyun,bilibili,wasu,56,cntv,fun,mgtv,pptv,ppyun,qq,tangdou,vlook,waqu,aipai,yinyuetai,youmi,m1905,miaopai,meipai,6cn,163,baofeng,baomihua,huya,huyazb,ifeng,longzhu,yy,yyzb,kuaishou,zhibo,douyu,weibo,xiaokaxiu,tucao,mtime'; } $dataarr=explode('#',$data); $parse =array(); for ($i=0;$i$i+1, 'Name'=>$all[0], 'Url'=>$all[1], 'Tags'=>$all[2], 'md5'=>md5($all[1]) );}} if($type==2){ $data = file_get_contents('Discern.json'); if($data==''){ $data='AC弹幕网%%acfun%%acfun#搜狐%%sohu%%sohu#酷6%%ku6%%ku6#爱奇艺%%iqiyi%%iqiyi#优酷%%youku%%youku#新浪%%sina%%sina#土豆%%tudou%%tudou#乐视%%letv%%le.com#乐视云%%leyun%%lecloud#哔哩哔哩%%bilibili%%bilibili#华数%%wasu%%wasu#我乐%%56%%56.com#CNTV%%cntv%%cntv#风行%%fun%%fun#芒果TV%%mgtv%%mgtv#PPTV%%pptv%%pptv.com#PPTV云%%ppyun%%pptvyun#QQ视频%%qq%%qq#糖豆%%tangdou%%tangdou#微录客%%vlook%%vlook#哇趣%%waqu%%waqu#爱拍%%aipai%%aipai#音乐台%%yinyuetai%%yinyuetai#优米%%youmi%%youmi#m1905%%m1905%%1905#秒拍%%miaopai%%miaopai#美拍%%meipai%%meipai#六间房%%6cn%%6.cn#网易公开课%%163%%163.com#暴风影音%%baofeng%%baofeng#爆米花%%baomihua%%baomihua#虎牙视频%%huya%%v.huya.com#虎牙直播%%huyazb%%www.huya.com#凤凰视频%%ifeng%%ifeng#龙珠视频%%longzhu%%longzhu#YY神曲%%yy%%shenqu.yy.com#YY直播%%yyzb%%www.yy.com#快手视频%%kuaishou%%kuaishou#直播解析%%zhibo%%zhibo.tv#斗鱼直播%%douyu%%douyu#微博%%weibo%%weibo#小咖秀%%xiaokaxiu%%xiaokaxiu#吐槽弹幕%%tucao%%tucao#时光网%%mtime%%mtime'; } $dataarr=explode('#',$data); $discern =array(); for ($i=0;$i$i+1, 'Name'=>$all[0], 'Url'=>$all[1], 'Key'=>$all[2], 'md5'=>md5($all[2]) );}} } //批量识别放入结束 $userall = array_merge($userall); $parse = array_merge($parse); $discern = array_merge($discern); //if($save==0){$save==2;} //if($level==1){$level=0;} //装载数组 $jsonarr = array( 'time' => date('y-m-d h:i:s',time()), 'user' => $userall, 'parse' => $parse, 'discern' => $discern ); //$json = toJson($jsonarr); $json = json_encode($jsonarr); if($save > 0){ file_put_contents($json_name,$json); } } } //读取数据输出到变量 //致处女座,不要把这两个读取的位置私自搞反,主要是方便URL先验证识别出播放的是那个网站的在到下面找解析地址给装进入 for ($i=0;$i'.$ID.''.$Name.''.$Url.''.$Key.'修改 | 删除 ';$parseTags = $parseTags. ''.$Name.'  '; $TagsAll =$TagsAll.','.$Url; $DiscernALL = $DiscernALL.$Name.'%%'.$Url.'%%'.$Key.'#'; //discern保存变量 } } if(empty($play_url)== FALSE){ if(empty($play_type)){ if($play_suffix=='html' || $play_suffix=='htm'){ $play_type=''; $play_Name ='原始播放'; }else{$play_type=$play_suffix; $play_Name = $play_suffix;} } } $s=0; for ($i=0;$i$Name,'playurl'=>$Url); } }else{ $lv = $i % 4; if($lv==1)$class ='class="info"'; if($lv==2)$class ='class="success"'; if($lv==3)$class ='class="error"'; if($lv==0)$class ='class="warning"'; $parseHtml =$parseHtml.''.$ID.''.$Name.''.$Url.'
鼠标悬浮查看
修改 | 删除 ';} $ParseALL = $ParseALL.$Name.'%%'.$Url.'%%'.$Tags.'#'; //parse保存变量 } $play_Arry = array_merge($play_Arry); if($copy==1){$ParseALL = substr($ParseALL,0,strlen($ParseALL)-1); file_put_contents('Parse.json',$ParseALL);echo "";} if($copy==2){$DiscernALL = substr($DiscernALL,0,strlen($DiscernALL)-1); file_put_contents('Discern.json',$DiscernALL);echo "";} //装载数组 ?> 视频在线解析 0){?>