function esVideoAudioAnon($enlace) { if (!preg_match('@^https?://(([^/^\\.]+\\.)+?[^/^\\.]+?)(/.*)?$@i', $enlace)) { return false; } elseif (stringContains($enlace, array(' ', '<', '>'))) { return false; } elseif (stringContains($enlace, array('.mp4', '.mp3', '.wmv', '.avi', '.f4v', '.flv', '.mov', '.3gp', '.3g2', '.aac', '.m4a', '.ogv', '.ogg'))) { return true; } return false; }
function calcula() { /* "clip":{"url":"mp4:/_archivos/videos/web/4334/4334.mp4"} "netConnectionUrl":"rtmp://alacarta.aragontelevision.es/vod" "playlist":[{"url":"mp4:/_archivos/videos/web/4334/4334.mp4"}] http://alacarta.aragontelevision.es/_archivos/videos/web/4334/4334.mp4 */ $imagen = 'http://www.' . DOMINIO . '/canales/aragontv.png'; $obtenido = array('enlaces' => array()); //un solo video if (enString($this->web_descargada, 'flowplayer(')) { dbug('simple'); $titulo = entre1y2($this->web_descargada, '<div class="apartado"><h2>', '</h2>'); $titulo = limpiaTitulo($titulo); if (stringContains($titulo, array('</', 'Server:'))) { dbug('titulo fallido, usando <title>'); $titulo = entre1y2($this->web_descargada, '<title>', '</'); $titulo = limpiaTitulo($titulo); } dbug('titulo=' . $titulo); $obtenido['enlaces'][] = $this->SacarVideo($this->web_descargada, $titulo); } elseif (enString($this->web_descargada, 'list-not-even')) { dbug('multi'); $p = strpos($this->web_descargada, '<div class="apartado">'); $titulo = entre1y2_a($this->web_descargada, $p, '<h2>', '</h2>'); //en la pagina principal y otras el titulo estará mal, por lo que poner uno genérico if (enString($titulo, '<')) { $titulo = 'Aragon TV'; } $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); $videos = substr_count($this->web_descargada, '<span>Ver video</span>'); dbug('total videos=' . $videos); $last = 0; for ($i = 0; $i < $videos; $i++) { $last = strposF($this->web_descargada, '<div id="idv', $last); $url = 'http://alacarta.aragontelevision.es/ajax/ajax.php?id=' . entre1y2_a($this->web_descargada, $last, '_', '"'); //encontrar ya el titulo del vídeo $f = strpos($this->web_descargada, 'fecha', $last); $parte = substr($this->web_descargada, $last, $f - $last); $p = strrpos($parte, '<a'); $nombre = entre1y2_a($parte, $p, 'title="', '"'); $extracto = CargaWebCurl($url); $obtenido['enlaces'][] = $this->SacarVideoPorId($extracto, $nombre); } } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); }
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 calcula() { //dbug_($this->web_descargada); $obtenido = array('enlaces' => array()); if (!enString($this->web_descargada, 'catalog.video.msn.com/image.aspx')) { dbug('modo nuevo'); // No soportado // http://m.telemundo.com/video.php?show=elsenordeloscieloscapitulosecreto&id=najcVXTKRqnrWKiVUmcE&key=video // http://m.telemundo.com/video.php?show=lavozkids&id=oWvtdFNRlmwOemyqHpCF&key=video //setErrorWebIntera('No se encuentra ningún vídeo o no está soportado'); // http://now.telemundo.com/caso-cerrado/full-episodes/abuso-polic%C3%ADaco/322424899858 // http://player.theplatform.com/p/HNK2IC/telemundo_vod_noauth/embed/select/uLCEWFk911nP?autoPlay=true&mbr=true&FWsiteSection=tm_tveverywhere_vod_hub#playerurl=http%3A//now.telemundo.com/caso-cerrado/full-episodes/abuso-polic%25C3%25ADaco/322424899858 // https://player.theplatform.com/p/HNK2IC/telemundo_vod_noauth/embed/select/uLCEWFk911nP?autoPlay=false // https://link.theplatform.com/s/HNK2IC/uLCEWFk911nP?mbr=true&policy=2713557&player=Telemundo VOD No Auth Player (pub7)&manifest=f4m&format=SMIL&Tracking=true&Embedded=true&formats=F4M,MPEG4 // No va // https://link.theplatform.com/s/HNK2IC/uLCEWFk911nP?mbr=true&policy=2713557&player=Telemundo VOD No Auth Player (pub7) // Parece que se puede arreglar así: /* http://www.telemundo.com/shows/2014/11/20/maestros-armados-por-defensa-y-gemelas-con-el-mismo-marido-caso-cerrado-video "clip_image":"http:\/\/www.telemundo.com\/sites\/nbcutelemundo\/files\/images\/mpx\/2014\/11\/21\/141120_2829830_Maestros_armados_por_defensa_y_gemelas_con_e_0.jpg" "clip_title":"Maestros armados por defensa y gemelas con el mismo marido. Caso Cerrado (VIDEO)" "clip_descr":"Marlene es profesora, y quiere ir a dar clase con una pistola para poder defenderse en caso de una asesino en serie. Y, Karla y Tania tienen el mismo marido y reclaman la herencia que les dej\u00f3 su padre.\u00a0" iframe //player.theplatform.com/p/0L7ZPC/ztJiSNFd5ggr/embed/select/iWUW_xbJZGrj?siteSectionId=telemundo_video_hub_vod&autoPlay=true //theplatform.com/p/0L7ZPC/ztJiSNFd5ggr/embed/select/iWUW_xbJZGrj?siteSectionId=telemundo_shows_vod&autoPlay=true http://proxymexico.com http://link.theplatform.com/s/0L7ZPC/iWUW_xbJZGrj?mbr=true&player=P7%20VOD%20Player&policy=40180 http://link.theplatform.com/s/0L7ZPC/EuIyUv4n0nlm?mbr=true&player=P7%20VOD%20Player&policy=40180&switch=progressive&formats=mpeg4&format=SMIL&embedded=true&tracking=true */ if (enString($this->web, '//now.')) { // now.telemundo.com $desde = 1; // "episode_thumbnail":{"url":"http:\/\/tve_static-telemundo.nbcuni.com\/prod\/image\/478\/1007\/141117_2828781_Andrea_del_Junco_anvver_1_560x315_362507843555.jpg" // "synopsis":"Scarlet Gruber es Andrea del Junco, una joven seria, reservada y competente que anhela ser como su madre." $p = strpos($this->web_descargada, '//player.'); $imagen = entre1y2_a($this->web_descargada, $p, 'src="', '"'); dbug_($imagen); $titulo = entre1y2($this->web_descargada, '<meta property="og:title" content="', '"'); $player = 'http:' . desde1a2($this->web_descargada, $p, '"'); dbug_($player); } else { $desde = 2; $imagen = entre1y2($this->web_descargada, '"clip_image":"', '"'); $imagen = json_decode('"' . $imagen . '"'); dbug_($imagen); $titulo = entre1y2($this->web_descargada, '"clip_title":"', '"'); $titulo = json_decode('"' . $titulo . '"'); dbug_($titulo); // buscar si es una parte. if (enString($this->web_descargada, '<li class="player--nav-item-active">')) { $titulo .= ', parte ' . trim(strip_tags(entre1y2($this->web_descargada, '<li class="player--nav-item-active">', '</li'))); } $descripcion = entre1y2($this->web_descargada, '"clip_descr":"', '"'); $descripcion = json_decode('"' . $descripcion . '"'); dbug_($descripcion); $iframe = entre1y2($this->web_descargada, '<iframe', '<'); dbug_($iframe); $player = 'http://' . desde1a2($iframe, 'player.', '"'); dbug_($player); $obtenido['descripcion'] = $descripcion; } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; $ret = CargaWebCurl($player); $releaseUrl = entre1y2($ret, 'releaseUrl="', '"'); dbug_($releaseUrl); $releaseUrl .= '&switch=progressive&formats=mpeg4&format=SMIL&embedded=true&tracking=true'; dbug_($releaseUrl); $ret = CargaWebCurlProxy($releaseUrl, 'MX'); dbug_($ret); if (preg_match_all('@"(https?://[^"]+\\.(?:mp4|flv).+?)".+?bitrate="(.+?)"@i', $ret, $matches)) { dbug_r($matches); $links = array_unique($matches[1]); $calidades = array_unique($matches[2]); dbug_r($links); for ($i = 0, $i_t = count($links); $i < $i_t; $i++) { $obtenido['enlaces'][] = array('url' => $desde === 1 ? $this->quitar_akami_telemundo($links[$i]) : $links[$i], 'url_txt' => 'Descargar en calidad ' . intval($calidades[$i] / 1024), 'tipo' => 'http'); } } else { dbug('Adivinar urls a partir de la imagen'); dbug_($imagen); $posibles_calidades = array('4000', '2500', '1800', '1696', '1296', '1200', '896', '700', '696', '496', '400', '306', '240', '200'); if (preg_match('#anvver#', $imagen, $matches) || preg_match('#[0-9]+x[0-9]+#', $imagen, $matches)) { dbug_r($matches); $supuesta_url_base = entre1y2($imagen, 0, $matches[0]); $supuesta_url_base = str_replace('/image/', '/video/', $supuesta_url_base); for ($i = 0, $i_t = count($posibles_calidades); $i < $i_t; $i++) { $obtenido['enlaces'][] = array('url' => $supuesta_url_base . $posibles_calidades[$i] . '.mp4', 'url_txt' => 'Descargar en calidad ' . $posibles_calidades[$i], 'tipo' => 'http'); } $obtenido['alerta_especifica'] = 'No se ha podido encontrar ningún enlace para el vídeo pero alguno de los siguientes podría funcionar.'; } } } else { dbug('modo antiguo'); $imagen = 'http://img3.catalog.video.msn.com/image.aspx' . entre1y2($this->web_descargada, 'catalog.video.msn.com/image.aspx', '"'); dbug_($imagen); $uuid = entre1y2($imagen, 'uuid=', '&'); dbug_($uuid); $imagen = 'http://img3.catalog.video.msn.com/image.aspx?uuid=' . $uuid . '&w=500&h=250&so=4'; dbug_($imagen); $url = "http://hub.video.msn.com/services/videodata/?callback=JsonpCb0&ids={$uuid}&detailed=true&responseEncoding=json&v=2"; $ret = CargaWebCurl($url); $ret = substr($ret, 9, -1); $ret = str_replace("'", '"', $ret); $ret = preg_replace('/(\\w+):/i', '"\\1":', $ret); $ret = preg_replace_callback('/\\\\x.{2}/i', function ($a) { return chr('0' . substr($a[0], 1)); }, $ret); dbug_($ret); $ret = json_decode($ret, true); dbug(json_last_error()); dbug_r($ret); $titulo = $ret['videos'][0]['title']; $calidades = array('105' => '1080p', '104' => '720p', '103' => '480p', '102' => '360p', '101' => '240p', '1005' => '1080p', '1004' => '720p', '1003' => '480p', '1002' => '360p', '1001' => '240p'); foreach ($ret['videos'][0]['files'] as &$elem) { $ret['videos'][0]['files'][$elem['formatCode']] =& $elem; } foreach ($calidades as $i => $calidad) { if (isset($ret['videos'][0]['files'][$i])) { $elem =& $ret['videos'][0]['files'][$i]; if (!stringContains($elem['url'], array('.mp4', '.flv'))) { continue; } foreach ($obtenido['enlaces'] as &$enl) { if (substr($enl['url'], 20) === substr($elem['url'], 20)) { continue 2; } } $obtenido['enlaces'][] = array('url' => $elem['url'], 'url_txt' => 'Descargar en ' . $calidad, 'tipo' => 'http'); } } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; } finalCadena($obtenido, false); }
function listFolderFiles($dir) { $ffs = scandir($dir); global $main_dir, $content; foreach ($ffs as $ff) { if ($ff != '.' && $ff != '..') { ///////////////////////// // files to skip if ($ff === "assets.js" || $ff === "css") { // do nothing } else { if (endsWith($dir, DS . 'spine')) { if (endsWith($ff, '.png')) { $basic = beforeComma($ff); $content .= "ContentManager.add_spine('" . $basic . "');\n"; } } else { if (stringContains($dir, 'sounds' . DS . 'effects')) { if (endsWith($ff, '.webm')) { $basic = beforeComma($ff); $content .= "ContentManager.add_sound('" . $basic . "',['" . create_url($dir) . $basic . ".webm','" . create_url($dir) . $basic . ".mp3']);\n"; } } else { if (stringContains($dir, 'sounds' . DS . 'music')) { if (endsWith($ff, '.webm')) { $basic = beforeComma($ff); $content .= "ContentManager.add_audio('" . $basic . "',['" . create_url($dir) . $basic . ".webm','" . create_url($dir) . $basic . ".mp3']);\n"; } } else { if (endsWith($dir, DS . 'fonts')) { if (endsWith($ff, '.ttf')) { $basic = beforeComma($ff); $content .= "ContentManager.add_font('" . $basic . "','" . create_url($dir) . $ff . "',{ xhrType: PIXI.loaders.Resource.XHR_RESPONSE_TYPE.DOCUMENT});\n"; } else { if (endsWith($ff, '.fnt')) { $basic = beforeComma($ff); $content .= "ContentManager.add_bitmap_font('" . $basic . "','" . create_url($dir) . $ff . "');\n"; } } } else { if (stringContains($dir, 'assets' . DS . 'images' . DS . "atlases")) { if (endsWith($ff, '.png')) { $basic = beforeComma($ff); $content .= "ContentManager.add_atlas('" . $basic . "');\n"; } } else { if (endsWith($dir, DS . 'localization')) { if (endsWith($ff, '.txt')) { $basic = beforeComma($ff); $content .= "ContentManager.add_file('" . $basic . "','" . create_url($dir) . $ff . "');\n"; } } else { if (stringContains($dir, 'assets' . DS . 'images')) { if (endsWith($ff, '.png')) { $basic = beforeComma($ff); $url = create_url($dir); $url = str_replace('assets/images', '', $url); $url = ltrim($url, '/'); $content .= "ContentManager.add_image('" . $basic . "','" . $url . $ff . "');\n"; } } else { if (endsWith($ff, '.json')) { // looking for json files $basic = beforeComma($ff); $content .= "ContentManager.add_file('" . $basic . "','" . create_url($dir) . $ff . "');\n"; } } } } } } } } } /////////////////////////////// if (is_dir($dir . DS . $ff)) { $content .= "\n"; listFolderFiles($dir . DS . $ff); } } } }
function listFolderFiles($dir) { $ffs = scandir($dir); global $main_dir, $content; foreach ($ffs as $ff) { if ($ff != '.' && $ff != '..') { ///////////////////////// // files to skip if ($ff === "assets.js" || $ff === "css") { // do nothing } else { if (endsWith($dir, DS . 'spine')) { if (endsWith($ff, '.png')) { $basic = beforeComma($ff); $content .= "ContentManager.add_spine('" . $basic . "');\n"; } } else { if (stringContains($dir, 'sounds' . DS . 'effects')) { if (endsWith($ff, '.mp3')) { $basic = beforeComma($ff); $data = file_get_contents($dir . DS . $ff); $base64 = "data:audio/mp3;base64," . base64_encode($data); $content .= "ContentManager.add_sound('" . $basic . "','" . $base64 . "');\n"; } } else { if (stringContains($dir, 'sounds' . DS . 'music')) { if (endsWith($ff, '.mp3')) { $basic = beforeComma($ff); $data = file_get_contents($dir . DS . $ff); $base64 = "data:audio/mp3;base64," . base64_encode($data); $content .= "ContentManager.add_audio('" . $basic . "','" . $base64 . "');\n"; } } else { if (endsWith($dir, DS . 'fonts')) { if (endsWith($ff, '.ttf')) { $basic = beforeComma($ff); $content .= "ContentManager.add_font('" . $basic . "','" . create_url($dir) . $ff . "');\n"; } } else { if (stringContains($dir, 'assets' . DS . 'images' . DS . "atlases")) { if (endsWith($ff, '.png')) { $basic = beforeComma($ff); $content .= "ContentManager.add_atlas('" . $basic . "');\n"; } } else { if (endsWith($dir, DS . 'localization')) { if (endsWith($ff, '.txt')) { $basic = beforeComma($ff); $content .= "ContentManager.add_file('" . $basic . "','" . create_url($dir) . $ff . "');\n"; } } else { if (stringContains($dir, 'assets' . DS . 'images')) { if (endsWith($ff, '.png')) { $basic = beforeComma($ff); $url = create_url($dir); $url = str_replace('assets/images', '', $url); $url = ltrim($url, '/'); $content .= "ContentManager.add_image('" . $basic . "','" . $url . $ff . "');\n"; } } else { if (endsWith($ff, '.json')) { // looking for json files $basic = beforeComma($ff); $content .= "ContentManager.add_file('" . $basic . "','" . create_url($dir) . $ff . "');\n"; } } } } } } } } } /////////////////////////////// if (is_dir($dir . DS . $ff)) { $content .= "\n"; listFolderFiles($dir . DS . $ff); } } } }
function processrequestAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); $session = SessionWrapper::getInstance(); $this->_translate = Zend_Registry::get("translate"); $config = Zend_Registry::get("config"); $formvalues = $this->_getAllParams(); // debugMessage($formvalues); // exit(); $formvalues['id'] = $id = decode($formvalues['id']); $profilefolder = $formvalues['userid']; $ledger = new Ledger(); if (!isArrayKeyAnEmptyString('id', $formvalues)) { $ledger->populate($id); $formvalues['lastupdatedby'] = $session->getVar('userid'); } else { $formvalues['createdby'] = $session->getVar('userid'); } if (stringContains('>', $formvalues['filename'])) { $formvalues['filename'] = ''; } $ledger->processPost($formvalues); /* debugMessage($ledger->toArray()); debugMessage('errors are '.$ledger->getErrorStackAsString()); exit(); */ if ($ledger->hasError()) { $session->setVar(ERROR_MESSAGE, $ledger->getErrorStackAsString()); } else { try { $ledger->save(); // debugMessage($ledger->toArray()); $session->setVar(SUCCESS_MESSAGE, $this->_getParam('successmessage')); } catch (Exception $e) { $session->setVar(ERROR_MESSAGE, $e->getMessage()); // debugMessage('save error '.$e->getMessage()); } } }
function checkloginAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); $session = SessionWrapper::getInstance(); $formvalues = $this->_getAllParams(); // debugMessage($formvalues); # check that an email has been provided if (isEmptyString(trim($this->_getParam("email")))) { $session->setVar(ERROR_MESSAGE, $this->_translate->translate("profile_email_error")); $session->setVar(FORM_VALUES, $this->_getAllParams()); // return to the home page $this->_helper->redirector->gotoUrl(decode($this->_getParam(URL_FAILURE))); } if (isEmptyString(trim($this->_getParam("password")))) { $session->setVar(ERROR_MESSAGE, $this->_translate->translate("profile_password_error")); $session->setVar(FORM_VALUES, $this->_getAllParams()); // return to the home page $this->_helper->redirector->gotoUrl(decode($this->_getParam(URL_FAILURE))); } # check which field user is using to login. default is username $credcolumn = "username"; $login = (string) trim($this->_getParam("email")); // $password = encode(sha1(trim($this->_getParam("password")))); # check if credcolumn is emai $validator = new Zend_Validate_EmailAddress(); if ($validator->isValid($login)) { $usertable = new UserAccount(); if ($usertable->findByEmail($login)) { $credcolumn = 'email'; } } if (stringContains('!@#', $login)) { $credcolumn = 'trx'; $loginarray = explode('.', $login); // debugMessage($loginarray); $id = $loginarray[0]; } // debugMessage($credcolumn); exit; $browser = new Browser(); $audit_values = $browser_session = array("browserdetails" => $browser->getBrowserDetailsForAudit(), "browser" => $browser->getBrowser(), "version" => $browser->getVersion(), "useragent" => $browser->getUserAgent(), "os" => $browser->getPlatform(), "ismobile" => $browser->isMobile() ? '1' : 0, "ipaddress" => $browser->getIPAddress()); // debugMessage($audit_values); if ($credcolumn == 'email' || $credcolumn == 'username') { $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get("dbAdapter")); // define the table, fields and additional rules to use for authentication $authAdapter->setTableName('useraccount'); $authAdapter->setIdentityColumn($credcolumn); $authAdapter->setCredentialColumn('password'); $authAdapter->setCredentialTreatment("sha1(?) AND status = '1' "); // set the credentials from the login form $authAdapter->setIdentity($login); $authAdapter->setCredential($this->_getParam("password")); // new class to audit the type of Browser and OS that the visitor is using if (!$authAdapter->authenticate()->isValid()) { // debugMessage('invalid'); exit; // add failed login to audit trail $audit_values['module'] = 1; $audit_values['usecase'] = '1.1'; $audit_values['transactiontype'] = USER_LOGIN; $audit_values['status'] = "N"; $audit_values['transactiondetails'] = "Login for user with id '" . $this->_getParam("email") . "' failed. Invalid username or password"; // exit(); $this->notify(new sfEvent($this, USER_LOGIN, $audit_values)); // return to the home page if (!isArrayKeyAnEmptyString(URL_FAILURE, $formvalues)) { $session->setVar(ERROR_MESSAGE, "Invalid Email or Username or Password. <br />Please Try Again."); $this->_helper->redirector->gotoUrl(decode($this->_getParam(URL_FAILURE))); } else { $session->setVar(ERROR_MESSAGE, "Invalid Email or Username or Password. <br />Please Try Again."); $this->_helper->redirector->gotoSimple('login', "user"); } return false; } // user is logged in sucessfully so add information to the session $user = $authAdapter->getResultRowObject(); $useraccount = new UserAccount(); $useraccount->populate($user->id); } // exit; # trx login if ($credcolumn == 'trx') { $useraccount = new UserAccount(); $useraccount->populate($id); // debugMessage($result); exit(); if (isEmptyString($useraccount->getID())) { // return to the home page if (!isArrayKeyAnEmptyString(URL_FAILURE, $formvalues)) { $session->setVar(ERROR_MESSAGE, "Invalid Email or Username or Password. <br />Please Try Again."); $this->_helper->redirector->gotoUrl(decode($this->_getParam(URL_FAILURE))); } else { $session->setVar(ERROR_MESSAGE, "Invalid Email or Username or Password. <br />Please Try Again."); $this->_helper->redirector->gotoSimple('login', "user"); } return false; } } // debugMessage($useraccount->toArray()); exit(); $session->setVar("userid", $useraccount->getID()); $session->setVar("username", $useraccount->getUserName()); $session->setVar("type", $useraccount->getType()); $session->setVar("companyid", $useraccount->getCompanyID()); $session->setVar("istimesheetuser", $useraccount->getIsTimesheetUser()); $session->setVar("browseraudit", $browser_session); $session->setVar("user", json_encode($useraccount->toArray())); $session->setVar("company", json_encode($useraccount->getCompany()->toArray())); // clear user specific cache, before it is used again $this->clearUserCache(); // Add successful login event to the audit trail $audit_values['module'] = 1; $audit_values['usecase'] = '1.1'; $audit_values['transactiontype'] = USER_LOGIN; $audit_values['status'] = "Y"; $audit_values['userid'] = $useraccount->getID(); $audit_values['transactiondetails'] = "Login for user with id '" . $this->_getParam("email") . "' successful"; // $this->notify(new sfEvent($this, USER_LOGIN, $audit_values)); if (isEmptyString($this->_getParam("redirecturl"))) { # forward to the dashboard $this->_helper->redirector->gotoSimple("index", "dashboard"); } else { # redirect to the page the user was coming from if (!isEmptyString($this->_getParam(SUCCESS_MESSAGE))) { $successmessage = decode($this->_getParam(SUCCESS_MESSAGE)); $session->setVar(SUCCESS_MESSAGE, $successmessage); } $this->_helper->redirector->gotoUrl(decode($this->_getParam("redirecturl"))); } }
function encuentraAssetEnContenido($web_descargada) { $asset = "Por rellenar"; dbug('asset, prueba 0: ' . $asset); if (stringContains($asset, array('"', '{', '}', '<', '>', ' ')) && enString($web_descargada, "assetID=")) { $asset = entre1y2($web_descargada, 'assetID=', '_'); } dbug('asset, prueba 1: ' . $asset); if (stringContains($asset, array('"', '{', '}', '<', '>', ' '))) { $asset = substr($asset, 1); dbug('asset, prueba 2: ' . $asset); } if (stringContains($asset, array('"', '{', '}', '<', '>', ' '))) { if (enString($web_descargada, 'lass="imgT"') && enString($web_descargada, 'href="')) { $p = strpos($web_descargada, 'lass="imgT"'); $asset = entre1y2_a($web_descargada, $p, 'href="', '"'); dbug('extraer asset de url: ' . $asset); if (enString($asset, '.shtml')) { if (!enString($asset, 'rtve.es')) { $asset = 'http://www.rtve.es/' . $asset; } $assetW = CargaWebCurl($asset); dbug('lanzando encuentraAssetEnContenido() con el contenido de ' . $asset); $asset = $this->encuentraAssetEnContenido($assetW); } else { preg_match_all('@/(\\d+)/@', $asset, $matches); $asset = $matches[1][0]; } dbug('asset, prueba 3: ' . $asset); } else { dbug('asset, prueba 3. No se realiza.'); } } if (stringContains($asset, array('"', '{', '}', '<', '>', ' '))) { preg_match_all('@data-assetid="(\\d+)_@i', $web_descargada, $matches); $asset = $matches[1][0]; dbug('asset, prueba 3.5: ' . $asset); } if (stringContains($asset, array('"', '{', '}', '<', '>', ' '))) { preg_match_all('@DC.identifier" ?content="(\\d+)"@', $web_descargada, $matches); $asset = $matches[1][0]; dbug('asset, prueba 4: ' . $asset); } if (stringContains($asset, array('"', '{', '}', '<', '>', ' '))) { preg_match_all('@/(\\d+)/@', $this->web, $matches); $asset = $matches[1][0]; dbug('asset, prueba 3 (de la url): ' . $asset); } if (!is_numeric($asset) && preg_match('#class="M[ "][\\s\\S]*?<a href=.*/([0-9]+)/#', $web_descargada, $matches)) { dbug_r($matches); $asset = $matches[1]; } dbug('asset=' . $asset); return $asset; }
function calcula() { $obtenido = array('enlaces' => array()); /* http://www.ccma.cat/324/Grecia-haura-de-celebrar-eleccions-despres-de-fracassar-el-tercer-intent-delegir-president/noticia/2625031/ http://www.tv3.cat/videos/188877281/Els-ajudants-del-pare-Noel# videos/188877281/ http://www.tv3.cat/pvideo/FLV_bbd_dadesItem.jsp?idint= */ if (enString($this->web, 'http://www.tv3.cat/pprogrames/hd/mhdSeccio.jsp')) { setErrorWebIntera('Los vídeos en HD pueden descargarse desde TV3.'); return; } $id = ''; if (enString($this->web_descargada, 'arrayVideos = [')) { $id = entre1y2($this->web_descargada, 'arrayVideos = [', ','); dbug('video de formato admitido en js. id video=' . $id); } elseif (enString($this->web_descargada, '.videoid')) { preg_match('@\\.videoid[^0-9^;]+([0-9]+?);@', $this->web_descargada, $match); dbug_r($match); $id = $match[1]; dbug('video de formato admitido en js (.videoid). id video=' . $id); } elseif (enString($this->web_descargada, 'idint="')) { $id = entre1y2($this->web_descargada, 'dint="', '"'); dbug('video de formato admitido en js (dint="). id video=' . $id); } elseif (enString($this->web_descargada, '<div class="SSG cat_videos">')) { preg_match_all('#<h2>(.+?)</h2>[\\s\\S]*?<span class="id_video">([0-9]+?)</span>#', $this->web_descargada, $matches); dbug_r($matches); for ($i = 0, $ii = count($matches[0]); $i < $ii; $i++) { $obtenido['enlaces'][] = array('titulo' => utf8_encode($matches[1][$i])); $this->resuelveIDMetodo2($matches[2][$i], $obtenido['enlaces'], $titulo, $imagen, true); } dbug('Varios vídeos (<div class="SSG cat_videos">)'); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido); return; } else { //la id esta en la url $p = strrposF($this->web, '/videos/'); $f = strrpos($this->web, '/', $p); if (!$f) { $id = substr($this->web, $p); } else { $id = substr($this->web, $p, $f - $p); } if (stringContains($id, array(' ', '<', '>', '/', '.')) || $id == '') { //la id esta en la url, o deberia, pero no esta como siempre. encontrar. // '/\/[0-9^\/]*\//'; preg_match_all('|/([0-9]+)/|', str_replace('//www.ccma.cat/324/', '', $this->web), $coincidencias, PREG_OFFSET_CAPTURE); dbug_r($coincidencias); $id = $coincidencias[1][0][0]; } dbug('video de formato admitido? (en url): id video=' . $id); } $tresalacarta = 0; if (stringContains($id, array(' ', '<', '>', '/', '.')) || $id == '') { //3alacarta if (enString($this->web, '3alacarta')) { dbug('3alacarta'); $p = strpos($this->web, '/#/') + 2; $id = substr($this->web, $p); $tresalacarta = 1; } } if (stringContains($id, array('<', '>', '/', '.')) || $id == '') { $p = strpos($this->web_descargada, '<object'); $id = entre1y2_a($this->web_descargada, $p, "id='EVP", "'"); $letras = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); $id = str_replace($letras, '', strtoupper($id)); } if (!is_numeric($id) || $id == '') { $retfull_no_espacios = str_replace(' ', '', $this->web_descargada); //la id esta en el html //VIDEO_ID = 4018251; $p = strrposF($retfull_no_espacios, 'VIDEO_ID='); $f = strpos($retfull_no_espacios, ';', $p); $id = substr($retfull_no_espacios, $p, $f - $p); if (!is_numeric($id) || $id == '') { //la id esta en el html //VIDEO_ID = 4018251; $p = strrposF($retfull_no_espacios, 'videoid='); $f = strpos($retfull_no_espacios, '&', $p); $id = substr($retfull_no_espacios, $p, $f - $p); if (!is_numeric($id) || $id == '') { $p = strrposF($retfull_no_espacios, 'videoid='); $f = strpos($retfull_no_espacios, ';', $p); $id = substr($retfull_no_espacios, $p, $f - $p); //echo '.'.$retfull_no_espacios.'.'; if (!is_numeric($id) || $id == '') { //<span class="id_video">3260890</span> $id = entre1y2($retfull_no_espacios, '<spanclass="id_video">', '</span>'); if (!is_numeric($id) || $id == '') { //<span> </span> $sujeto = $retfull_no_espacios; //$patron = '/\/[0-9^\/]*\//'; $patron = '|<span>([0-9]+)</span>|'; preg_match_all($patron, $sujeto, $coincidencias, PREG_OFFSET_CAPTURE); dbug_r($coincidencias); $id = $coincidencias[1][0][0]; if (!is_numeric($id) || $id == '') { //<span class="id">3260890</span> $id = entre1y2($retfull_no_espacios, '<spanclass="id">', '</span>'); if (!is_numeric($id) || $id == '') { //embedEVPLight(2692490,601) $id = entre1y2($retfull_no_espacios, 'embedEVPLight(', ','); if (!is_numeric($id) || $id == '') { dbug('fallo'); } } else { dbug('span class="id"'); } } else { dbug('span'); } } else { dbug('span class="id_video"'); } } else { dbug('encontrado con videoid = '); } } else { dbug('encontrado con VIDEO_ID = '); } } else { dbug('encontrado con VIDEOID=...&'); } dbug('video de formato admitido (en html): id video=' . $id); } else { dbug('id sacada con <object ... id="EVP..." -> id video=' . $id); } if ($id == '') { //id no encontrada: //fallo url setErrorWebIntera('No se pudo encontrar la ID de ningún vídeo.'); return; } /////////usa de estas dos dice que es un video de windows media player... //playWMOVideoQualitat //video-wmp if (enString($this->web_descargada, 'playWMOVideoQualitat')) { dbug('metodo 1'); if ($tresalacarta != 1) { //titulo //<h1>Els ajudants del pare Noel</h1> $titulo = entre1y2($this->web_descargada, '<h1>', '</h1>'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); } $this->resuelveIDMetodo1($id, $obtenido['enlaces']); } else { if (enString($this->web_descargada, 'insertaEVP(')) { dbug('metodo 2'); if ($tresalacarta != 1) { //titulo //<h1>Amb Fidel, passi el que passi</h1> $titulo = entre1y2($this->web_descargada, '<h1>', '</h1>'); if (stringContains($titulo, array('<', '>'))) { $titulo = entre1y2($titulo, 'arrayTitol = ["', '"'); } else { //imagen //'/multimedia/jpg/3/6/1336300867363.jpg' $p = strpos($this->web_descargada, "/multimedia/"); $f = strposF($this->web_descargada, '.jpg', $p); $imagen = 'http://www.tv3.cat' . substr($this->web_descargada, $p, $f - $p); dbug('imagen=' . $imagen); } $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); } //insertaEVP("flashcontent", flashvars, params, size ); $this->resuelveIDMetodo2($id, $obtenido['enlaces'], $titulo, $imagen); } elseif ($id !== '') { dbug('metodo (3). Suponemos que hay id.'); $this->resuelveIDMetodo2($id, $obtenido['enlaces'], $titulo, $imagen); } } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido); }
function calcula() { //titulo //<p class="fecha">08-05-2012</p> //<p class="programa">Objetivo Asturias</p> //<meta property="og:title" content=" La Agencia Tributaria inició hace cuatro meses una investigación fiscal en el Montepío de la Minería" /> $p = strpos($this->web_descargada, 'og:title'); $titulo = entre1y2_a($this->web_descargada, $p, 'content="', '"'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); //&image=fotos//11/10/121317639014_Cabecera Objetivo Asturias.jpg& //imagen $p = strposF($this->web_descargada, "'image':"); $imagen = entre1y2_a($this->web_descargada, $p, "'", "'"); dbug('imagen=' . $imagen); $p = strposF($this->web_descargada, "'file'"); $url = entre1y2_a($this->web_descargada, $p, "'", "'"); dbug($url); dbug("A"); if (!stringContains($url, array(".mp4", ".flv"))) { dbug("B"); // Probemos con la api de json $apiURL = "http://rtpa.es/api/muestra_json_vod.php?id_programa=" . entre1y2($this->web_descargada, "id_programa=", "&"); $apiResp = CargaWebCurl($apiURL); dbug($apiResp); $apiResp = json_decode($apiResp, true); dbug_r($apiResp); $imagen = $apiResp['VOD'][0]['url_imagen']; dbug('imagen=' . $imagen); $titulo = $apiResp['VOD'][0]['nombre_programa']; dbug('$titulo=' . $titulo); $url = "http://rtpa.ondemand.flumotion.com/rtpa/ondemand/vod/" . $apiResp['VOD'][0]['id_programacion'] . "_1.mp4"; dbug($url); // http://www.rtpa.es/programa:EMBAJADORES_1393094582.html // http://rtpa.es/api/muestra_json_vod.php?id_programa=1393094582 // http://rtpa.ondemand.flumotion.com/rtpa/ondemand/vod/66103_1.mp4?start=0 } //no borrar hasta confirmar que rtpa ya no tiene listas de reproduccion /* if(enString($retfull,"reproductorVideoOnDemmand-mp4-rtpa.swf")){ //<source src="http://asturiastv.eu/vod/2012/04/20120417TPANOTICIAS1_1.mp4" type="video/mp4"> $p=strpos($ret,'<source src="')+13; $f=strpos($ret,'"', $p); $ret=substr($ret, $p, $f-$p); //ret ya tiene el enlace. fue rapido } if(enString($retfull,"reproductorVideoOnDemmand.swf")){ //<source src="http://asturiastv.eu/vod/2012/04/20120417TPANOTICIAS1_1.mp4" type="video/mp4"> $p=strpos($ret,'partes=')+7; $f=strpos($ret,'&',$p); $partes=substr($ret,$p,$f-$p); $files=array(); for($i=1;$i<$partes+1;$i++){ $nvideo="video".$i."="; $p=strpos($retfull,$nvideo,$lastpos)+strlen($nvideo); $f=strpos($retfull,'&',$p); $temp=substr($retfull,$p,$f-$p); $temp='http://195.55.74.217/rtpa/ondemand/vod/'.$temp.'_'.$i.'.mp4'; if(esVideoAudioAnon($temp)){ $files[]=$temp; dbug('url='.$temp); } else dbug('debería haber una url pero no lo era'); } $ret=""; foreach($files as $value_display){ //echo "</br>".$value_display."</br>"; $ret.=$value_display."|"; } $ret=substr($ret, 0, -1); } */ $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'tipo' => 'http'))); finalCadena($obtenido); }
function parseaXMLNormal($url, &$xml_ret, $modo = 'normal') { dbug('parseaXMLNormal'); dbug('xml=' . $url); $xml = CargaWebCurl($url); if ($xml_ret === '') { dbug('xml_ret (url)=' . $url); $xml_ret = $xml; } $netStorage = false; if (enString($xml, '<NetStorage><![CDATA[')) { $ret2 = entre1y2($xml, '<NetStorage><![CDATA[', ']'); $netStorage = true; } else { $ret2 = entre1y2($xml, '<urlHttpVideo><![CDATA[', ']'); } //fix para evitar geobloqueo. $ret2 = strtr($ret2, array('geodesprogresiva' => 'desprogresiva')); $p = strpos($xml, '<archivoMultimedia>'); $ret = entre1y2_a($xml, $p, '<archivo><![CDATA[', ']'); //$ret contiene el primer enlace. usandolo podemos saber si hay mas enlaces. //sacamos la extension de $ret y suponiendo que todas las partes tienen la misma extension //buscamos la existencia del mismo principio y aseguramos con el mismo final $extension = substr($ret, strposF($ret, '.')); dbug('extensión: ' . $extension); if ($extension === 'f4v') { dbug('Tiene DRM (ext === f4v). No usar resultado.'); return array(); } $f = strrposF($ret, '/', 0); $baselimpia = substr($ret, 0, $f); $lastpos = $total = 0; $i = 1; $obtenidoT = array(); while ($total == 0) { $p = strpos($xml, '<archivoMultimedia>', $lastpos) + 3; $lastpos = $f = strpos($xml, 'archivoMultimedia', $p); $rettemp = substr($xml, $p, $f - $p); if ($netStorage) { $temp = $ret2 . entre1y2($rettemp, '<archivoNetStorage><![CDATA[', ']'); } else { $temp = $ret2 . entre1y2($rettemp, '<archivo><![CDATA[', ']'); } if (enString($temp, $extension)) { if ($modo == 'multi') { $urltxt = entre1y2($xml, '<nombre><![CDATA[', ']'); if (stringContains($urltxt, array('<', '>'))) { //<title>CarreraBarhein1 </title> $urltxt = entre1y2($xml, '<title>', '<'); } $urltxt = limpiaTitulo($urltxt); } else { $urltxt = 'parte ' . $i; } dbug('url encontrada: ' . $temp); $obtenidoT[] = array('url' => $temp, 'tipo' => 'http', 'url_txt' => $urltxt); } else { $total = $i; } $i++; } $retornar = array(); if (count($obtenidoT) > 1) { $retornar[] = array('titulo' => 'En partes:'); foreach ($obtenidoT as $individual) { $retornar[] = $individual; } //añadir la versión del vídeo completa. Gracias a doriape@gmail.com, creador de www.elbarco.tk y www.elbarcoxml.tk $retornar[] = array('titulo' => 'Completo:', 'url' => 'rtmp://antena3tvfs.fplive.net/antena3mediateca/' . $baselimpia . '000.' . $extension, 'tipo' => 'rtmp'); } else { if ($modo === 'normal') { unset($obtenidoT[0]['url_txt']); } foreach ($obtenidoT as $elem) { $retornar[] = $elem; } } return $retornar; }