116 lines
4.3 KiB
PHP
116 lines
4.3 KiB
PHP
<?php
|
|
error_reporting(E_ERROR | E_PARSE);
|
|
if (isset($_GET['url'])) {
|
|
$headers = [
|
|
'Connection: keep-alive',
|
|
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0',
|
|
'Accept: */*',
|
|
'Origin: http://cdnneedtv.ru',
|
|
'Referer: http://cdnneedtv.ru/',
|
|
'Accept-Encoding: gzip, deflate',
|
|
'Accept-Language: es,es-ES;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
|
];
|
|
echo curl_get(rtrim($_GET['url']), $headers);
|
|
exit;
|
|
} else if (isset($_GET['id'])) {
|
|
$headers = [
|
|
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
|
"Accept-Language: es,es-ES;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
|
|
"Cache-Control: no-cache",
|
|
"Connection: keep-alive",
|
|
"Pragma: no-cache",
|
|
"Referer: http://hochu.tv/",
|
|
"Upgrade-Insecure-Requests: 1",
|
|
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0",
|
|
];
|
|
|
|
$ch_id = $_GET['id'];
|
|
$channel_url = "http://hochu.tv/".$ch_id.".html";
|
|
$response = curl_get($channel_url, headers);
|
|
preg_match('/<iframe width=.*src="(.*)" .*>/i', $response, $matches);
|
|
$url=$matches[1];
|
|
$response = curl_get($url, $headers);
|
|
$server = get_server_url();
|
|
$pattern = '/file:"([^"]+)"}/i';
|
|
preg_match($pattern, $response, $matches);
|
|
if (isset($matches[1])) {
|
|
$curl = curl_init($matches[1]);
|
|
curl_setopt($curl, CURLOPT_URL, $matches[1]);
|
|
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
|
|
curl_setopt($curl, CURLOPT_ENCODING, '');
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // Solo para depuración, ten cuidado
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // Solo para depuración, ten cuidado
|
|
|
|
$response = curl_exec($curl);
|
|
$play_url = str_replace("index.m3u8", "", curl_getinfo($curl)["url"]);
|
|
curl_close($curl);
|
|
$lineas_ts = explode("\n", $response);
|
|
for ($i = 0; $i < count($lineas_ts) - 1; $i++) {
|
|
if (strpos($lineas_ts[$i], '#') !== false) {
|
|
echo $lineas_ts[$i].PHP_EOL;
|
|
} else {
|
|
echo $server.'?url='.$play_url.trim($matches[2]).$lineas_ts[$i].PHP_EOL;
|
|
}
|
|
}
|
|
} else {
|
|
echo "No se encontró la URL en el contenido.";
|
|
}
|
|
}else{
|
|
$headers = ["User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"];
|
|
$response = curl_get("http://hochu.tv/", headers);
|
|
$pattern = '/<td.*<a.*href="(.*)"><img/i';
|
|
preg_match_all($pattern, $response, $matches_href);
|
|
$pattern = '/<td.*<a.*href=.*<img.*src="(.*)" style=".*>/i';
|
|
preg_match_all($pattern, $response, $matches_images);
|
|
$result="#EXTM3U".PHP_EOL;
|
|
$server = get_server_url();
|
|
$count=0;
|
|
foreach ($matches_href[1] as $value) {
|
|
$image_path=$matches_images[1][$count];
|
|
$name=str_replace(".html","",$value);
|
|
$name=str_replace("/","",$name);
|
|
$result.='#EXTINF:-1 tvg-name="'.$name.'" tvg-logo="'.$server.'?url='."http://hochu.tv".$image_path.'",'.$name.PHP_EOL;
|
|
$result.= $server.'?id='.$name.PHP_EOL;
|
|
$count+=1;
|
|
}
|
|
header("Content-Type:vnd.apple.mpegURL");
|
|
header("Content-Disposition:attachment;filename=index.m3u8");
|
|
echo $result;
|
|
}
|
|
|
|
function get_server_url(){
|
|
$headers = getallheaders();
|
|
$schema = $headers["X-Forwarded-Proto"];
|
|
if (!$schema){
|
|
$schema = isset($_SERVER['HTTPS']) ? 'https' : 'http';
|
|
}
|
|
$host = $headers["X-Forwarded-Server-Name"];
|
|
if (!$host){
|
|
$host = $_SERVER['HTTP_HOST'];
|
|
}else{
|
|
$host .= ":" . $headers["X-Forwarded-Port"];
|
|
}
|
|
return $schema . "://" . $host . $_SERVER['SCRIPT_NAME'];
|
|
|
|
}
|
|
|
|
function curl_get($url, $headers) {
|
|
$curl = curl_init($url);
|
|
curl_setopt($curl, CURLOPT_URL, $url);
|
|
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
|
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
|
|
curl_setopt($curl, CURLOPT_ENCODING, '');
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // Solo para depuración, ten cuidado
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // Solo para depuración, ten cuidado
|
|
|
|
$resp = curl_exec($curl);
|
|
curl_close($curl);
|
|
return $resp;
|
|
}
|
|
?>
|