function calcula() { /* $proxy = '189.174.63.36:8080'; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'http://tvnpod.tvolucion.com/indom/delivery/6dd74f0d-18d9-412a-bd59-5071182ffdbd/indom-c120.mp4_970k.mp4'); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_PROXY,$proxy); curl_setopt($ch,CURLOPT_HEADER,1); curl_setopt($ch,CURLOPT_RANGE,'1-200'); $t=curl_exec($ch); if(curl_errno($ch))dbug('Curl error: '.curl_error($ch)); curl_close($ch); dbug_($t); exit; */ if (enString($this->web, '//m.')) { $this->web = str_replace('//m.', '//www.', $this->web); dbug('Movil -> escritorio'); $this->web_descargada = CargaWebCurl($this->web, '', 0, '', array('Referer: ' . $this->web)); if (!enString($this->web_descargada, '<html')) { $this->web_descargada = CargaWebCurl($this->web); } } //usarse a sí mismo como réferer if (!enString($this->web_descargada, '<html')) { $this->web_descargada = CargaWebCurl($this->web, '', 0, '', array('Referer: ' . $this->web)); } if (!enString($this->web_descargada, '<html')) { $this->web_descargada = CargaWebCurl($this->web); } //dbug_($this->web_descargada); $obtenido = array('enlaces' => array()); //para televisa.com/novelas if (stringContains($this->web_descargada, array('showVideo(', 'data-idvideo="', 'embed.php?id='))) { if (enString($this->web_descargada, 'showVideo(')) { dbug('-1-'); preg_match('@showVideo\\(([0-9]+)\\)@', $this->web_descargada, $match); } elseif (enString($this->web_descargada, 'data-id="')) { dbug('-2-'); preg_match('@data-id="([0-9]+)"@', $this->web_descargada, $match); } elseif (enString($this->web_descargada, 'data-idvideo="')) { dbug('-2.5-'); preg_match('@data-idvideo="([0-9]+)"@', $this->web_descargada, $match); } elseif (enString($this->web_descargada, 'embed.php?id=')) { dbug('-3-'); preg_match('@embed.php\\?id=([0-9]+)@', $this->web_descargada, $match); } if (isset($match[1])) { $idVideo = $match[1]; dbug($idVideo); // $this->web='http://amp.televisa.com/embed/embed.php?id='.$idVideo.'&w=620&h=345'; $this->web = 'http://tvolucion.esmas.com/embed/embed.php?id=' . $idVideo . '&w=620&h=345'; $this->web_descargada = CargaWebCurl($this->web, '', 0, '', array('Referer: ' . $this->web)); if (enString($this->web_descargada, 'ya no se encuentra disponible')) { setErrorWebIntera('Éste vídeo ya no se encuentra disponible.'); return; } //dbug_($this->web_descargada); } } if (enString($this->web_descargada, 'params_dvr.json')) { if (!isset($idVideo)) { preg_match('#/([0-9]+?)/params_dvr.json#', $this->web_descargada, $matches); $idVideo = $matches[1]; } $hostname = 'tvolucion.esmas.com'; $json = "http://{$hostname}/tvenvivofiles/{$idVideo}/params_dvr.json"; $json = CargaWebCurl($json); $json = utf8_encode($json); $json = json_decode($json, true); dbug_r($json); $titulo = $json['channel']['item']['title']; $imagen = $json['channel']['item']['media-group']['media-thumbnail']['@attributes']['url']; foreach ($json['channel']['item']['media-group']['media-content'] as &$elem) { if (enString($elem['@attributes']['url'], '.f4m')) { $obtenido['enlaces'][] = array('url' => $elem['@attributes']['url'], 'nombre_archivo' => generaNombreWindowsValido($titulo), 'tipo' => 'f4m'); } elseif (enString($elem['@attributes']['url'], '.m3u8')) { $obtenido['enlaces'][] = array('url' => $elem['@attributes']['url'], 'tipo' => 'm3u8'); } } $obtenido['alerta_especifica'] = 'Es necesario usar un proxy de México. El programa F4M-Downloader permite indicar un proxy.'; } else { //http://c.brightcove.com/services/messagebroker/amf?playerKey=AQ~~,AAAAEUA28vk~,ZZqXLYtFw-ADB2SpeHfBR3cyrCkvIrAe if (enString($this->web_descargada, 'playerKey:"')) { $playerKey = entre1y2($this->web_descargada, 'playerKey:"', '"'); } elseif (enString($this->web_descargada, '<param name="playerKey"')) { $playerKey = entre1y2($this->web_descargada, '<param name="playerKey" value="', '"'); } if (!isset($playerKey)) { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } dbug('playerKey -> ' . $playerKey); $messagebroker = 'http://c.brightcove.com/services/messagebroker/amf?playerKey=' . $playerKey; if (enString($this->web_descargada, 'playerID:"')) { $experienceID = entre1y2($this->web_descargada, 'playerID:"', '"'); } elseif (enString($this->web_descargada, '<param name="playerID"')) { $experienceID = entre1y2($this->web_descargada, '<param name="playerID" value="', '"'); } if (!isset($experienceID)) { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } dbug('experienceID -> ' . $experienceID); if (enString($this->web_descargada, 'videoId:"')) { $contentId = entre1y2($this->web_descargada, 'videoId:"', '"'); } elseif (enString($this->web_descargada, '<param name="videoId"')) { $contentId = entre1y2($this->web_descargada, '<param name="videoId" value="', '"'); } if (!isset($contentId)) { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } dbug('contentId -> ' . $contentId); include 'brightcove-funciones.php'; //$aa = 'AAMAAAABAEZjb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkV4cGVyaWVuY2VSdW50aW1lRmFjYWRlLmdldERhdGFGb3JFeHBlcmllbmNlAAIvMQAAAe8KAAAAAgIAKDcyOTBiYTVlOTQzZGM0MmI3ZDY4NmE1NjJmOTZkNWI0MGI0ZjE3OTIRCmNjY29tLmJyaWdodGNvdmUuZXhwZXJpZW5jZS5WaWV3ZXJFeHBlcmllbmNlUmVxdWVzdBlleHBlcmllbmNlSWQhY29udGVudE92ZXJyaWRlcxFUVExUb2tlbhlkZWxpdmVyeVR5cGUTcGxheWVyS2V5B1VSTAVCYrdWAacgAAkDAQqBA1Njb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkNvbnRlbnRPdmVycmlkZRtjb250ZW50UmVmSWRzDXRhcmdldBVmZWF0dXJlZElkE2NvbnRlbnRJZBdjb250ZW50VHlwZRtmZWF0dXJlZFJlZklkFWNvbnRlbnRJZHMZY29udGVudFJlZklkAQYXdmlkZW9QbGF5ZXIFf////+AAAAAFQoo2IT7sSAAEAAEBAQYBBX/////gAAAABmVBUX5+LEFBQUFFVUEyOHZrfixaWnFYTFl0RnctQURCMlNwZUhmQlIzY3lyQ2t2SXJBZQaBGWh0dHA6Ly9ub3RpY2llcm9zLnRlbGV2aXNhLmNvbS9wcm9ncmFtYXMtbm90aWNpZXJvLWNvbi1qb2FxdWluLWxvcGV6LWRvcmlnYS8='; //dbug_r(brightcove_decode(base64_decode($aa))); $a_encodear = array('target' => 'com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience', 'response' => '/1', 'data' => array('0' => '7290ba5e943dc42b7d686a562f96d5b40b4f1792', '1' => new SabreAMF_AMF3_Wrapper(new SabreAMF_TypedObject('com.brightcove.experience.ViewerExperienceRequest', array('TTLToken' => null, 'deliveryType' => NAN, 'URL' => $this->web, 'experienceId' => $experienceID, 'playerKey' => $playerKey, 'contentOverrides' => array(new SabreAMF_TypedObject('com.brightcove.experience.ContentOverride', array('contentRefId' => null, 'contentIds' => null, 'featuredRefId' => null, 'contentRefIds' => null, 'contentType' => 0, 'target' => 'videoPlayer', 'featuredId' => NAN, 'contentId' => $contentId)))))))); // FALLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA $post = brightcove_encode($a_encodear); dbug(base64_encode($post)); //dbug_r(brightcove_decode($post)); //dbug_r(brightcove_decode(base64_decode('AAMAAAABAEZjb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkV4cGVyaWVuY2VSdW50aW1lRmFjYWRlLmdldERhdGFGb3JFeHBlcmllbmNlAAIvMQAAAhYKAAAAAgIAKDcyOTBiYTVlOTQzZGM0MmI3ZDY4NmE1NjJmOTZkNWI0MGI0ZjE3OTIRCmNjY29tLmJyaWdodGNvdmUuZXhwZXJpZW5jZS5WaWV3ZXJFeHBlcmllbmNlUmVxdWVzdBlkZWxpdmVyeVR5cGUHVVJMGWV4cGVyaWVuY2VJZCFjb250ZW50T3ZlcnJpZGVzE3BsYXllcktleRFUVExUb2tlbgV/////4AAAAAaBZ2h0dHA6Ly90dm9sdWNpb24uZXNtYXMuY29tL3RlbGVub3ZlbGFzL2RyYW1hL2xhLXJvc2EtZGUtZ3VhZGFsdXBlLzIzNjM0OS9yb3NhLWd1YWRhbHVwZS1wZXF1ZW5hLWdyYW4taGlzdG9yaWEtYW1vci8FQmK3VgGnIAAJAwEKgQNTY29tLmJyaWdodGNvdmUuZXhwZXJpZW5jZS5Db250ZW50T3ZlcnJpZGUNdGFyZ2V0FWZlYXR1cmVkSWQTY29udGVudElkG2ZlYXR1cmVkUmVmSWQVY29udGVudElkcxljb250ZW50UmVmSWQbY29udGVudFJlZklkcxdjb250ZW50VHlwZQYXdmlkZW9QbGF5ZXIFf////+AAAAAFQoNbrQiDiAABAQEBBAAGZUFRfn4sQUFBQUVVQTI4dmt+LFpacVhMWXRGdy1BREIyU3BlSGZCUjNjeXJDa3ZJckFlBgE='))); dbug('a descargar: ' . $messagebroker); $t = brightcove_curl_web($messagebroker, $post); $res_decoded = brightcove_decode($t); dbug_r($res_decoded); $titulo1 = $res_decoded['data']->getAMFData(); $titulo2 = $titulo1['programmedContent']['videoPlayer']->getAMFData(); dbug_r($titulo2); $titulo3 = $titulo2['mediaDTO']->getAMFData(); $titulo = $titulo3['displayName']; //scar todas las URL //preg_match_all('@http(s)?://[a-z0-9A-Z.?/%_=~-]+@i', $t, $match); preg_match_all('@http(s)?://[a-z0-9A-Z./%_-]+@i', $t, $match); //buscar qué URLs son las pics y los vídeos para usarlas dbug_r($match[0]); $imagen = $match[0][1]; $urls_total = count($match[0]); for ($i = 0; $i < $urls_total; $i++) { if (esVideoAudioAnon($match[0][$i])) { $obtenido['enlaces'][] = array('url' => strtr($match[0][$i], array('http://tvnhds.tvolucion.com/z/' => 'http://tvnpod.tvolucion.com/')), 'tipo' => 'http'); } } } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); }
function finalCadena($obtenido, $asegurate = true) { global $resultado, $R; $ind = !isset($obtenido['enlaces'][0]['url']) ? 0 : 1; if (isset($obtenido['enlaces'][$ind]['url'])) { $duda1 = esVideoAudioAnon($obtenido['enlaces'][$ind]['url']); } else { $duda1 = true; } if (isset($obtenido['enlaces'][$ind]['tipo'])) { $duda2 = $obtenido['enlaces'][$ind]['tipo'] != 'http'; } else { $duda2 = true; } if (!$asegurate || $duda1 || $duda2) { dbug('Obtenido!'); dbug_r($obtenido); $resultado = $obtenido; $R['BASE'] = $obtenido; } else { dbug('Error!'); setErrorWebIntera('Ha ocurrido un error.'); } }
function univisionID($id) { dbug('univisionID'); $ret = 'http://cdn-download.mcm.univision.com/videos_mcm/' . $id . '.js'; dbug('url=' . $ret); $ret = CargaWebCurl($ret); if (enString($ret, "Access Denied")) { setErrorWebIntera("El vídeo de Univisión está bloqueado."); return; } $obtenido = array('enlaces' => array()); //imagen $imagen = entre1y2($ret, '"src_image_url":"', '"'); $imagen = strtr($imagen, array('\\' => '')); dbug('imagen=' . $imagen); //titulo $titulo = entre1y2($ret, '"def_title":"', '"'); $titulo = jsonRemoveUnicodeSequences($titulo); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); if (!enString($ret, '"published_urls":[]')) { dbug('No aparece "published_urls":[]'); $json = substr($ret, strposF($ret, '(')); $json = substr($json, 0, strrpos($json, ')')); dbug_($json); $json = json_decode($json, true); dbug_r($json); $urls = array(); if (isset($json['published_urls'])) { foreach ($json['published_urls'] as &$url) { if (enString($url['embed_url'], '.mp4')) { $u =& $url['embed_url']; dbug_($u); $p = strrposF($u, '_'); $f = strpos($u, '.', $p); $calidad = substr($u, $p, $f - $p); $urls[] = array($u, $calidad); } } } dbug('urls: ' . count($urls)); //ya tenemos las urls en formato: /120615_2708697_El_Talisman_Capitulo_98_99___Ultimo_capitulo_1339800465_2000.mp4 //ordenar if (count($urls) > 0) { $urls = sortmulti($urls, 1, "123", true); } } if (enString($ret, '"published_urls":[]') || isset($urls) && count($urls) === 0) { dbug('No se pueden encontrar urls. Usando método 2'); // http://vmscdn-download.s3.amazonaws.com/videos_mcm/variant/2912557.m3u8 $m3u8FuenteUrls = 'http://vmscdn-download.s3.amazonaws.com/videos_mcm/variant/' . $id . '.m3u8'; dbug('$m3u8FuenteUrls = ' . $m3u8FuenteUrls); $m3u8FuenteUrls = CargaWebCurl($m3u8FuenteUrls); dbug($m3u8FuenteUrls); preg_match('@http://.*media(.*?)_[0-9]{3,4}.m3u8@', $m3u8FuenteUrls, $matches); dbug_r($matches); $urlBase = $matches[1]; $calidades = array(2000, 1200, 810, 800, 510, 500, 270, 150); $urls = array(); foreach ($calidades as $calidad) { $urlT = 'http://h.univision.com/media' . $urlBase . '_' . $calidad . '.mp4'; $urls[] = array($urlT, $calidad); } //ya tenemos las urls en formato: /120615_2708697_El_Talisman_Capitulo_98_99___Ultimo_capitulo_1339800465_2000.mp4 //ya está ordenado } $urls_length = count($urls); for ($i = 0; $i < $urls_length; $i++) { if ($urls[$i][1] == 2000) { $preContext = array('http' => array('method' => 'HEAD', 'header' => "User-agent: Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0\r\n" . "Connection: close\r\n" . "Accept-Language: es-ES,es;en-US;en\r\n" . "Accept: text/html,application/xhtml+xml,application/xml\r\n", 'timeout' => 5, 'ignore_errors' => '1')); $preContext = stream_context_create($preContext); if (file_get_contents($urls[$i][0], false, $preContext) === false) { dbug('no se puede abrir la url de calidad 2000'); continue; } dbug_r($http_response_header); if (strpos($http_response_header[0], ' 404 ')) { dbug('la url de calidad 2000 da 404'); continue; } } if (esVideoAudioAnon($urls[$i][0])) { $obtenido['enlaces'][] = array('url' => $urls[$i][0], 'url_txt' => 'Calidad: ' . $urls[$i][1] . " Kbps", 'tipo' => 'http'); } } for ($i = 0, $ii = count($json['captions']); $i < $ii; $i++) { if ($json['captions'][$i]['language'] === 'es') { $url = $json['captions'][$i]['url']; $obtenido['enlaces'][] = array('url_txt' => 'Subtítulos en formato ' . substr($url, strrposF($url, '.')), 'url' => $url, 'tipo' => 'srt'); } } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; $obtenido['alerta_especifica'] = 'Si no puedes descargar el vídeo necesitas usar proxy.<br/>Descarga el programa ultrasurf (<a href="https://ultrasurf.us/download/u.zip">Descargar ultrasurf</a>), descomprime el archivo, ejecuta el programa y una vez hecho intenta descargar el vídeo de nuevo.<br/>Si 2000kbps da error prueba 1200kbps.'; finalCadena($obtenido, false); }
function duda($a, $b) { if (!isset($a['enlaces'][0]) && ($b == "" || !esVideoAudioAnon($b))) { return true; } else { return false; } }