<?php
$link = isset($_GET['url']) ? $_GET['url'] : '';
$page = curl($link);
$request = parse_url($link);
$type = GetRegexValue($page,'#var\sMOVIE_TYPE\s=\s"(.*?)";#si');
$ident = GetRegexValue($page,'#var\sIDENTIFIER\s=\s"(.*?)";#si');
$id = GetRegexValue($page,'#var MOVIE_ID\s=\s(\d+);#si');
$name = GetRegexValue($page,'#meta itemprop="name" content="(.*?)">#si');
$cuid = GetRegexValue($page,'#var\sPLAYER_CUID\s=\s"([^"]+)";#si');
####################Описание и прочая инфа может кому нужно #########################
// Качество
$qual = GetRegexValue($page,'#<li><b>Качество:<\/b>([^>]+)<\/li>#si');
// Время
$time_movie = GetRegexValue($page,'#itemprop="duration">([^>]+)<\/span><\/li>#si');
// Описание
$desc = GetRegexValue($page,'#itemprop="description">([^>]+)<\/div>#si');
// Перевод
$lang = GetRegexValue($page,'#<li><b>Перевод:<\/b>([^>]+)<\/li>#si');
// Картинка
$img = GetRegexValue($page,'#<div class="poster">\s+<img src="([^"]+)"#si');
##############################end desc and more info######################
// Сссылка на получение параметров хеша и времени ###
$url = $request['scheme'].'://'.$request['host'].'/user_data.js?page=movie&movie_id='.$id.'&cuid='.$cuid.'&device=DESKTOP';
// Загружаем и получаем данные
$page = curl($url);
// ищем всю кодированную аббракадабру из js
$value = preg_match('#escape\(r\)\)\}\((.*?)\)#', $page, $m) ? $m[1]: '';
if(!empty($value)){
// разбиваем данные по отдельным значениям
preg_match('#"(.*?)",(\d+),"(.*?)",(\d+),(\d+),(\d+)#', $value, $val);
// Декодируем всю полученную инфу найденную регуляркой
$key = JsUnpack($val[1],$val[2],$val[3],$val[4],$val[5],$val[6]);
// Ищем значения для составления ссылки
$hash = GetRegexValue($key ,'#var\smarx13_vod_hash\s=\s"([^"]+)";#si');
$time = GetRegexValue($key ,'#var\smarx13_vod_time\s=\s"([^"]+)";#si');
}else {
$json = json_decode($page,true);
$hash = $json['vod_hash'];
$time = $json['vod_time'];
}
if(!empty($hash) || (!empty($time))){
// Составляем ссылку из полученных значений
$url_const = $request['scheme'].'://'.$request['host'].'/vod/'.$id.'?identifier='.$ident.'&player_type=new&file_type=hls&st='.$hash.'&e='.$time;
}else echo '<b>Ошибка! Не найдены параметры $time и $hash</b>';
###################################################################
// Загружаем и получаем данные
$data = curl($url_const);
//Разбиваем на массив и берем нужный индекс массива $split[1]
$split = explode('|',$data);
// Для сериалов если есть json декодируем, обычно фильмы без Json
$json = json_decode($split[1],1);
// Название фильма сериала
echo '<center><b>'.mb_strtoupper($name).'</b></center><hr>';
// Это фильм
if($type == 'films'){
//Вырезаем ненужное и получаем все ссылки в массиве
$url = explode(',',implode(',',explode(' or ', $split[1])));
// проходимся по массиву в цикле
for($i=0; $i<count($url);$i++){
// Изменяем положение раcширений видео
$url[$i] = preg_replace('#\[(\d+p)\]#','<span style="color:green"><b>$1</b></span><br>',$url[$i]);
//выводим ссылки
echo $url[$i].'<br>';
}
echo '<hr>';
// Здесь уже сериалы
} else if($type == 'serials'){
// Если есть только 1 сезон,и он не указывается.
if(strpos(@$json[0]['title'],'сезон') === false){
// Проходимся в цикле по массиву
foreach($json as $key => $val){
// Выборка серий
echo '<span style="color:blue"><b>'.@$val['title'].'</b></span><br>';
//Вырезаем ненужное и получаем все ссылки в массиве
$url = explode(',',implode(',',explode(' or ', $val['file'])));
// проходимся по массиву в цикле
for($i=0; $i<count($url);$i++){
// Изменяем положение раcширений видео
$url[$i] = preg_replace('#\[(\d+p)\]#','<span style="color:green"><b>$1</b></span><br>',$url[$i]);
//выводим ссылки
echo $url[$i].'<br>';
}
echo '<hr>';
}
}else{
// если больше 1 сезона,выводим по сезонно и по сериям//
foreach($json as $k => $v){
//Выводим сезоны
echo '<center><span style="color:red"><b>'.$v['title'].'</b></span></center><hr>';
//Цикл по сериям и ссылкам
foreach($v['folder'] as $key => $val){
//Выводим по сериям
echo '<span style="color:blue"><b>'.$val['title'].'</b></span><br>';
//Вырезаем ненужное и получаем все ссылки в массиве
$url = explode(',',implode(',',explode(' or ', $val['file'])));
// проходимся по массиву в цикле
for($i=0; $i<count($url);$i++){
// Изменяем положение раcширений видео
$url[$i] = preg_replace('#\[(\d+p)\]#','<span style="color:green"><b>$1</b></span><br>',$url[$i]);
//выводим ссылки
echo $url[$i].'<br>';
}
echo '<hr>';
}
}
}
// Здесь тепепередачи
}else if($type == 'tv'){
// Если есть только 1 сезон,и он не указывается.
if(strpos($json[0]['title'],'сезон') === false){
// Проходимся в цикле по массиву
foreach($json as $key => $val){
// Выборка серий
echo '<span style="color:blue"><b>'.$val['title'].'</b></span><br>';
//Вырезаем ненужное и получаем все ссылки в массиве
$url = explode(',',implode(',',explode(' or ', $val['file'])));
// проходимся по массиву в цикле
for($i=0; $i<count($url);$i++){
// Изменяем положение раcширений видео
$url[$i] = preg_replace('#\[(\d+p)\]#','<span style="color:green"><b>$1</b></span><br>',$url[$i]);
//выводим ссылки
echo $url[$i].'<br>';
}
echo '<hr>';
}
}else{
// если больше 1 сезона,выводим по сезонно и по сериям//
foreach($json as $k => $v){
//Выводим сезоны
echo '<center><span style="color:red"><b>'.$v['title'].'</b></span></center><hr>';
//Цикл по сериям и ссылкам
foreach($v['folder'] as $key => $val){
//Выводим по сериям
echo '<span style="color:blue"><b>'.$val['title'].'</b></span><br>';
//Вырезаем ненужное и получаем все ссылки в массиве
$url = explode(',',implode(',',explode(' or ', $val['file'])));
// проходимся по массиву в цикле
for($i=0; $i<count($url);$i++){
// Изменяем положение раcширений видео
$url[$i] = preg_replace('#\[(\d+p)\]#','<span style="color:green"><b>$1</b></span><br>',$url[$i]);
//выводим ссылки
echo $url[$i].'<br>';
}
echo '<hr>';
}
}
}
}
///////////////////////////////////////////////////////////////////////////////
// Получение страницы с указанными методом и заголовками
//////////////////////////////////////////////////////////////
function curl($url, $post='', $mode=array()) {
$defaultmode = array('charset' => 'utf-8', 'ssl' => 1, 'cookie' => 1, 'headers' => 0, 'useragent' => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0');
foreach ($defaultmode as $k => $v) {
if (!isset($mode[$k]) ) {
$mode[$k] = $v;
}
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, $mode['headers']);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $mode['useragent']);
curl_setopt($ch, CURLOPT_ENCODING, $mode['charset']);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if ($mode['cookie']) {
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookies.txt');
}
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if ($mode['ssl']) {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
}
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
/////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// Функция получения значения по указанному регулярному выражению
function GetRegexValue($text, $pattern, $group=1) {
if (preg_match($pattern, $text, $matches))
return $matches[$group];
return "";
}
/////////////////////////Функция декодирования//////////////////////////////
////////////////////////////////////////////////////////////////////////////
function b64c($d, $e, $f) {
$g = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/';
$h = substr($g, 0, $e);
$i = substr($g, 0, $f);
$d = strrev($d);
$j = 0;
for($c=0; $c<strlen($d); $c++) {
$j += strpos($h, $d[$c]) * pow($e, $c);
}
$k = '';
while ($j > 0) {
$k = $i[$j % $f] . $k;
$j = ($j - ($j % $f)) / $f;
}
return $k ? $k : '0';
}
////////////////////////////////////////////////////////////////////////////
function JsUnpack($h, $u, $n, $t, $e, $r) {
$r = "";
for ($i=0; $i < strlen($h); $i++) {
$s = "";
while ($h[$i] !== $n[$e]) {
$s .= $h[$i];
$i++;
}
for ($j=0; $j < strlen($n); $j++) $s = str_replace($n[$j], $j, $s);
$ch = chr(b64c($s, $e, 10) - $t);
$r .= $ch;
}
return $r;
}
///////////
?>