乐视解析源码

作者 : King 本文共12个字,预计阅读时间需要1分钟 发布时间: 2024-10-4 共13人阅读

乐视解析源码

乐视解析源码

  1. $id = Le::parse($url);  
  2. $video_info = Le::parseVideoUrl($id);  
  3. echo json_encode($video_info);  
  4. /** 
  5.  
  6. */  
  7. class Le  
  8. {  
  9.     public static function parse($url)  
  10.     {  
  11.         preg_match('#vplay/(.*?).htm#’,$url,$ids);  
  12.         if ($ids[1]) {  
  13.             $name = “LE-“.md5($ids[1]);  
  14.         }else{  
  15.             $name = “LE-“.md5($url);  
  16.         }  
  17.   
  18.         if (file_exists(NAME_PATH.$name)) {  
  19.             $data = json_decode(file_get_contents(NAME_PATH.$name),true);  
  20.             $pay = $data['pay’];  
  21.             $vid = $data['vid’];  
  22.             $title = $data['title’];  
  23.             $poster = $data['poster’];  
  24.         }else{  
  25.             $content = self::curl($url);  
  26.             preg_match('#vid: (.*?),#’,$content,$vids);  
  27.             preg_match('#title:“(.*?)”,#’,$content,$titles);  
  28.             preg_match('#videoPic:“(.*?)”,#’,$content,$pics);  
  29.             preg_match('#isPay: (.*?),#’,$content,$isPay);  
  30.             $vid = $vids[1];  
  31.             $title = $titles[1];  
  32.             $poster = !emptyempty($pics[1]) ? str_replace('320_200′,’640_320’,$pics[1]) : ;  
  33.             $pay = $isPay[1];//是否付费  
  34.             file_put_contents(NAME_PATH.$name, json_encode(array(“vid”=>$vid,“pay”=>$pay,“title”=>$title,“poster”=>$poster)));  
  35.         }  
  36.         return $vid;  
  37.     }  
  38.     public static function parseVideoUrl($vid){  
  39.         $time = number_format(microtime(true),3,'.’,);   
  40.         $tkey = self::getMmsKey($time);  
  41.         $tss = GlobalBase::is_ipad() ? “no” : “ios”;  
  42.         $splatid = GlobalBase::is_ipad() ? 107 : 105;  
  43.         $domain = GlobalBase::is_ipad() ? 'm.le.com’ : 'www.le.com’;  
  44.         $source = GlobalBase::is_ipad() ? '1001’ : '1000’;  
  45.         //$url = “http://player-pc.le.com/mms/out/video/playJson?id={$vid}&format=1&tkey={$tkey}&domain=www.le.com&dvtype=1000&region=cn&accessyx=1&platid=3&splatid=304&source=1000&tss=no”;  
  46.         $url = “http://player-pc.le.com/mms/out/video/playJson?id={$vid}&platid=1&splatid={$splatid}&format=1&tkey={$tkey}&domain={$domain}&dvtype=720p&devid=70A6E0A1FB93DA437B79DA594B3C9D03B428043B&region=cn&source={$source}&accessyx=1&tss={$tss}”;//&tss=tvts  
  47.   
  48.         $data = self::curl($url);  
  49.         //print_r($data);exit;  
  50.         $content = json_decode($data,true);  
  51.         $playurl = $content[“msgs”][“playurl”];  
  52.         $point = $content[“msgs”][“point”];  
  53.         $hot = $point[“hot”];  
  54.         $seek = $point[“skip”][0];  
  55.   
  56.         $pic = $playurl[“picAll”][“640*320″];  
  57.         $domains = array(“http://play.g3proxy.lecloud.com”,“http://bplay.g3proxy.lecloud.com”,“http://g3.letv.com”);  
  58.         $domain = $domains[0];//$domains[mt_rand(0,count($domains)-1)];  
  59.         $dispatch = $playurl[“dispatch”];  
  60.         $duration = $playurl[“duration”];  
  61.         foreach ($dispatch as $key => $value) {  
  62.             switch ($key) {  
  63.                 case '350’:$def = “流畅”;break;  
  64.                 case '1000’:$def = “超清”;break;  
  65.                 case '1300’:$def = “原画”;break;  
  66.                 case '720p’:$def = “720P”;break;  
  67.                 case '1080p’:$def = “1080P”;break;  
  68.             }  
  69.             $vurl = $domain.$value[0];//self::getVideoUrl($domain.$value[0].”&format=1&expect=3&sign=letv”); //&format=1为json &format=1为xml  preg_replace(“#/vod/v2/#”,”/  
  70.   
  71.             if (GlobalBase::is_ipad()) {  
  72.                 if($key ==”1000“){ 
  73.                     $videoinfo['code’] = 200; 
  74.                     //$videoinfo['type’] = 'le’; 
  75.                     //$videoinfo['play’] = 'h5mp4’; 
  76.                     $videoinfo[“data“][“url“] = $vurl; 
  77.                     return $videoinfo;exit; 
  78.                 } 
  79.             }else{ 
  80.                 if ($key == '1300’ && $vurl != “) { 
  81.                     $fdata[0]['url’] = $vurl; 
  82.                     $fdata[0]['def’] = '原画’; 
  83.                 }  
  84.                 if ($key == '1080p’ && $vurl != “) { 
  85.                     $fdata[1]['url’] = $vurl; 
  86.                     $fdata[1]['def’] = '1080P’; 
  87.                 } 
  88.                 if ($key == '1000’ && $vurl != “) { 
  89.                     $fdata[2]['url’] = $vurl; 
  90.                     $fdata[2]['def’] = '超清’; 
  91.                 } 
  92.                 if ($key == '720p’ && $vurl != “) { 
  93.                     $fdata[3]['url’] = $vurl; 
  94.                     $fdata[3]['def’] = '720P’; 
  95.                 } 
  96.                 if ($key == '350’ && $vurl != “) { 
  97.                     $fdata[4]['url’] = $vurl; 
  98.                     $fdata[4]['def’] = '流畅’; 
  99.                 } 
  100.             } 
  101.         } 
  102.         for ($i=0; $i <= 10 ; $i++) {  
  103.             if ($fdata[$i] == “) {continue;} 
  104.             $key_arrays[]=$fdata[$i]; 
  105.         } 
  106.         $videoinfo['code’] = 200; 
  107.         $videoinfo['poster’] = $img; 
  108.         $videoinfo['name’] = $video_info[“coreVideoInfo“][“videoName“]; 
  109.         $videoinfo['play’] = “; 
  110.         $videoinfo[“data“][“video“][“file“] = $key_arrays[0]['url’]; 
  111.         $videoinfo[“data“][“video“][“type“] = “video/m3u8“; 
  112.         return $videoinfo; 
  113.     } 
  114.     public static function curl($url,$cookie=”“) 
  115.     { 
  116.         $params[“ua“] = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36“; 
  117.         $params[“cookie“] = $cookie; 
  118.         return GlobalBase::curl($url,$params); 
  119.     } 
  120.     //==================================================以下代码不需要修改========================================================== 
  121.     /** 
  122.      * [getVideoUrl 获取视频最终地址] 
  123.      * @param  [type] $url [description] 
  124.      * @return [type]      [description] 
  125.      */ 
  126.     private static function getVideoUrl($url){ 
  127.         $data = GlobalBase::curl($url); 
  128.         $content = json_decode($data,true); 
  129.         $location = $content[“location“]; 
  130.         $nodelist = $content[“nodelist“]; 
  131.         $vurl = $nodelist[mt_rand(0,count($nodelist)-1)][“location“]; 
  132.         return $location; 
  133.     } 
  134.     //========================================= 方式二 ================================================= 
  135.     /** 
  136.      * [getMmsKey 获取tkey] 
  137.      * @param  [type] $e [时间] 
  138.      * @return [type]    [description] 
  139.      */ 
  140.     private static function getMmsKey($e) 
  141.     { 
  142.         $t = 185025305; 
  143.         $r = 8; 
  144.         $n = $e; 
  145.         $n = self::rotateRight($n, $r); 
  146.         $o = self::s2v(“O“,$n, $t); 
  147.         return $o; 
  148.     } 
  149.     private static function rotateRight($e, $t) 
  150.     { 
  151.         for ($r, $n = 0; self::s2v(“g“,$t, $n); $n++){ 
  152.             $r = self::s2v(“o”,1,$e);  
  153.             $e >>= 1;  
  154.             $r <<= 31;  
  155.             $e += $r;  
  156.         }  
  157.         return $e;  
  158.     }  
  159.     private static function s2v($k,$y,$r){  
  160.         switch ($k) {  
  161.             case 'D’:return $y | $r;break;  
  162.             case 'd’:return $y % $r;break;  
  163.             case 'O’:return $y ^ $r;break;  
  164.             case 'k’:return $y < $r;break;  
  165.             case 'J’:return $y >> $r;break;  
  166.             case 'R’:return $y === $r;break;  
  167.             case 'g’:return $y > $r;break;  
  168.             case 'o’:return $y & $r;break;  
  169.             case 'l’:return $y !== $r;break;  
  170.             case 'L’:return $y != $r;break;  
  171.             case 'a’:return $y – $r;break;  
  172.             case 'u’:return $y == $r;break;  
  173.             case 'e’:return $y << $r;break;  
  174.         }  
  175.     }  
  176. }  
  177. ?>  

下载仅供下载体验和测试学习,不得商用和正当使用。

[ppwp passwords=”zhishitu.cn”]

下载体验

应版权要求,禁止分享,敬请谅解,有问题务必找客服哈。

如何获取解压密码

有问题找客服哈,并领取学习福利!

[/ppwp]

点击下载

小鱼网是一个美好的开源学习社区,学习编程,学习WordPress,下载WordPress插件主题,
小鱼网 » 乐视解析源码

常见问题FAQ

发表回复

分享最优质的学习资料

立即查看 了解详情