PPTV解析源码

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

PPTV解析源码

PPTV解析源码

  1. require_once(“../include/global.inc.php”);  
  2. $host = GlobalBase::is_https().$_SERVER[“HTTP_HOST”];  
  3. if(isset($_REQUEST['url’])){  
  4.     $url = $_REQUEST['url’];  
  5.     $content = preg_replace(“#(getPlayEncode\(|\);)#”,“”,file_get_contents($url));  
  6.     $root = json_decode($content,true)[“childNodes”];  
  7.     //print_r($content);exit;  
  8.     $token = PPTVToKey::token();  
  9.     $videos = array();  
  10.     foreach ($root as $key => $value) {  
  11.         $tagName = $value[“tagName”];// “dt”  
  12.         if($tagName==“channel”){  
  13.             foreach ($value[“childNodes”as $_key => $_value) {  
  14.                 if($_value[“tagName”]==“file”){  
  15.                     foreach ($_value[“childNodes”as $__key => $__value) {  
  16.                         $rid = $__value[“rid”];//视频文件名  
  17.                         $ft = $__value[“ft”];//视频类型  
  18.                         switch ($ft) {  
  19.                             case 0:$def = “流畅”break;//480X270  
  20.                             case 1:$def = “高清”break;//720X404  
  21.                             case 2:$def = “超清”break;//1280X720  
  22.                             case 3:$def = “蓝光”break;//1920X1080  
  23.                             case 4:$def = “原画”break;//1920X1080  
  24.                         }  
  25.                         $videos[$ft][“rid”] = str_replace(“.mp4″,“”,$rid);  
  26.                         $videos[$ft][“def”] = $def;  
  27.                     }  
  28.                 }  
  29.             }  
  30.         }else if($tagName==“dt”){  
  31.             $ft = $value[“ft”];  
  32.             foreach ($value[“childNodes”as $_key => $_value) {  
  33.                 $_tagName = $_value[“tagName”];  
  34.                 switch ($_tagName) {  
  35.                     case 'sh’:$sh = $_value[“childNodes”][0];break;  
  36.                     case 'key’:$key = $_value[“childNodes”][0];break;  
  37.                 }  
  38.             }  
  39.             $videos[$ft][“sh”] = $sh;  
  40.             $videos[$ft][“key”] = $key;  
  41.         }  
  42.     }  
  43.     //if(count($videos)==5){//移除原画质  
  44.     //  array_splice($videos,4,1);   
  45.     //}  
  46.     array_splice($videos,0,1); //移除流畅  
  47.     foreach ($videos as $key => $value) {  
  48.         $xml = curl(“http://drag.synacast.com/”.$value[“rid”].“.mp40drag”);  
  49.         preg_match_all('#duration=“(.*?)”#’,$xml,$duration);  
  50.         preg_match_all('#filesize=“(\d+)”#’,$xml,$filesize);  
  51.         $videos[$key][“dragdata”][“dur”] = $duration[1];//分段时间  
  52.         $videos[$key][“dragdata”][“fs”] = $filesize[1];//分段文件大小  
  53.   
  54.     }  
  55.     $data[“data”] = $videos;  
  56.     $data[“token”] = $token;  
  57.     echo json_encode($data);  
  58. }  
  59. if(isset($_REQUEST['data’])&&isset($_REQUEST['vid’])){  
  60.     $data = json_encode(json_decode(base64_decode($_REQUEST['data’])));  
  61.     //print_r($_REQUEST['data’]);exit;  
  62.     file_put_contents(PPTV_TEMP_PATH.$_REQUEST['vid’].“.json”,$data);  
  63.     echo “./video/pptv.php?vid=”.$_REQUEST['vid’];  
  64. }elseif(isset($_REQUEST['vid’])){  
  65.     $file = PPTV_TEMP_PATH.$_REQUEST['vid’].“.json”;  
  66.     //print_r($file.’ddddddddddddddddddd’);exit;  
  67.     $data = file_get_contents($file);  
  68.     unlink($file);  
  69.     echo $data;  
  70. }  
  71. function curl($url)  
  72. {  
  73.     $params[“ua”] = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36″;  
  74.     return GlobalBase::curl($url,$params);  
  75. }  
  76. class PPTVToKey   
  77. {  
  78.     public static function string($abyte2) {  
  79.         $k = “”;  
  80.         for ($i=0; $i < count($abyte2); $i++) $k .= chr($abyte2[$i]);  
  81.         return trim($k);  
  82.     }  
  83.     public static function timeArray() {  
  84.         $i = 0;  
  85.         $abyte = array();  
  86.         $time = $_SERVER['REQUEST_TIME’] + 300;  
  87.         while ($i < 16) {  
  88.             $bytes;  
  89.             $abyte[$i] = 0xf & $time >> 28 – 4 * ($i % 8);  
  90.             $byte = $abyte[$i];  
  91.             if ($abyte[$i] > 9) $bytes = 87; else $bytes = 48;  
  92.             $abyte[$i] = $byte + $bytes;  
  93.             if ($i > 7 || $abyte[$i] == 0) {  
  94.                 $abyte[$i] = mt_rand(1, 256);  
  95.             }  
  96.             $i++;  
  97.         }  
  98.         return $abyte;  
  99.     }  
  100.     public static function token() {  
  101.         $keyArray = array();  
  102.         $tmAray = self::timeArray();  
  103.         $tmCode = array(113, 113, 113, 113, 113, 119, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0);  
  104.         $tmAray = self::encrypt_a($tmAray, 16, $tmCode);  
  105.         $keyArray = self::encrypt_b($tmAray, 16, $keyArray, 33);  
  106.         return self::string($keyArray);  
  107.     }  
  108.     public static function keyCode($tmCode) {  
  109.         $k = 0;  
  110.         for ($i=0; $i < 16; $i++) {  
  111.             $k ^= $tmCode[$i] << 8 * ($i % 4);  
  112.         }  
  113.         return $k;  
  114.     }  
  115.     public static function b($num) {  
  116.         $a = 0xffffffff & $num;  
  117.         $b = sprintf(“%u”$a);  
  118.         return $b * 1;  
  119.     }  
  120.     public static function encrypt_a($tmArray$i$tmCode) {  
  121.         $l = self::keyCode($tmCode);  
  122.         $l1 = $l << 8 | $l >> 24;  
  123.         $l2 = $l << 16 | $l >> 16;  
  124.         $l3 = $l << 24 | $l >> 8;  
  125.         for ($k = 0; $k + 16 <= $i$k += 16) {  
  126.             $l4 = 0;  
  127.             $l5 = 0;  
  128.             $l6 = 0;  
  129.             for ($i1 = 0; $i1 < 4; $i1++) {  
  130.                 $l4 |= (0xff & $tmArray[$k + $i1]) << $i1 * 8;  
  131.                 $l5 |= (0xff & $tmArray[4 + ($k + $i1)]) << $i1 * 8;  
  132.             }  
  133.             for ($j1 = 0; $j1 < 32; $j1++) {  
  134.                 $l6 = self::b($l6 – 0x61c88647);  
  135.                 $a1 = self::b($l5 << 4);  
  136.                 $a2 = self::b($l + $a1);  
  137.                 $a3 = self::b($l5 + $l6);  
  138.                 $a4 = self::b($a2 ^ $a3);  
  139.                 $a5 = self::b($l5 >> 5);  
  140.                 $a6 = self::b($l1 + $a5);  
  141.                 $l4 = self::b($l4 + ($a4 ^ $a6));  
  142.                 $b1 = self::b($l4 << 4);  
  143.                 $b2 = self::b($l2 + $b1);  
  144.                 $b3 = self::b($l4 + $l6);  
  145.                 $b4 = self::b($b2 ^ $b3);  
  146.                 $b5 = self::b($l4 >> 5);  
  147.                 $b6 = self::b($l3 + $b5);  
  148.                 $l5 = self::b($l5 + ($b4 ^ $b6));  
  149.             }  
  150.             for ($k1 = 0; $k1 < 4; $k1++) {  
  151.                 $tmArray[$k + $k1] = (255 & $l4 >> $k1 * 8);  
  152.                 $tmArray[4 + ($k + $k1)] = (255 & $l5 >> $k1 * 8);  
  153.             }  
  154.         }  
  155.         return $tmArray;  
  156.     }  
  157.     public static function encrypt_b($tmAray$i$keyArray$j) {  
  158.         for ($k = 0; $k < $i$k++) {  
  159.             $keyArray[$k * 2] = (0xf & $tmAray[$k]);  
  160.             $keyArray[1 + $k * 2] = (0xf & $tmAray[$k] >> 4);  
  161.         }  
  162.         $l = 0;  
  163.         while ($l < $i * 2) {  
  164.             $byte1;  
  165.             $byte0 = $keyArray[$l];  
  166.             if ($keyArray[$l] > 9) {  
  167.                 $byte1 = 87;  
  168.             } else {  
  169.                 $byte1 = 48;  
  170.             }  
  171.             $keyArray[$l] = $byte0 + $byte1;  
  172.             $l++;  
  173.         }  
  174.         $keyArray[$i * 2] = 0;  
  175.         return $keyArray;  
  176.     }  
  177. }  
  178.  ?>  

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

[ppwp passwords=”zhishitu.cn”]

下载体验

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

如何获取解压密码

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

[/ppwp]

点击下载

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

常见问题FAQ

发表回复

分享最优质的学习资料

立即查看 了解详情