说明:
1 首先这个中间件是我自己写的,它是一个单独的PHP文件。
2 初次运行后会生成一个JSON的文件作为保存内容所用
3 它的原理是比如你在该文件后面添加上播放路径,它会利用识别码,也就是你路径里的如域名或者最后的后缀进行匹配,然后进行直接播放,如果有几个相同的满足条件的解析,会直接在下面以按钮方式切换。
第一次会初始化操作,生成config.json文件
这个文件我顶部已经带了注释了自己看,你们自己保存下面的源码为PHP文件即可。
注意:默认登录的账号密码都是admin,进去后分别在解析管理和识别管理内选择导入列表操作
代码在最底部,自行保存为PHP文件测试。
/*
PHP全自动视频解析
软件说明:
1 首先需要添加识别,比如一个视频播放连接,必然有域名存在,识别就是对播放连接进行搜索匹配,如果连接内的网站地址某段字符串和识别相同,就能获得这个播放连接是那个网站的.
2 当获取的比如某个网站的识别后,我们把这个识别去匹配播放解析组,获取到的任何支持该网站视频的解析放在播放页的下面,方便用户切换.
3 好处是下面的解析地址根据播放网站发生变化,不支持的肯定不会显示出来.
4 本文件名字没有任何限制,你可以变更为index.php
软件流程:
播放地址为:http://v.youku.com/v_show/id_XMjk1NTMwMjk4MA==.html
解析地址为:http://域名/player.php?url=http://v.youku.com/v_show/id_XMjk1NTMwMjk4MA==.html
开始识别:识别关键字为youku,查到播放连接里有youku,匹配为优酷的播放连接.
解析匹配:搜索解析标签里是否有youku这个字样的支持解析.
开始播放:匹配完毕,自动把匹配后的所有支持该网站的解析路径放在播放页面底部供用户切换使用.
使用说明:
1、本程序为单文件程序
2、账号、密码(md5加密)、解析源、识别源都存放在 $json_name ='config.json'; 内,你可以自己重命名这个文件的名字。
3、config.json 文件为自动生成文件。
4、第一次使用初始账号和密码都为:admin
路径页面说明:
1 解析管理:player.php (不加任何参数可进入管理)
2 解析播放:player.php?url=视频地址
3 自由播放:player.php?url= 后面不加视频地址
管理页面
1 player.php?type=1 解析添加,修改,删除管理
2 player.php?type=2 识别添加,修改,删除管理
3 player.php?type=3 修改账号密码管理
备注:本地视频格式识别后缀修改请在本源码第--65列---修改(说明:没有显示的本地后缀你也可以手动添加到列表内,照样可以识别不影响使用)
*/
error_reporting(0);
session_start();
//函数
//判断JSON内容并输出
function go_json($json_name,$i=1){
$json_api = file_get_contents($json_name); //读取索引
$json_api=trim($json_api,chr(239).chr(187).chr(191)); //处理JSON
$jsondata = json_decode($json_api, true); //转换JSON为数组
if($i==1){
return $jsondata; //默认输出数组格式
}else{
return $json_api; //输出JSON格式
}
}
//取文件后缀名
function getExt($url)
{
$path=parse_url($url);
$str=explode('.',$path['path']);
return $str[1];
}
//函数结束
//访问终端判断
$agent = $_SERVER['HTTP_USER_AGENT'];
if(strpos($agent,"comFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"Android") || strpos($agent,"Windows CE") || strpos($agent,"SymbianOS")){
$terminal="wap"; //手机端
}else{
$terminal="pc";//电脑端
}
$localplay = 'm3u8|mp4|flv|avi|asf|rmvb|rm|asf|divx|mpg|mpeg|mpe|wmv|mkv|vob|swf|mp3 '; //添加修改本地视频格式识别后缀请在这里添加
$localarr = explode('|',$localplay);
$i=1001;
foreach($localarr as $value){ //本地播放器配置
$localTags=$localTags. ''.$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('
管理登录');
}
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
$ID=$parse[$i]['ID'];
$Name=$parse[$i]['Name'];
$Url=$parse[$i]['Url'];
$Tags=$parse[$i]['Tags'];
$MD5