|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 烟花 于 2026-4-18 00:17 编辑
- <?php
- class MgParser {
- private $session;
- public function __construct() {
- $this->session = curl_init();
- }
- private function get_string_md5($s) {
- return md5($s);
- }
- private function get_date_string($date) {
- return $date->format('Ymd');
- }
- private function get_dd_calcu_720p($pu_data, $program_id) {
- $keys = "0123456789";
- $dd_calcu = [];
- $len = strlen($pu_data) / 2;
- for ($i = 0; $i < $len; $i++) {
- $dd_calcu[] = $pu_data[strlen($pu_data) - $i - 1];
- $dd_calcu[] = $pu_data[$i];
- if ($i == 1) {
- $dd_calcu[] = "e";
- } elseif ($i == 2) {
- $date_str = $this->get_date_string(new DateTime());
- $dd_calcu[] = (strlen($date_str) > 6) ? $keys[(int)$date_str[6]] : "0";
- } elseif ($i == 3) {
- $dd_calcu[] = (strlen($program_id) > 2) ? $keys[(int)$program_id[2]] : "0";
- } elseif ($i == 4) {
- $dd_calcu[] = "0";
- }
- }
- return implode('', $dd_calcu);
- }
- private function get_dd_calcu_url_720p($pu_data_url, $program_id) {
- if (strpos($pu_data_url, "&puData=") === false) {
- return $pu_data_url;
- }
- try {
- $query_params = strpos($pu_data_url, "?") !== false
- ? substr($pu_data_url, strpos($pu_data_url, "?") + 1)
- : $pu_data_url;
- parse_str($query_params, $params);
- $pu_data = $params['puData'] ?? '';
- if (empty($pu_data)) {
- return $pu_data_url;
- }
- $dd_calcu = $this->get_dd_calcu_720p($pu_data, $program_id);
- $url_parts = explode('?', $pu_data_url, 2);
- $base_url = $url_parts[0];
- $query_string = $url_parts[1] ?? '';
- if ($query_string) {
-
- $query_string = preg_replace('/&?ddCalcu=[^&]*/', '', $query_string);
- $separator = (strpos($base_url, '?') !== false) ? '&' : '?';
- return $base_url . $separator . $query_string . '&ddCalcu=' . $dd_calcu;
- } else {
- $separator = (strpos($base_url, '?') !== false) ? '&' : '?';
- return $base_url . $separator . 'ddCalcu=' . $dd_calcu;
- }
- } catch (Exception $e) {
- return $pu_data_url;
- }
- }
- private function get_android_url_720p($pid) {
- $timestamp = round(microtime(true) * 1000);
- $app_version = "26000009";
- $headers = [
- "AppVersion: 2600000900",
- "TerminalId: android",
- "X-UP-CLIENT-CHANNEL-ID: 2600037000-99000-200300220100002",
- "User-Agent: Mozilla/5.0 (Linux; Android 10; SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36",
- "Accept: application/json",
- "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8",
- "Connection: keep-alive"
- ];
- $str_to_hash = $timestamp . $pid . $app_version;
- $md5_hash = $this->get_string_md5($str_to_hash);
- $suffix = "770fafdf5ba04d279a59ef1600baae98migu6666";
- $sign = $this->get_string_md5($md5_hash . $suffix);
- $rate_type = 3;
- if ($pid == "608831231") {
- $rate_type = 2;
- }
- $base_url = "https://play.miguvideo.com/playurl/v1/play/playurl";
- $params = "?sign=" . $sign . "&rateType=" . $rate_type . "&contId=" . $pid . "×tamp=" . $timestamp . "&salt=66666601";
- $full_url = $base_url . $params;
- $ch = curl_init($full_url);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_TIMEOUT, 10);
- $response = curl_exec($ch);
- $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- curl_close($ch);
- if ($http_code != 200) {
- return null;
- }
- $resp_data = json_decode($response, true);
- if (($resp_data['code'] ?? '') != "200" && ($resp_data['resultCode'] ?? '') != "200") {
- return null;
- }
- $url = $resp_data['body']['urlInfo']['url'] ?? null;
- if (empty($url)) {
- return null;
- }
- return $this->get_dd_calcu_url_720p($url, $pid);
- }
- public function parse($id) {
- $final_url = $this->get_android_url_720p($id);
- if ($final_url) {
- header("Content-Type: application/vnd.apple.mpegurl");
- header("Location: " . $final_url);
- exit;
- } else {
- http_response_code(404);
- echo "无法获取播放地址";
- exit;
- }
- }
- }
- $channels = [
- "608807420" => "CCTV1综合",
- "631780532" => "CCTV2财经",
- "624878271" => "CCTV3综艺",
- "631780421" => "CCTV4中文国际",
- "641886683" => "CCTV5体育",
- "641886773" => "CCTV5+体育赛事",
- "624878396" => "CCTV6电影",
- "673168121" => "CCTV7国防军事",
- "624878356" => "CCTV8电视剧",
- "673168140" => "CCTV9纪录",
- "624878405" => "CCTV10科教",
- "667987558" => "CCTV11戏曲",
- "673168185" => "CCTV12社会与法",
- "608807423" => "CCTV13新闻",
- "624878440" => "CCTV14少儿",
- "673168223" => "CCTV15音乐",
- "609006446" => "CGTN俄语",
- "609006487" => "CGTN外语纪录",
- "609006476" => "CGTN法语",
- "609006450" => "CGTN西班牙语",
- "609154345" => "CGTN阿拉伯语",
- "923287154" => "CETV1",
- "923287211" => "CETV2",
- "923287339" => "CETV4",
- "849116810" => "东南卫视",
- "651632648" => "东方卫视",
- "956904896" => "中国农林卫视",
- "956923145" => "兵团卫视",
- "947472500" => "吉林卫视",
- "608917627" => "大湾区卫视",
- "738910535" => "宁夏卫视",
- "608831231" => "广东卫视",
- "623899368" => "江苏卫视",
- "783847495" => "江西卫视",
- "790187291" => "河南卫视",
- "947472502" => "海南卫视",
- "849119120" => "海峡卫视",
- "947472496" => "湖北卫视",
- "630291707" => "辽宁卫视",
- "738910838" => "陕西卫视",
- "947472506" => "青海卫视",
- "651632657" => "上海新闻综合",
- "608780988" => "上海第一财经",
- "609154353" => "山东教育",
- "626064674" => "江苏国际",
- "626064714" => "江苏城市频道",
- "626064697" => "江苏影视频道",
- "628008321" => "江苏教育",
- "626065193" => "江苏综艺频道",
- "956909356" => "陕西体育休闲频道",
- "956909289" => "陕西新闻资讯频道",
- "956909303" => "陕西秦腔频道",
- "956909358" => "陕西都市青春频道",
- "956909362" => "陕西银龄频道",
- "915512915" => "24小时城市联赛轮播台",
- "644368714" => "CHC动作电影",
- "644368373" => "CHC家庭影院",
- "952383261" => "CHC影迷电影",
- "617290047" => "上视东方影视",
- "959986618" => "中华特产",
- "959986621" => "中国天气",
- "708869532" => "中学生",
- "626064703" => "优漫卡通频道",
- "629943305" => "体坛名栏汇",
- "626064707" => "体育休闲频道",
- "626064693" => "公共新闻频道",
- "838151753" => "南京十八频道",
- "838153729" => "南京教科频道",
- "838109047" => "南京新闻综合频道",
- "614961829" => "南方影视",
- "955227985" => "南通新闻综合",
- "713591450" => "和美乡途轮播台",
- "614952364" => "嘉佳卡通",
- "637444975" => "四海钓鱼",
- "955227996" => "宜兴新闻综合",
- "639731832" => "宿迁新闻综合",
- "639731747" => "徐州新闻综合",
- "617432318" => "抗战经典影片",
- "713589837" => "新动力量创一流",
- "619495952" => "新片放映厅",
- "629942228" => "最强综艺趴",
- "958475359" => "武术世界",
- "955227979" => "江阴新闻综合",
- "639731818" => "泰州新闻综合",
- "639731826" => "淮安新闻综合",
- "639737327" => "溧水新闻综合",
- "958475356" => "环球旅游",
- "639731825" => "盐城新闻综合",
- "629942219" => "经典动画大集合",
- "625703337" => "经典香港电影",
- "956923159" => "财富天下",
- "646596895" => "赛事最经典",
- "639731715" => "连云港新闻综合",
- "609158151" => "熊猫频道01高清",
- "608933610" => "熊猫频道1",
- "609169285" => "熊猫频道10",
- "608933640" => "熊猫频道2",
- "608934619" => "熊猫频道3",
- "608934721" => "熊猫频道4",
- "608935104" => "熊猫频道5",
- "608935797" => "熊猫频道6",
- "609169286" => "熊猫频道7",
- "609169287" => "熊猫频道8",
- "609169226" => "熊猫频道9"
- ];
- $id = $_GET['id'] ?? '';
- if (empty($id) || !isset($channels[$id])) {
- http_response_code(400);
- echo "缺少有效的 id 参数";
- exit;
- }
- $parser = new MgParser();
- $parser->parse($id);
- ?>
复制代码
|
|