Example #1
0
 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);
 }
Example #2
0
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.');
    }
}
Example #3
0
 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);
 }
Example #4
0
 function duda($a, $b)
 {
     if (!isset($a['enlaces'][0]) && ($b == "" || !esVideoAudioAnon($b))) {
         return true;
     } else {
         return false;
     }
 }