function calcula() { if (!preg_match('#<form name="F1" method="POST" action=\'\'>#i', $this->web_descargada)) { setErrorWebIntera('No se encuentra ningún vídeo'); return; } $id = substr($this->web, strposF($this->web, 'allmyvideos.net/')); dbug('id = ' . $id); $web_embedPlayedTo = 'http://allmyvideos.net/' . $id; $retfull = CargaWebCurl($web_embedPlayedTo, '', array('referer' => 'http://web.com')); if (enString($retfull, '"image" : "')) { $mode = 'lanzaAllMyVideosNet2'; $imagen = entre1y2($retfull, '"image" : "', '"'); } else { $imagen = ''; $web_embedPlayedTo = 'http://allmyvideos.net/' . $id; $mode = 'lanzaAllMyVideosNet1'; } if (enString($this->web_descargada, 'filename=')) { $titulo = entre1y2($this->web_descargada, 'filename=', '"'); if (enString($titulo, '&')) { $titulo = substr($titulo, 0, strpos($titulo, '&')); } $titulo = urldecode($titulo); } else { $titulo = 'AllMyVideos ID: ' . $id; } // FALLA EN EL CALLBACK DEL SWF. EDITAR EL SWF $urlJS = 'function lanzaAllMyVideosNet(){' . 'if(typeof DESCARGADOR_ARCHIVOS_SWF === "undefined"){' . 'setTimeout(lanzaAllMyVideosNet, 200)' . '}' . 'else if(DESCARGADOR_ARCHIVOS_SWF === true){' . 'getFlashMovie("descargador_archivos").CargaWeb({' . '"url":"' . $web_embedPlayedTo . '",' . '"metodo":"GET"' . '}, "' . $mode . '");' . '}' . '}' . 'function lanzaAllMyVideosNet1(txt){' . 'var regex = /<input.*?name="(.*?)".*?value="(.*?)".*?>/ig;' . 'var post = "";' . 'var res = [];' . 'while((res = regex.exec(txt)) != null){' . 'if(res[1] === "referer")res[2] = "";' . 'post += res[1] + "=" + res[2] +"&";' . '}' . 'getFlashMovie("descargador_archivos").CargaWeb({' . '"url":"' . $web_embedPlayedTo . '",' . '"metodo":"POST",' . '"post":post' . '}, "lanzaAllMyVideosNet2");' . '}' . 'function lanzaAllMyVideosNet2(txt){' . 'if(txt.indexOf(".setup(") !== -1){' . 'txt = txt.substr(txt.indexOf(".setup("));' . '}' . 'var urls = txt.split("\\"sources\\" : ")[1].split("]")[0]+"]";' . 'var urls = JSON.parse(urls);' . 'urls.sort(function(a,b){return parseInt(a["label"])<parseInt(b["label"])});' . 'url = urls[0]["file"];' . 'mostrarResultado(url);' . '}' . 'function mostrarResultado(entrada){' . 'finalizar(entrada,"Descargar");' . '}' . 'function mostrarFallo(){' . 'finalizar("","Ha ocurrido un error");' . '}' . 'if(typeof descargador_archivos === "undefined"){' . 'D.g("enlaces").innerHTML += \'' . genera_swf_object('/util/fla/f/allmyvideos.net') . '\';' . 'var descargador_archivos = D.g("descargador_archivos");' . '}' . 'lanzaAllMyVideosNet();'; $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $urlJS, 'tipo' => 'jsFlash'))); finalCadena($obtenido); }
function calcula() { //$url = "http://www.crunchyroll.com/xml/?req=RpcApiVideoPlayer_GetStandardConfig&media_id={$id}&video_format={$format}&video_quality={$quality}&auto_play=1&aff=crunchyroll-website&show_pop_out_controls=1&pop_out_disable_message=Only+All-Access+Members+and+Anime+Members+can+pop+out+this+video.+Get+your+membership+today%21"; if (POST_BM) { $ret = $this->web_descargada; } else { if (!enString($this->web_descargada, '"config_url":"')) { define('IGNORA_AVISO_RAPIDO', true); setErrorWebIntera(USE_BOOKMARKLET_2); return; } $url = entre1y2($this->web_descargada, '"config_url":"', '"'); $url = urldecode($url); /* $url = "http://www.crunchyroll.com/xml/?req=RpcApiVideoPlayer_GetStandardConfig&media_id=649575&video_format=106&video_quality=60&auto_play=1&aff=crunchyroll-website&show_pop_out_controls=1&pop_out_disable_message=Only+All-Access+Members+and+Anime+Members+can+pop+out+this+video.+Get+your+membership+today%21"; $post = "current%5Fpage=http%3A%2F%2Fwww%2Ecrunchyroll%2Ecom%2Fkill%2Dla%2Dkill%2Fepisode%2D24%2Dpast%2Dthe%2Dinfinite%2Ddarkness%2D649575%3Fp480%3D1"; $ret = CargaWebCurl($url, $post, 0, '', array('Content-type: application/x-www-form-urlencoded')); dbug_($ret); */ $post = "current%5Fpage=" . urlencode($this->web); $ret = CargaWebCurl($url, $post, 0, '', array('Content-type: application/x-www-form-urlencoded')); } dbug_($ret); $titulo = entre1y2($ret, '<series_title>', '</') . ' - ' . entre1y2($ret, '<episode_title>', '</'); $obtenido = array('titulo' => $titulo, 'imagen' => entre1y2($ret, '<episode_image_url>', '</'), 'enlaces' => array(array('url' => '-', 'rtmpdump' => '-r "' . entre1y2($ret, '<host>', '</') . '" ' . '-y "' . entre1y2($ret, '<file>', '</') . '"', 'nombre_archivo' => generaNombreWindowsValido($titulo) . '.mp4', 'tipo' => 'rtmpConcreto', 'extension' => 'mp4'))); finalCadena($obtenido); }
function calcula() { //http://www.cope.es/player/id=2013072310430001&activo=6 if (enString($this->web_descargada, "_url_xml_datos:")) { dbug("audio o video por xml"); //_url_xml_datos:'/proyecto/fragmentosJSP/playerxml.jsp?id=2013072310430001,1,33,13,,1411', //http://www.cope.es/proyecto/fragmentosJSP/playerxml.jsp?id=2013072310430001,1,33,13,,1411 $url = "http://www.cope.es" . entre1y2($this->web_descargada, "_url_xml_datos:'", "'"); //http://www.cope.es/proyecto/fragmentosJSP/playerxml.jsp?id=2013072310430001,1,33,13,,1411 $ret = CargaWebCurl($url); //mp3 y mp4: mp4->id=2013051613420001,1,30,,,1411 $p = strposF($ret, 'type="content"'); //$f=strposF($this->web_descargada,"'",$p); //http://www.cope.es/proyecto/fragmentosJSP/playerxml.jsp?id=2013072310430001,1,33,13,,1411 $url = entre1y2_a($ret, $p, "<url>", "</url>"); //http://vod.cope.es/audio/2013/07/23/audio_13745695177069462491.mp3 //imagen $imagen = "http://www.cope.es/" . entre1y2($ret, "<img>", "</img>"); } elseif (enString($this->web_descargada, "addCustomPlayer(")) { //addCustomPlayer('1iynycahpn4lw1ppzh0l6r5z1a', '15wugu5n3ruow1j9kwr3ma3tqz', '177dxsxbyqz8h18z4sldn5awz2', 686, 466, 'perf1iynycahpn4lw1ppzh0l6r5z1a-177dxsxbyqz8h18z4sldn5awz2', 'eplayer17', {age:1354724063000}); //xml.eplayer.performgroup.com/eplayer/mrss/1iynycahpn4lw1ppzh0l6r5z1a/15wugu5n3ruow1j9kwr3ma3tqz//7-12 //xml.eplayer.performgroup.com/eplayer/mrss/1iynycahpn4lw1ppzh0l6r5z1a/15wugu5n3ruow1j9kwr3ma3tqz preg_match("@addCustomPlayer\\('(.*?)',.*?'(.*?)'@", $this->web_descargada, $matches); $aCargar = 'http://xml.eplayer.performgroup.com/eplayer/mrss/' . $matches[1] . '/' . $matches[2]; $xml = CargaWebCurl($aCargar); //dbug($xml); preg_match_all("@<item>[\\s\\S]*?</item>@", $xml, $matches); dbug_r($matches); foreach ($matches[0] as $item) { $urlTXT = entre1y2($item, '<title>', '</title>'); $p = strrpos($item, 'url='); $url = entre1y2_a($item, $p, '"', '"'); $obtenido['enlaces'][] = array('titulo' => $urlTXT, 'url' => $url, 'tipo' => 'rtmp'); } $obtenido['titulo'] = 'Vídeos'; $obtenido['imagen'] = 'http://www.' . DOMINIO . '/canales/cope.png'; finalCadena($obtenido); return; } elseif (enString($this->web_descargada, '/proyecto/fragmentosJSP/playerxml.jsp')) { $ret = CargaWebCurl('http://www.cope.es' . desde1a2($this->web_descargada, '/proyecto/fragmentosJSP/playerxml.jsp', '"')); dbug_($ret); $url = entre1y2($ret, '<urlHtml>', '</'); $obtenido = array('titulo' => 'Cope', 'imagen' => 'http://www.' . DOMINIO . '/canales/cope.png', 'enlaces' => array(array('url' => $url, 'url_txt' => 'Descargar', 'tipo' => 'http'))); finalCadena($obtenido); return; } else { setErrorWebIntera('No se ha encontrado nada.'); return; } //titulo $titulo = entre1y2($this->web_descargada, "<title>", "|"); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'tipo' => 'http'))); finalCadena($obtenido); }
function calcula() { $obtenido = array('enlaces' => array()); preg_match("@([0-9]+?)(?:\\.html|-)@", $this->web, $matches); dbug_r($matches); if (!isset($matches[1]) || !is_numeric($matches[1])) { // http://granadacf.ideal.es/noticias/201410/20/entrenamiento-mucho-contenido-fisico-20141020130408.html // http://granadacf.ideal.es/modgen/?idModulo=rediseno2014/PPLL_playerVideoShowVideo&modoExtendido=player&idDivVideo=video_3849210620001_3092136624146_1_1413829041980&classVideo=story&widthVideo=490&heightVideo=490&idVideo=3849210620001&linkURLVideo=http%3A//www.ideal.es/videos/granadacf/201410/20/entrenamiento-mucho-contenido-fisico-3849210620001-mm.html&stillURLVideo=http%3A//www.ideal.es/noticias/201410/20/media/cortadas/entreno--490x490.jpg&medio=ideal&dominio=http%3A//www.ideal.es&location=granadacf.ideal.es&nameVideo=Entrenamiento%20con%20mucho%20contenido%20f%26iacute%3Bsico%20para%20iniciar%20la%20semana&shortDescriptionVideo=Entrenamiento%20con%20mucho%20contenido%20f%26iacute%3Bsico%20para%20iniciar%20la%20semana&creationDateMilisecondsVideo=1413821723&origenVideo=bc&capaModal=true&usoResizer=false&autoStartVideo=true&charset=WINDOWS-1252&authorVideo=STUDIO%20SUR&smoothingVideo=false&loid=30.9.2136624146&dispositivo=pc setErrorWebIntera("No se ha encontrado ningún vídeo."); return; } // http://www.ideal.es/videos/granada/noticias/1342041315001-02184-serie-tercer-premio-acera-darro.html $idVideo = $matches[1]; $datosBC = "http://modulos-mm.ideal.es/includes/manuales/videos/php/proxyModgen.php?idVideo=" . $idVideo . "&idModulo=VOC_playerVideoShowVideo&modoExtendido=player&idDivVideo=video&medio=ideal&origenVideo=bc"; $datosBC = CargaWebCurl($datosBC); dbug($datosBC); $publisherID = entre1y2($datosBC, '"publisherID" value="', '"'); $playerID = entre1y2($datosBC, '"playerID" value="', '"'); //$urlBC = 'http://c.brightcove.com/services/viewer/federated_f9?&flashID='.$matches[1].'-bcObject&playerID='.$playerID.'&publisherID='.$publisherID.'&%40videoPlayer='.$matches[2].'&isVid=true&isUI=true&linkBaseURL='.urlencode('http://www.hogarutil.com'.$matches[6]); //http://c.brightcove.com/services/messagebroker/amf?playerKey=AQ~~,AAAAEUA28vk~,ZZqXLYtFw-ADB2SpeHfBR3cyrCkvIrAe $messagebroker = "http://c.brightcove.com/services/messagebroker/amf?playerId=" . $playerID; include 'brightcove-funciones.php'; $a_encodear = array("target" => "com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience", "response" => "/1", "data" => array("0" => "ebcf49ebfaf7ae1b09cf79a1ab47c1286b3a0605", "1" => new SabreAMF_AMF3_Wrapper(new SabreAMF_TypedObject("com.brightcove.experience.ViewerExperienceRequest", array("TTLToken" => null, "deliveryType" => NAN, "URL" => $this->web, "experienceId" => $playerID, "playerKey" => null, "contentOverrides" => array("0" => new SabreAMF_TypedObject("com.brightcove.experience.ContentOverride", array("contentIds" => null, "contentRefId" => null, "contentRefIds" => null, "featuredRefId" => null, "contentType" => 0, "target" => "videoPlayer", "featuredId" => NAN, "contentId" => $idVideo)))))))); $post = brightcove_encode($a_encodear); //$test="AAMAAAABAEZjb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkV4cGVyaWVuY2VSdW50aW1lRmFjYWRlLmdldERhdGFGb3JFeHBlcmllbmNlAAIvMQAAAdAKAAAAAgIAKGViY2Y0OWViZmFmN2FlMWIwOWNmNzlhMWFiNDdjMTI4NmIzYTA2MDURCmNjY29tLmJyaWdodGNvdmUuZXhwZXJpZW5jZS5WaWV3ZXJFeHBlcmllbmNlUmVxdWVzdCFjb250ZW50T3ZlcnJpZGVzEVRUTFRva2VuGWRlbGl2ZXJ5VHlwZQdVUkwZZXhwZXJpZW5jZUlkE3BsYXllcktleQkDAQqBA1Njb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkNvbnRlbnRPdmVycmlkZRVjb250ZW50SWRzGWNvbnRlbnRSZWZJZBtjb250ZW50UmVmSWRzG2ZlYXR1cmVkUmVmSWQXY29udGVudFR5cGUNdGFyZ2V0FWZlYXR1cmVkSWQTY29udGVudElkAQEBAQQABhd2aWRlb1BsYXllcgV/////4AAAAAVCgOqrnL6IAAYBBX/////gAAAABoE/aHR0cDovL3d3dy5pZGVhbC5lcy92aWRlb3MvZ3JhbmFkYS9ub3RpY2lhcy8yMzI1MDEwOTQ2MDAxLWRpbGlnZW5jaWFzLXZ1ZWx2ZW4tdmFsbGUtbGVjcmluLmh0bWwFQlH8m6HwQAAGAQ=="; //dbug_r(brightcove_decode(base64_decode($test))); dbug('a descargar: ' . $messagebroker); /*$t=brightcove_curl_web("http://forestrf.no-ip.org/",$post); //borrar, es una prueba dbug_($t); exit;*/ $t = brightcove_curl_web($messagebroker, $post); dbug_($t); $res_decoded = brightcove_decode($t); dbug("PRIMERA RESPUESTA BRIGHTCOVE:"); dbug_r($res_decoded); $base = $res_decoded["data"]->getAMFData(); $base = $base['programmedContent']['videoPlayer']->getAMFData(); $base = $base['mediaDTO']->getAMFData(); dbug_r($base); $titulo = $base["linkText"]; $imagen = $base["videoStillURL"]; dbug('titulo = ' . $titulo); dbug('imagen = ' . $imagen); $obtenido['enlaces'] = brightcove_genera_obtenido($this, $base, array('IOSRenditions' => 'm3u8', 'renditions' => 'rtmp')); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); }
function calcula() { if (!enString($this->web_descargada, '<Form method="POST" action=\'\'>')) { setErrorWebIntera('No se encuentra ningún vídeo'); return; } $id = substr($this->web, strposF($this->web, 'played.to/')); dbug('id = ' . $id); $web_embedPlayedTo = 'http://played.to/embed-' . $id . '-640x360.html'; // $retfull = CargaWebCurl($web_embedPlayedTo, '', array('referer' => 'http://web.com')); $imagen = entre1y2($retfull, 'image: "', '"'); $titulo = entre1y2($this->web_descargada, '<h1 class="pagename">', '<'); // FALLA EN EL CALLBACK DEL SWF. EDITAR EL SWF $urlJS = 'function lanzaPlayedTo(){' . 'if(typeof DESCARGADOR_ARCHIVOS_SWF === "undefined"){' . 'setTimeout(lanzaPlayedTo, 200)' . '}' . 'else if(DESCARGADOR_ARCHIVOS_SWF === true){' . 'getFlashMovie("descargador_archivos").CargaWeb({' . '"url":"' . $web_embedPlayedTo . '",' . '"metodo":"GET"' . '}, "procesaPlayedTo2");' . '}' . '}' . 'function procesaPlayedTo2(txt){' . 'var url = txt.split("file: \\"")[1].split("\\"")[0];' . 'mostrarResultado(url);' . '}' . 'function mostrarResultado(entrada){' . 'finalizar(entrada,"Descargar");' . '}' . 'function mostrarFallo(){' . 'finalizar("","No se ha encontrado ningún resultado");' . '}' . 'if(typeof descargador_archivos === "undefined"){' . 'D.g("enlaces").innerHTML += \'' . genera_swf_object('/util/fla/f/http://played.to/') . '\';' . 'var descargador_archivos = D.g("descargador_archivos");' . '}' . 'lanzaPlayedTo();'; $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $urlJS, 'tipo' => 'jsFlash'))); finalCadena($obtenido); }
function calcula() { if (enString($this->web, '.com/v/')) { $this->web = 'https://www.youtube.com/watch?v=' . substr($this->web, strposF($this->web, '.com/v/')); } $this->web = strtr($this->web, array('//m.' => '//www.')); //id parse_str(parse_url($this->web, PHP_URL_QUERY), $vars); //$id=$vars['v'] dbug_r($vars); $encontrado = false; $intentos = 3; $tube = new youtube(); $links = $tube->parse($this->web_descargada); dbug_r($links); $web2 = $this->web; while (($links === false || count($links) == 0) && $intentos > 0) { dbug("ERROR: " . $tube->error); dbug('reintentando en 0.1s'); usleep(100000); $tube = new youtube(); $links = $tube->parse(CargaWebCurl($web2, '', 0, '', array(), true, true)); dbug_r($links); --$intentos; } $obtenido = array('enlaces' => array()); if ($links) { //imagen //https://i1.ytimg.com/vi/8GLNKyfdnQg/0.jpg $imagen = 'https://i1.ytimg.com/vi/' . $vars['v'] . '/0.jpg'; $titulo = entre1y2($this->web_descargada, '<meta name="title" content="', '"'); $titulo = limpiaTitulo($titulo); foreach ($links as &$link) { //'ext','p','axb','2D-3D','audio','url' $obtenido['enlaces'][] = array('url' => $link['url'] . "&title=" . urlencode(decode_entities($titulo)), 'tipo' => 'http', 'url_txt' => $link['p'] . ' ' . $link['ext'] . ($link['2D-3D'] === '3D' ? ': 3D' : '') . ($link['audio'] ? ' - ' . $link['audio'] : '')); } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); } else { setErrorWebIntera($tube->error); return; } }
function calcula() { $obtenido = array('enlaces' => array()); //http://c.brightcove.com/services/viewer/federated_f9?&flashID=ms-player2-continuo-bcObject&playerID=2418571368001&publisherID=2385340627001&%40videoPlayer=2875076343001&isVid=true&isUI=true&linkBaseURL=".urlencode() $patron = '@GENERAL.videoBrightcove.*?\\(.*?"(.*?)".*?,.*?"(.*?)"@i'; preg_match($patron, $this->web_descargada, $matches); dbug_r($matches); if (!isset($matches[2]) || !is_numeric($matches[2])) { setErrorWebIntera("No se ha encontrado ningún vídeo."); return; } $contentId = $matches[2]; $publisherID = 2385340627001; $playerID = 2418571368001; //$urlBC = 'http://c.brightcove.com/services/viewer/federated_f9?&flashID='.$matches[1].'-bcObject&playerID='.$playerID.'&publisherID='.$publisherID.'&%40videoPlayer='.$matches[2].'&isVid=true&isUI=true&linkBaseURL='.urlencode('http://www.hogarutil.com'.$matches[6]); //http://c.brightcove.com/services/messagebroker/amf?playerKey=AQ~~,AAAAEUA28vk~,ZZqXLYtFw-ADB2SpeHfBR3cyrCkvIrAe $messagebroker = "http://c.brightcove.com/services/messagebroker/amf?playerId=" . $playerID; include 'brightcove-funciones.php'; $a_encodear = array("target" => "com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience", "response" => "/1", "data" => array("0" => "8ea8d3dc9fe7f3763119fb54107e6b5f814b876f", "1" => new SabreAMF_AMF3_Wrapper(new SabreAMF_TypedObject("com.brightcove.experience.ViewerExperienceRequest", array("TTLToken" => null, "deliveryType" => NAN, "playerKey" => "", "URL" => $this->web, "experienceId" => $playerID, "contentOverrides" => array("0" => new SabreAMF_TypedObject("com.brightcove.experience.ContentOverride", array("target" => "videoPlayer", "featuredId" => NAN, "contentType" => 0, "contentId" => $contentId, "featuredRefId" => null, "contentIds" => null, "contentRefId" => null, "contentRefIds" => null)))))))); $post = brightcove_encode($a_encodear); dbug('a descargar: ' . $messagebroker); $t = brightcove_curl_web($messagebroker, $post); dbug($t); $res_decoded = brightcove_decode($t); dbug("PRIMERA RESPUESTA BRIGHTCOVE:"); dbug_r($res_decoded); $base = $res_decoded["data"]->getAMFData(); $base = $base['programmedContent']['videoPlayer']->getAMFData(); $base = $base['mediaDTO']->getAMFData(); dbug_r($base); $titulo = $base["displayName"]; $imagen = $base["videoStillURL"]; dbug('titulo = ' . $titulo); dbug('imagen = ' . $imagen); $obtenido['enlaces'] = brightcove_genera_obtenido(false, $base, array('IOSRenditions' => 'm3u8', 'renditions' => 'rtmpConcreto'), $titulo); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; $obtenido['descripcion'] = $base["longDescription"]; finalCadena($obtenido, false); }
function calcula() { $obtenido = array('enlaces' => array()); if (preg_match('#<param.+?name="@videoPlayer".+?value="(.+?)"#', $this->web_descargada, $matches)) { $contentId = $matches[1]; } else { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } if (preg_match('#<param.+?name="playerID".+?value="(.+?)"#', $this->web_descargada, $matches)) { $experienceID = $matches[1]; } else { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } dbug('$contentId -> ' . $contentId); dbug('experienceID = playerId -> ' . $experienceID); $messagebroker = 'http://c.brightcove.com/services/messagebroker/amf?playerId=' . $experienceID; include 'brightcove-funciones.php'; $a_encodear = array('target' => 'com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience', 'response' => '/1', 'data' => array('0' => 'fcc17f21d09457d5e28d64c3dc0c0a3cb8863710', '1' => new SabreAMF_AMF3_Wrapper(new SabreAMF_TypedObject('com.brightcove.experience.ViewerExperienceRequest', array('contentOverrides' => array(new SabreAMF_TypedObject('com.brightcove.experience.ContentOverride', array('featuredRefId' => null, 'contentIds' => null, 'contentRefId' => null, 'contentType' => 0, 'target' => 'videoPlayer', 'contentRefIds' => null, 'featuredId' => NAN, 'contentId' => $contentId))), 'playerKey' => null, 'TTLToken' => null, 'deliveryType' => NAN, 'URL' => $this->web, 'experienceId' => $experienceID))))); $post = brightcove_encode($a_encodear); dbug('a descargar: ' . $messagebroker); $t = brightcove_curl_web($messagebroker, $post); dbug_($t); $res_decoded = brightcove_decode($t); dbug('PRIMERA RESPUESTA BRIGHTCOVE (enlaces de vídeos aquí):'); dbug_r($res_decoded); $base = $res_decoded['data']->getAMFData(); $base2 = $base['programmedContent']['videoPlayer']->getAMFData(); $base3 = $base2['mediaDTO']->getAMFData(); $titulo = $base3['displayName']; $titulo = limpiaTitulo($titulo); $imagen = $base3['videoStillURL']; dbug('titulo = ' . $titulo); dbug('imagen = ' . $imagen); $obtenido['enlaces'] = brightcove_genera_obtenido(false, $base3, array('IOSRenditions' => 'm3u8', 'renditions' => 'rtmpConcreto'), $titulo); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); }
function calcula() { $obtenido = array('enlaces' => array()); $pageId = substr($this->web, strrposF($this->web, '/')); dbug_($pageId); if (preg_match('#"pageId":"' . $pageId . '".+?"urls":\\[(.+?)[,\\]]#', $this->web_descargada, $matches)) { $jsonurl = $matches[1]; } else { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } dbug_($jsonurl); $jsonurl = json_decode($jsonurl, true); dbug_($jsonurl); $json = CargaWebCurl($jsonurl); dbug_($json); $json2 = json_decode($json, true); $titulo = $json2['title']; // http://www.arucitys.com.usrfiles.com/html/5eb649_d2c495cc1c5e09ffcb959aa180074c3d.html $html = desde1a2($json, '"html/', '"', true); $html = json_decode($html, true); $html = 'http://www.arucitys.com.usrfiles.com/' . $html; dbug_($html); $html = CargaWebCurl($html); dbug_($html); $app_flash = trim(entre1y2($html, 'app_flash=', '&')); dbug_($app_flash); $ubicacion_fichero = trim(entre1y2($html, 'ubicacion_fichero=', '&')); dbug_($ubicacion_fichero); $rtmpbase = 'rtmp://178.33.166.26/' . $app_flash; $rtmp = $rtmpbase . '/mp4:' . $ubicacion_fichero; $obtenido['enlaces'] = array(array('url' => $rtmp, 'rtmpdump' => '-r "' . $rtmpbase . '" -y "' . $ubicacion_fichero . '" -o "' . generaNombreWindowsValido($titulo) . '.mp4"', 'url_txt' => 'Descargar', 'tipo' => 'rtmpConcreto')); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); }
function calcula() { $obtenido = array('enlaces' => array()); //http://www.canalsuralacarta.es/television/video/presenta-enrique-romero/7718/44 //video no admitido if (enString($this->web_descargada, "_url_xml_datos")) { dbug("_url_xml_datos encontrado"); //<param name="flashVars" value="_width=630&_height=354&_url_xml_datos=http://www.canalsuralacarta.es/webservice/video/7718" /> //flashVars="_width=630&_height=354&_url_xml_datos=" $p = strrposF($this->web_descargada, '_url_xml_datos='); $f = strpos($this->web_descargada, '"', $p); $xml = substr($this->web_descargada, $p, $f - $p); dbug("xml=" . $xml); //http://www.canalsuralacarta.es/webservice/video/7718 $titulo = entre1y2($this->web_descargada, '<title>', '<'); if (enString($titulo, ' ::')) { $titulo = substr($titulo, 0, strpos($titulo, ' ::')); } //$titulo=utf8_encode($titulo); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); $ret = CargaWebCurl($xml); //imagen //<archivoMultimediaMaxi><archivo>clipping/2012/02/08/00127/30.jpg</archivo><alt></alt></archivoMultimediaMaxi> $imagen = entre1y2($ret, '<picture>', '</'); dbug('imagen=' . $imagen); if (enString($imagen, '1pxtrans.gif')) { $imagen = 'http://www.' . DOMINIO . '/canales/canalsur.png'; } //<video type="content"> //</video> $p = strpos($ret, '<video type="content">'); $ret = substr($ret, $p); preg_match_all('#<url>([^\\[]*?)</url>#', $ret, $matches); dbug_r($matches[1]); dbug('total videos=' . count($matches[1])); switch (count($matches[1])) { case 0: setErrorWebIntera("No se encuentra ningún vídeo"); return; break; case 1: $obtenido['enlaces'][] = array('url' => $matches[1][0], 'tipo' => 'http', 'url_txt' => 'Descargar'); break; default: for ($i = 0, $i_t = count($matches[1]); $i < $i_t; $i++) { $obtenido['enlaces'][] = array('url' => $matches[1][$i], 'tipo' => 'http', 'url_txt' => 'parte ' . ($i + 1)); } break; } //<url>http://ondemand.rtva.ondemand.flumotion.com/rtva/ondemand/flash8/programas/toros-para-todos/20110921122144-7-toros-para-todos-245--domingo.flv</url> //http://ondemand.rtva.ondemand.flumotion.com/rtva/ondemand/mp4-web/programas/andalucia-directo/54134_1_6110.mp4 } elseif (enString($this->web_descargada, "var elementos = [];")) { dbug('var elementos = [];'); $ret = utf8_encode($this->web_descargada); $ret = strtr($ret, array('\\"' => "'")); $videos = substr_count($ret, 'elementos.push'); dbug('total videos=' . $videos); $last = strpos($ret, "elementos.push"); $imagen = "http://www.canalsur.es/" . entre1y2_a($ret, $last, '"urlPrevia": "', '"'); if ($videos > 1) { $titulo = "Canal Sur"; for ($i = 0; $i < $videos; $i++) { $obtenido['enlaces'][$i] = array('url' => entre1y2_a($ret, $last, '"url": "', '"'), 'tipo' => 'http', 'url_txt' => entre1y2_a($ret, $last, '"pie": "', '"')); $last = strpos($ret, "});", $last) + 1; } } else { $titulo = entre1y2_a($ret, $last, '"pie": "', '",'); $obtenido['enlaces'][$i] = array('url' => entre1y2_a($ret, $last, '"url": "', '"'), 'tipo' => 'http'); } } else { dbug('último case ifelse'); $titulo = utf8_encode(entre1y2($this->web_descargada, '<title>', '<')); if (enString($this->web_descargada, "og:image")) { $p = strpos($this->web_descargada, "og:image"); $imagen = entre1y2_a($this->web_descargada, 'content="', '"'); } else { $imagen = 'http://www.' . DOMINIO . '/canales/canalsur.png'; } preg_match("@http://[^ ]*?\\.(?:mp4|flv)@i", $this->web_descargada, $matches); $url = $matches[0]; $obtenido['enlaces'][] = array('url' => $url, 'tipo' => 'http'); } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, 0); }
function calculatv() { $obtenido = array('enlaces' => array()); //http://c.brightcove.com/services/messagebroker/amf?playerKey=AQ~~,AAAAEUA28vk~,ZZqXLYtFw-ADB2SpeHfBR3cyrCkvIrAe if (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, '<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); include 'brightcove-funciones.php'; $a_encodear = array('target' => 'com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience', 'response' => '/1', 'data' => array('0' => 'a8cdc396a50ca2415ddd0e33cca179431347adc5', '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' => null))))); $post = brightcove_encode($a_encodear); dbug('a descargar: ' . $messagebroker); $t = brightcove_curl_web($messagebroker, $post); $res_decoded = brightcove_decode($t); dbug('PRIMERA RESPUESTA BRIGHTCOVE:'); dbug_r($res_decoded); $publisherId1 = $res_decoded['data']->getAMFData(); $publisherId = $publisherId1['publisherId']; dbug('publisherId -> ' . $publisherId); preg_match_all('@/([0-9]+)/([0-9]+)/@i', $this->web, $match); $elem1 = $match[1][0]; $elem2 = $match[2][0]; $a_encodear_2 = array('target' => 'com.brightcove.player.runtime.PlayerMediaFacade.findMediaById', 'response' => '/1', 'data' => array('0' => '1667452d348dee57623638675cb12b6418e7ccc3', '1' => $experienceID, '2' => $elem2, '3' => $publisherId)); $post = brightcove_encode($a_encodear_2); $t = brightcove_curl_web($messagebroker, $post); $res_decoded = brightcove_decode($t); dbug('SEGUNDA RESPUESTA BRIGHTCOVE (enlaces de vídeos aquí):'); dbug_r($res_decoded); if ($res_decoded['data'] === null) { // Seguro que el vídeo no funciona en la página oficial. setErrorWebIntera('No se puede reproducir el vídeo desde el enlace que ha indicado.'); return; } $base = $res_decoded['data']->getAMFData(); $titulo = $base['displayName']; $imagen = $base['videoStillURL']; dbug('titulo = ' . $titulo); dbug('imagen = ' . $imagen); $obtenido['enlaces'] = brightcove_genera_obtenido($this, $base, array('IOSRenditions' => 'm3u8', 'renditions' => 'rtmpConcreto'), $titulo, array('videoId' => $base['id'], 'pubId' => $publisherId, 'playerId' => $experienceID)); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); }
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 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 calcula() { //soundcloud va a base de https, por lo que si alguna url http consigue llegar, toca pasarla a https $this->web = strtr($this->web, array("http://" => "https://")); $retfull = CargaWebCurl($this->web); $obtenido = array('enlaces' => array()); //<img class="waveform" src="http://w1.sndcdn.com/9y15N1tRAubf_m.png" unselectable="on" /> //detectar si hay varios enlaces o solo uno $canciones = substr_count($retfull, '<img class="waveform"'); //dbug('total canciones='.$canciones); $imagen = 'http://www.' . DOMINIO . '/canales/soundcloud.png'; //no sabemos cuantas queremos, pero es del modo nuevo y posiblemente varias. if (enString($retfull, "Next SoundCloud") || true) { dbug('Next SoundCloud'); $client_id = 'b45b1aa10f1ac2941910a7f0d10f8e28'; /* Lista de ids de clientes: Plug.dj => bd7fb07288b526f6f190bfd02b31b25e */ $carga = CargaWebCurl('https://api.sndcdn.com/resolve?url=' . $this->web . '&_status_code_map[302]=200&_status_format=json&client_id=' . $client_id, '', 0, '', array(), false); dbug_($carga); if (enString($carga, 'tracks/')) { //una cancion dbug('Una canción'); //Descargar la web para comprobar título y si tiene descarga gratis $carga = CargaWebCurl(entre1y2($carga, '"location":"', '"')); //comprobar si es stremeable. Si no lo es, fin del programa if (enString($carga, '<streamable type="boolean">false')) { setErrorWebIntera('La descarga de esta canción está bloqueada.'); return; } preg_match('#tracks/([0-9]+)#', $carga, $match); $uri = $match[1]; dbug($uri); $url = 'http://api.soundcloud.com/tracks/' . $uri . '/stream?client_id=' . $client_id; //titulo $titulo = entre1y2($this->web_descargada, '<title>', '</'); if (enString($carga, "<artwork-url>")) { $imagen = entre1y2($carga, '<artwork-url>', '</'); } if (enString($carga, '<downloadable type="boolean">true') || enString($carga, '"downloadable":true')) { $url = 'http://api.soundcloud.com/tracks/' . $uri . '/download?client_id=' . $client_id; } array_push($obtenido['enlaces'], array('url' => $url, 'tipo' => 'http', 'extension' => 'mp3')); dbug($titulo . ' - ' . $url); } else { //varias canciones dbug('Varias canciones'); //titulo generico $titulo = "SoundCloud"; //recortar web para sacar solo la id del user $f = strpos($this->web, '/', 8); $f2 = strpos($this->web, '/', $f + 1); if ($f2 > 0) { $webMod = substr($this->web, 0, $f2); } else { $webMod = $this->web; } //https://api.sndcdn.com/resolve?url=https%3A//soundcloud.com/forestrf&_status_code_map[302]=200&_status_format=json&client_id=b45b1aa10f1ac2941910a7f0d10f8e28 $id = CargaWebCurl('https://api.sndcdn.com/resolve?url=' . $webMod . '&_status_code_map[200]=200&_status_format=json&client_id=' . $client_id); dbug('user info=' . $id); $p = strpos($id, '<id'); $p = strposF($id, '>', $p); $f = strpos($id, '<', $p); $id = substr($id, $p, $f - $p); if (enString($id, '"')) { $id = entre1y2($id, '"id":', ','); } dbug('id=' . $id); $stack = 500; $maxResTotal = 500; //likes //favorites //sounds //sets //playlists if (enString($this->web, 'sets') || enString($this->web, 'playlists')) { $id = CargaWebCurl('https://api.soundcloud.com/resolve?url=' . $this->web . '&_status_code_map[200]=200&_status_format=json&client_id=' . $client_id, "", 0, "", array(), false); $p = strposF($id, 'playlists/'); $f = strpos($id, '?', $p); $id = substr($id, $p, $f - $p); $tipoUrl = 2; } elseif (enString($this->web, 'likes') || enString($this->web, 'favorites')) { $tipoUrl = 0; } else { $tipoUrl = 1; } $mult = 0; $acabado = false; while (!$acabado && $stack * $mult <= $maxResTotal) { $resResD = $stack * $mult; if ($tipoUrl == 0) { $carga = CargaWebCurl('http://api.soundcloud.com/users/' . $id . '/favorites.json?limit=' . $stack . '&offset=' . $resResD . '&client_id=' . $client_id); } elseif ($tipoUrl == 1) { $carga = CargaWebCurl('http://api.soundcloud.com/users/' . $id . '/tracks.json?limit=' . $stack . '&offset=' . $resResD . '&client_id=' . $client_id); } elseif ($tipoUrl == 2) { $carga = CargaWebCurl('http://api.soundcloud.com/playlists/' . $id . '.json?limit=' . $stack . '&offset=' . $resResD . '&client_id=' . $client_id); } if (enString($carga, '[{')) { dbug('mult => ' . $mult); $ronda = $ult = 0; $carga = entre1y2($carga, '[{', '}]'); while (strpos($carga, 'kind":"track"', $ult) > 0 && $ronda < $stack) { $ult = strpos($carga, 'kind":"track"', $ult); if (entre1y2_a($carga, $ult, '"downloadable":', ',') == "true") { $modoUrl = "download"; } else { $modoUrl = "stream"; } $tit = jsonRemoveUnicodeSequences(entre1y2_a($carga, $ult, '"title":"', '"')); $p = strpos($carga, '"uri":"', $ult); $p = strposF($carga, 'tracks/', $p); $f = strpos($carga, '"', $p); $f2 = strpos($carga, '/', $p); if ($f > $f2) { $f = $f2; } $url = 'http://api.soundcloud.com/tracks/' . substr($carga, $p, $f - $p) . '/' . $modoUrl . '?client_id=' . $client_id; dbug($tit . ' - ' . $url); //dbug($ult); array_push($obtenido['enlaces'], array('url' => $url, 'tipo' => 'http', 'extension' => 'mp3', 'url_txt' => $tit)); $ronda++; $ult++; } if ($ronda == $stack) { $mult++; } else { $acabado = true; } } else { $acabado = true; } } } } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido, false); }
function calcula() { $xml_ret = ''; $domain = entre1y2($this->web, 0, strpos($this->web, '/', 7)); //video premium if (enString($this->web_descargada, '<div class="premium">')) { setErrorWebIntera('premium'); return; } //varios vídeos a la vez if (enString($this->web_descargada, '<div class="grid_12 carruContentDoble">')) { setErrorWebIntera('full'); return; } $imagen = ''; $descripcion = ''; $obtenido = array('enlaces' => array()); //http://www.antena3.com/chapterxml//5/5271378/2012/02/16/00005.xml //http://www.antena3.com/videoxml/2/1324/1003569/1003570/2012/02/15/00044.xml //http://www.antena3.com/.../....xml if (enString($this->web_descargada, "xml='")) { dbug("xml=' encontrado"); if (enString($this->web_descargada, 'mod_galeria_videos')) { dbug('varios vídeos: mod_galeria_videos'); $titulo = 'Grupo de vídeos de Antena 3'; $imagen = 'http://www.' . DOMINIO . '/canales/a3.png'; $extracto = entre1y2($this->web_descargada, 'mod_galeria_videos', 'Video Siguiente'); $ult = 0; while (enString($extracto, "xml='", $ult)) { $p = strposF($extracto, "xml='", $ult); $ult = strpos($extracto, "'", $p); $xml = $domain . substr($extracto, $p, $ult - $p); exit; foreach ($this->parseaXMLNormal($xml, $xml_ret, 'multi') as $individual) { $obtenido['enlaces'][] = $individual; } } } else { $xml = $domain . entre1y2($this->web_descargada, "xml='", "'"); foreach ($this->parseaXMLNormal($xml, $xml_ret) as $individual) { $obtenido['enlaces'][] = $individual; } } } elseif (enString($this->web_descargada, 'modulo_central')) { dbug('módulo central'); $p = strpos($this->web_descargada, 'modulo_central'); $xml = $domain . '/' . entre1y2_a($this->web_descargada, $p, "player_capitulo.xml='", '.xml'); //devuelve sin / foreach ($this->parseaXMLNormal($xml, $xml_ret) as $individual) { $obtenido['enlaces'][] = $individual; } } elseif (enString($this->web_descargada, 'http://www.antena3.com/videosnuevosxml')) { preg_match_all('@http://www.antena3.com/videosnuevosxml[^ ^" ^\']*@', $this->web_descargada, $matches); $videos = $matches[0]; $videos_cargados = array(); foreach ($videos as $xml) { if (in_array($xml, $videos_cargados)) { continue; } //$xml = strtr($xml, array('videosnuevosxml' => 'videoxml')); $obtenido['enlaces'][] = $this->parseaXMLNuevo($xml, $imagen, $descripcion); $videos_cargados[] = $xml; } $titulo = entre1y2($this->web_descargada, '<title>', '<'); if (!isset($imagen) || !enString($imagen, '.jpg')) { $imagen = $domain . '/clipping/' . entre1y2($this->web_descargada, '/clipping/', '.jpg') . '.jpg'; $imagen = substr($imagen, 0, strrposF($imagen, '/')) . '45.jpg'; } } elseif (enString($this->web_descargada, 'playContainer')) { dbug('playContainer'); if (enString($this->web_descargada, '.xml=')) { dbug('modo 1'); $p = strpos($this->web_descargada, 'playContainer'); $xml = $domain . '/' . entre1y2_a($this->web_descargada, $p, ".xml='", '.xml'); //devuelve sin / foreach ($this->parseaXMLNormal($xml, $xml_ret) as $individual) { $obtenido['enlaces'][] = $individual; } } elseif (enString($this->web_descargada, 'name="videoDataUrl" value="')) { dbug('modo 2'); $xml = entre1y2($this->web_descargada, 'name="videoDataUrl" value="', '"'); $obtenido['enlaces'][] = $this->parseaXMLNuevo($xml, $imagen, $descripcion); $titulo = entre1y2($this->web_descargada, '<title>', '<'); if (!isset($imagen) || !enString($imagen, '.jpg')) { $imagen = $domain . '/clipping/' . entre1y2($this->web_descargada, '/clipping/', '.jpg') . '.jpg'; $imagen = substr($imagen, 0, strrposF($imagen, '/')) . '45.jpg'; } } } elseif (enString($this->web_descargada, '.addVariable("xml"')) { dbug('.addVariable("xml"'); $xml = $domain . entre1y2($this->web_descargada, '.addVariable("xml","', '"'); foreach ($this->parseaXMLNormal($xml, $xml_ret) as $individual) { $obtenido['enlaces'][] = $individual; } } if (!isset($titulo) || !isset($imagen)) { dbug('xml=' . $xml); //$retfull=CargaWebCurl($xml); //titulo if (!isset($titulo)) { if (enString($xml_ret, '<nombre><![CDATA[')) { $titulo = entre1y2($xml_ret, '<nombre><![CDATA[', ']'); } else { $titulo = entre1y2($xml_ret, '<title>', '<'); } $titulo = limpiaTitulo($titulo); } dbug('titulo=' . $titulo); if (!isset($imagen) || !isset($imagen[0])) { dbug('buscar imagen.'); //imagen //<archivoMultimediaMaxi><archivo>clipping/2012/02/08/00127/30.jpg</archivo><alt></alt></archivoMultimediaMaxi> $p = strpos($xml_ret, 'archivoMultimediaMaxi'); $imagen = entre1y2_a($xml_ret, $p, 'A[', ']'); if (strpos($imagen, 'http') !== 0) { $imagen = $domain . '/' . $imagen; } } dbug('imagen=' . $imagen); } if ($descripcion !== '') { $obtenido['descripcion'] = $descripcion; } $titulo = strtr($titulo, array(' - ANTENA 3 TV' => '', 'ANTENA 3 TV.' => '')); $titulo = limpiaTitulo($titulo); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido); }
function resuelveIDMetodo2($id, &$enlaces_array, &$titulo, &$imagen, $ignoraCaducados = false) { //http://www.tv3.cat/pvideo/FLV_bbd_media.jsp?ID=4048670&QUALITY=H&FORMAT=MP4 $server2 = 'http://www.tv3.cat/pvideo/FLV_bbd_dadesItem.jsp?idint=' . $id; dbug('server2=' . $server2); $ret = CargaWebCurl($server2); dbug('obtenido=' . $ret); if (enString($ret, '<title>')) { //rectificar titulo dbug('rectificar titulo'); //<h1>Amb Fidel, passi el que passi</h1> $titulo = entre1y2($ret, '<title>', '</'); $titulo = utf8_encode($titulo); $titulo = limpiaTitulo($titulo); dbug('nuevo titulo=' . $titulo); } //<format>MP4GES</format> //PARA VIDEOS LIMITADOS //http://www.tv3.cat/pvideo/FLV_bbd_media.jsp?ID=3932951&QUALITY=H&FORMAT=MP4GES if (enString($ret, '<imgsrc>') && !isset($imagen)) { $p = strrposF($ret, '<imgsrc>'); $f = strrpos($ret, '</imgsrc>', $p); $imagen = substr($ret, $p, $f - $p); } $formato = 'MP4'; if (enString($ret, '<format>')) { //ENCUENTRA EL PRIMERO EN LA LISTA; NO EL MEJOR dbug('formato encontrado'); $p = strrposF($ret, '<format>'); $f = strrpos($ret, '</format>', $p); $formato = substr($ret, $p, $f - $p); } $server3 = 'http://www.tv3.cat/pvideo/FLV_bbd_media.jsp?' . 'ID=' . $id . '&QUALITY=H&FORMAT=' . $formato; dbug('server3=' . $server3); $server4 = 'http://www.tv3.cat/pvideo/FLV_bbd_media.jsp?' . 'ID=' . $id . '&QUALITY=H&PROFILE=APPMOB&FORMAT=' . $formato; dbug('server4=' . $server4); $ret = CargaWebCurl($server4); dbug('obtenido='); dbug_($ret); if (enString($ret, 'err.service.expired')) { if (!$ignoraCaducados) { setErrorWebIntera('El vídeo fue borrado de TV3'); } return; } elseif (enString($ret, '<media')) { //a sacer el video. si falla la busqueda, entonces hay un error //<media videoname="La Costa Brava en caiac/Thalassa/13042012/BB_THALASS"> //http://mp4-medium-dwn.media.tv3.cat/g/tvcatalunya/0/2/1394113435120.mp4 //</media> $p = strrpos($ret, '<media'); $ret = entre1y2_a($ret, $p, '>', '<'); if (enString($ret, 'mp4:') || enString($ret, 'http://')) { dbug('urlFinal=' . $ret); if (strpos($ret, 'rtmp://') === 0) { $ret = preg_replace('@rtmp://.*?mp4:(.*?)$@', 'http://mp4-medium-dwn.media.tv3.cat/$1', $ret); dbug('urlFinal (mediante preg replace=' . $ret); } $enlaces_array[] = array('titulo' => 'Calidad media', 'url' => $ret, 'tipo' => 'http'); } } $ret = CargaWebCurl($server3); dbug('obtenido='); dbug_($ret); if (enString($ret, '<media')) { //http://www.tv3.cat/feeds/videos/fitxaVideo.jsp?id=4874451&device=and-h&format=xml&version=1 //a sacer el video. si falla la busqueda, entonces hay un error //<media videoname="La Costa Brava en caiac/Thalassa/13042012/BB_THALASS"> //rtmp://mp4-500-str.tv3.cat/ondemand/mp4:g/tvcatalunya/2/2/1334322726322.mp4 //</media> $p = strrpos($ret, '<media'); $ret = entre1y2_a($ret, $p, '>', '<'); if (enString($ret, 'mp4:')) { preg_match('@^(.*?/)(mp4:.*?)$@', $ret, $matches); dbug_r($matches); // 4/09/2012 metodo rectificado dbug('urlFinal=' . $ret); $enlaces_array[] = array('titulo' => 'Calidad alta', 'url' => $ret, 'rtmpdump' => '-r "' . $matches[1] . '" -y "' . $matches[2] . '" -o "' . generaNombreWindowsValido($titulo) . '.mp4"', 'tipo' => 'rtmpConcreto', 'extension' => 'mp4'); } else { // 2/06/2014 dbug('urlFinal=' . $ret); $ext = substr($ret, -3, 3); $enlaces_array[] = array('url' => $ret, 'rtmpdump' => '-r "' . $ret . '" -o "' . generaNombreWindowsValido($titulo) . '.' . $ext . '"', 'tipo' => 'rtmpConcreto', 'extension' => '.' . $ext); } } }
function calcula() { /* http://www.mundofox.com/videos/quien-mato-patricia-soler-22664 https://player.ooyala.com/tframe.html?embedCode=FmZmowczoxwPru9zkOwKFWvZNW_K6JEH&amp;pbid=81a5821a635845fb8f8a1368a9b402e9#sthash.NnkiKZi8.dpuf <script type="text/javascript" src="//player.ooyala.com/v3/81a5821a635845fb8f8a1368a9b402e9?tweaks=android-enable-hls"></script> http://player.ooyala.com/v3/81a5821a635845fb8f8a1368a9b402e9?tweaks=android-enable-hls OO.ready(function() { OO.Player.create('ooyalaplayer', 'FmZmowczoxwPru9zkOwKFWvZNW_K6JEH'); }); "pcode":"NzYTAyOn6FTBAa0fo4wFfZoRHubJ" http://player.ooyala.com/player_api/v1/metadata/embed_code/81a5821a635845fb8f8a1368a9b402e9/FmZmowczoxwPru9zkOwKFWvZNW_K6JEH?videoPcode=NzYTAyOn6FTBAa0fo4wFfZoRHubJ& http://player.ooyala.com/info/primary/ respuesta: Vhor0n+Xh0BdBhI8INdUxJNndoWEZ5zeDYXPKxCfyCAY+/WCAU9AcfZYdiSUD+3sLZ0LnZVK2cqr5MFQv/7EfsxyC+kw1R+s9HhpuzMVDJ6YOKDcwNA4VSgs8JV7Ke9Nph6jjOOykyngC092EmUuS6c7ByJFCL369xt+23hrpNLzZsmmFrnagF0cDZlQsvo2xhOln6A25C8P0UqZMPx6rsflbKp2gGuOVU8WiBvk9DaplKfbTNxHSD4JWlFYMm1ZwEtIEFxOsLKfSK+fNNDvf8W0jHG3uPo4uYfV/1Jqc24vKlWC/dcmzy8Z/5SHSRKdpAUQT9Ea2aibNGzORFi4OLLsceN9sHkfhqhu/OIDIsSwxQpz38vLFA== http://player.ooyala.com/nuplayer?embedCode=FmZmowczoxwPru9zkOwKFWvZNW_K6JEH&playerBrandingId=81a5821a635845fb8f8a1368a9b402e9 respuesta: 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 z3sPNVelOaB0O8ugPt9f http://player.ooyala.com/sas/authorized?analytics_params=%7B%22pcode%22%3A%22NzYTAyOn6FTBAa0fo4wFfZoRHubJ%22%7D&device=WIN%2016%2C0%2C0%2C305&domain=www.mundofox.com&embed_code_list=FmZmowczoxwPru9zkOwKFWvZNW_K6JEH&parent_authorized=true&playerType=full&signature=dMPkmR3luQfoR1vpnXrIra3D04gA8AznaIKxrVTbSno×tamp=1423361297617&token=AA-oI9kU1Dvf-0054d6c4d5-5xYuEbIJG1MKilRIiAxoWX.gksb9QkZhCUNEXxGs.04 respuesta: Zz6FR1Eq4YsJ4/hhMwTUqqZ/Ej4Z4vTeBS1Qp8AjLl6NEu5qkvHA97oiEPdR 8mGqNnneG5482VecYCob11IZQyTFDrHNTx6gM65fdZ36wg0RXNNVJpWxzZhQ ltFkBJW97gctNsp5m39ek10O3n148dScXzRz/lICStrwCdaVRXTTK2KX9Nch JtW+a+nRDoLQ1TomcsZJp5d5W6i3By60YyI6JzzrmBrfrxjSXQMEo6dwWbPF OYbZZ2KxNC4+0gXrlxEgNzjIsaKIlVnyKPMDKa6l5J46fy8bZHo5NjK2zgI3 The0IXK36fPL4/WkEQ8csU0JPSmOTZ9AVHWEtNXiL+siy7fqijBHQYi3kAZ8 6PkFDwDIh5kb5oLLZmxh/F+jn2c3reNm0ndpPgrMZf4fXuiPvcLLQR5ddCdt qVF8syD0YSEcLo1SYqd2DBdZeCQ6Zw4Q2oO9W5NEnGWhjwymhhnxweLmsMe5 jnMMm+02p83enLJLa5LXbxBHOc8zVXsc+t9OgtLSUEYmKJ3T18WTn/V/px9/ ToB+hG20u5Sj9dhOM07uoDy2VLVUs1fDM+q2uClCfiICZe91M9H36IF98ly6 6x3vDStgADKhv0xBP85nxf5RRNBD/wp/pYSIykYwMrEDJIYyYXOM5ZoYr/hJ aWtLpQ5FwClHy4Us9NVNdMqFgPW7VjcCIe2H6xpt2KIL6jMK222NY6u4y/JZ 37jJXlEoipfvrNiF/QQ9773demFMacC9GLX5S5W0CrM5k12tg4qfGdEACB0P WRosfMzJsg== Referer: http://player.ooyala.com/static/cacheable/947272d312bbb31971ab9ee0b28b5a1f/player_v2.swf?player=81a5821a635845fb8f8a1368a9b402e9 http://player.vimeo.com/external/117856376.hd.mp4?s=8c4b9b0d62db18eb3f0338b2b3963e43 http://pdl.vimeocdn.com/96029/918/329902523.mp4?token2=1423375948_2fde98bab4d75f510ef74a6c2616aaf4&aksessionid=72878d8fc8ad2a274ca033ecb04904639c6912c41423361548 http://player.ooyala.com/player.swf?player=81a5821a635845fb8f8a1368a9b402e9 http://player.ooyala.com/static/cacheable/947272d312bbb31971ab9ee0b28b5a1f/player_v2.swf?player=81a5821a635845fb8f8a1368a9b402e9 */ //Código if (preg_match('#OO\\.ready\\(function\\(\\).*?\'ooyalaplayer\'.*?\'(.+?)\'#', $this->web_descargada, $matches)) { dbug_r($matches); $embedCode = $matches[1]; } elseif (preg_match('#OO\\.Player\\.create\\(\'.+?\',\'(.+?)\'#', $this->web_descargada, $matches)) { dbug_r($matches); $embedCode = $matches[1]; } else { setErrorWebIntera('No se pudo encontrar algún vídeo.'); return; } $embedCode = trim($embedCode); if (preg_match('#player.ooyala.com/v3/(.+?)["\'\\?]#', $this->web_descargada, $matches)) { dbug_r($matches); $playerBrandingId = $matches[1]; } else { setErrorWebIntera('No se pudo encontrar algún vídeo.'); return; } $url = 'http://player.ooyala.com/nuplayer?autoplay=1&hide=all&embedCode=' . $embedCode; //$url = 'http://player.ooyala.com/nuplayer?embedCode='.$embedCode.'&playerBrandingId='.$playerBrandingId; $txt = CargaWebCurl($url); dbug_($txt); $res = ooyala_decrypt($txt); dbug_($res); $titulo = entre1y2($res, '<title>', '</'); if (enString($res, 'previewImages')) { $imagen = entre1y2_a($res, 'previewImages', '<url>', '</'); } else { preg_match('#<promo>.*:([a-zA-Z0-9]+?)<#', $res, $matches); dbug_r($matches); $imagen = entre1y2($res, '<shelfDomain>', '<') . '/' . $embedCode . '/' . $matches[1]; } $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array()); if (enString($res, '<flv_url>')) { $url = entre1y2($res, '<flv_url>', '</flv_url>'); $obtenido['enlaces'][] = array('url' => $url, 'url_txt' => 'Descargar', 'tipo' => 'http'); } else { $pcode = entre1y2($res, '<pcode>', '</pcode>'); $url = 'http://player.ooyala.com/sas/player_api/v1/authorization/embed_code/' . $pcode . '/' . $embedCode . '?device=android-html5&domain=www.mundofox.com&supportedFormats=m3u8,mp4&profiles=&_=1407599471980'; $txt = CargaWebCurlProxy($url, 'MX'); dbug_($txt); $data = entre1y2($txt, '"data":"', '"'); $m3u8 = base64_decode($data); //m3u8 downloade tiene un bug. Darle directamente el m3u8 que queremos $m3u8 = CargaWebCurl($m3u8); dbug_($m3u8); preg_match('#http[^\\r^\\n]*#', $m3u8, $matches); dbug_r($matches); $m3u8 = $matches[0]; $obtenido['enlaces'][] = array('url' => $m3u8, 'nombre_archivo' => generaNombreWindowsValido($titulo) . '.mp4', 'tipo' => 'm3u8'); } /* } else if (enString($res, '<httpDynamicStreamUrl>')) { $f4m = entre1y2($res, '<httpDynamicStreamUrl>', '</httpDynamicStreamUrl>'); $obtenido['enlaces'][] = array( 'url' => $f4m, 'nombre_archivo' => generaNombreWindowsValido($titulo) . '.mp4', 'tipo' => 'f4m' ); } */ finalCadena($obtenido); }
function calcula() { $obtenido = array('enlaces' => array()); if (enString($this->web_descargada, '<param name="publisherID"')) { $publisherId = entre1y2($this->web_descargada, '<param name="publisherID" value="', '"'); } if (!isset($publisherId)) { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } if (enString($this->web_descargada, '<param name="@videoPlayer"')) { $contentId = entre1y2($this->web_descargada, '<param name="@videoPlayer" value="', '"'); } if (!isset($contentId)) { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } if (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('$publisherId -> ' . $publisherId); dbug('$contentId -> ' . $contentId); dbug('experienceID = playerId -> ' . $experienceID); $messagebroker = 'http://c.brightcove.com/services/messagebroker/amf?playerId=' . $experienceID; include 'brightcove-funciones.php'; /* $lol="AAMAAAABAEZjb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkV4cGVyaWVuY2VSdW50aW1lRmFjYWRlLmdldERhdGFGb3JFeHBlcmllbmNlAAIvMQAAAcsKAAAAAgIAKDBhMGVmYTdhMTBjMTg2M2IyZjk5MmE2MGQ3MjJiYTlkNDExMzg4NGQRCmNjY29tLmJyaWdodGNvdmUuZXhwZXJpZW5jZS5WaWV3ZXJFeHBlcmllbmNlUmVxdWVzdCFjb250ZW50T3ZlcnJpZGVzE3BsYXllcktleRFUVExUb2tlbhlkZWxpdmVyeVR5cGUHVVJMGWV4cGVyaWVuY2VJZAkDAQqBA1Njb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkNvbnRlbnRPdmVycmlkZRtmZWF0dXJlZFJlZklkFWNvbnRlbnRJZHMZY29udGVudFJlZklkF2NvbnRlbnRUeXBlDXRhcmdldBtjb250ZW50UmVmSWRzFWZlYXR1cmVkSWQTY29udGVudElkAQEBBAAGF3ZpZGVvUGxheWVyAQV/////4AAAAAVChKrndlYIAAYBBgEFf////+AAAAAGgTVodHRwOi8vd3d3LnRlbGVtYWRyaWQuZXMvcHJvZ3JhbWFzL21hZHJpbGVub3MtcG9yLWVsLW11bmRvL21hZHJpbGVub3MtcG9yLWVsLW11bmRvLXNpY2lsaWEFQjoHC+3hAAA="; print_r(brightcove_decode(base64_decode($lol))); */ $a_encodear = array('target' => 'com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience', 'response' => '/1', 'data' => array('0' => '0a0efa7a10c1863b2f992a60d722ba9d4113884d', '1' => new SabreAMF_AMF3_Wrapper(new SabreAMF_TypedObject('com.brightcove.experience.ViewerExperienceRequest', array('contentOverrides' => array(new SabreAMF_TypedObject('com.brightcove.experience.ContentOverride', array('featuredRefId' => null, 'contentIds' => null, 'contentRefId' => null, 'contentType' => 0, 'target' => 'videoPlayer', 'contentRefIds' => null, 'featuredId' => NAN, 'contentId' => $contentId))), 'playerKey' => null, 'TTLToken' => null, 'deliveryType' => NAN, 'URL' => $this->web, 'experienceId' => $experienceID))))); $post = brightcove_encode($a_encodear); /* dbug(base64_encode($post)); $t = 'AAMAAAABAEZjb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkV4cGVyaWVuY2VSdW50aW1lRmFjYWRlLmdldERhdGFGb3JFeHBlcmllbmNlAAIvMQAAAa8KAAAAAgIAKDBhMGVmYTdhMTBjMTg2M2IyZjk5MmE2MGQ3MjJiYTlkNDExMzg4NGQRCmNjY29tLmJyaWdodGNvdmUuZXhwZXJpZW5jZS5WaWV3ZXJFeHBlcmllbmNlUmVxdWVzdCFjb250ZW50T3ZlcnJpZGVzEVRUTFRva2VuGWRlbGl2ZXJ5VHlwZRNwbGF5ZXJLZXkHVVJMGWV4cGVyaWVuY2VJZAkDAQqBA1Njb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkNvbnRlbnRPdmVycmlkZRtjb250ZW50UmVmSWRzF2NvbnRlbnRUeXBlFWZlYXR1cmVkSWQTY29udGVudElkDXRhcmdldBtmZWF0dXJlZFJlZklkFWNvbnRlbnRJZHMZY29udGVudFJlZklkAQQABX/////gAAAABUKMGgqQeggABhd2aWRlb1BsYXllcgEBAQYBBX/////gAAAABgEGf2h0dHA6Ly93d3cudGVsZW1hZHJpZC5lcy9wcm9ncmFtYXMvcnV0YS0xNzkvcnV0YS0xNzktbGEtY2FicmVyYQVCOgcL7eEAAA=='; dbug_($t); $t = base64_decode($t); $t = brightcove_decode($t); //dbug_r($t); $t = brightcove_encode($t); dbug(base64_encode($t)); $t = brightcove_decode($t); dbug_r($t); exit; */ dbug('a descargar: ' . $messagebroker); $t = brightcove_curl_web($messagebroker, $post); dbug_($t); $res_decoded = brightcove_decode($t); dbug('PRIMERA RESPUESTA BRIGHTCOVE (enlaces de vídeos aquí):'); dbug_r($res_decoded); $base = $res_decoded['data']->getAMFData(); $publisherId = $base['publisherId']; $base2 = $base['programmedContent']['videoPlayer']->getAMFData(); $base3 = $base2['mediaDTO']->getAMFData(); $titulo = $base3['shortDescription']; $titulo = limpiaTitulo($titulo); $imagen = $base3['videoStillURL']; dbug('titulo = ' . $titulo); dbug('imagen = ' . $imagen); $mediaId = $base2['mediaId']; dbug('mediaId = ' . $mediaId); dbug('renditions'); $renditions = $base3['renditions']; $t = $renditions[0]->getAMFData(); if (enString($t['defaultURL'], '/hd/')) { // Modo url larga //http://telemadrid-f.akamaihd.net/hd/104403117001/201312/104403117001_2893,100922,090935,103695,001_6760d109-240a-432a-a857-f4434542ea55.mp4.csmil/bitrate=2?videoId=2892867548001&pubId=104403117001&playerId=111787372001&lineUpId=&affiliateId=&bandwidthEstimationTest=true&v=&fp=&r=&g= $finalURL = '.csmil/bitrate=2?videoId=' . $mediaId . '&pubId=' . $publisherId . '&playerId=' . $experienceID . '&v=&fp=&r=&g='; $aPartir = array(); $URLBase = ''; dbug('renditions'); $renditions = $base3['renditions']; for ($i = 0, $i_t = count($renditions); $i < $i_t; $i++) { $temp = $renditions[$i]->getAMFData(); $URLBase =& $temp['defaultURL']; $inicio = strposF($URLBase, '_'); $final = strpos($URLBase, '_', $inicio); $n1 = substr($URLBase, $inicio, 5); $n2 = substr($URLBase, $inicio + 5, 5); $n3 = substr($URLBase, $inicio + 10, 3); $aPartir[] = substr($URLBase, $inicio, $final - $inicio); } dbug_r($aPartir); dbug('$URLBase => ' . $URLBase); $principio = substr($URLBase, 0, $inicio); $inicio2 = strpos($URLBase, '_', $inicio); $final = substr($URLBase, $inicio2); dbug('$principio => ' . $principio); dbug('$final => ' . $final); dbug('$finalURL => ' . $finalURL); //Se supone que todos son igual de largos. Los número separados por comas se formar a partir de el inicio común de todos como primer número, el final común como último número, y los intermedios son lo que cambia. /* Las siguientes son todas URL válidas: http://telemadridhdhd-f.akamaihd.net/hd/104403117001/104403117001_28405,62175,77044,77622,001_e9b9daed-e008-470c-b1d4-6463de1bb823.mp4.csmil/bitrate=2?videoId=2840532536001&lineUpId=&pubId=104403117001&playerId=111787372001&affiliateId=&bandwidthEstimationTest=true&v=3.1.0&fp=WIN%2011,9,900,170&r=PBMXA&g=DBNLQTFOYOHN http://telemadridhdhd-f.akamaihd.net/hd/104403117001/104403117001_284,05621750,05770440,05776220,01_e9b9daed-e008-470c-b1d4-6463de1bb823.mp4.csmil/bitrate=2?videoId=2840532536001&lineUpId=&pubId=104403117001&playerId=111787372001&affiliateId=&bandwidthEstimationTest=true&v=3.1.0&fp=WIN%2011,9,900,170&r=PBMXA&g=DBNLQTFOYOHN http://telemadridhdhd-f.akamaihd.net/hd/104403117001/104403117001_,2840562175001,2840577044001,2840577622001,_e9b9daed-e008-470c-b1d4-6463de1bb823.mp4.csmil/bitrate=2?videoId=2840532536001&lineUpId=&pubId=104403117001&playerId=111787372001&affiliateId=&bandwidthEstimationTest=true&v=3.1.0&fp=WIN%2011,9,900,170&r=PBMXA&g=DBNLQTFOYOHN */ $obtenido['enlaces'] = array(array('url_txt' => 'Descargar', 'url' => $principio . ',' . implode(',', $aPartir) . ',' . $final . $finalURL, 'tipo' => 'http', 'extension' => 'mp4')); } else { $url = array('', 0); for ($i = 0, $i_t = count($renditions); $i < $i_t; $i++) { $temp = $renditions[$i]->getAMFData(); if ($url[1] < $temp['encodingRate']) { $url[0] = $temp['defaultURL']; $url[1] = $temp['encodingRate']; } } dbug('$url => ' . $url[0]); /* rtmpdump -r "rtmp://telemadrid2-bc-od-flashfs.fplive.net:1935/telemadrid2-bc-od-flash?videoId=3712633770001&lineUpId=&pubId=104403117001&playerId=111787372001&affiliateId=" -a "telemadrid2-bc-od-flash?videoId=3712633770001&lineUpId=&pubId=104403117001&playerId=111787372001&affiliateId=" -f "WIN 14,0,0,145" -W "http://admin.brightcove.com/viewer/us20140807.1543/federatedVideoUI/BrightcovePlayer.swf?uid=1407518049436" -p "http://www.telemadrid.es/programas/aqui-en-madrid/aqui-en-madrid-04082014" -y "mp4:rtmp_uds/104403117001/201408/951/104403117001_3712803353001_d721fb63-a0b2-4ec6-a3cf-85641c726e34.mp4?videoId=3712633770001&lineUpId=&pubId=104403117001&playerId=111787372001&affiliateId=" -o 104403117001_371280335 3001_d721fb63-a0b2-4ec6-a3cf-85641c726e34.flv */ /* $dominio = entre1y2($url[0], 'http://','/'); dbug($dominio); //$url[0] = strtr($url[0], array($dominio => 'brightcove04.o.brightcove.com')); */ $andpos = strpos($url[0], '&'); $end = '?videoId=' . $mediaId . '&lineUpId=&pubId=' . $publisherId . '&playerId=' . $experienceID . '&affiliateId='; $r = substr($url[0], 0, $andpos); if ($r[strlen($r) - 1] === '/') { $r = substr($r, 0, strlen($r) - 1); } $obtenido['enlaces'] = array(array('url' => '-', 'rtmpdump' => '-r "' . $r . $end . '" ' . '-y "' . substr($url[0], $andpos + 1) . $end . '"', 'nombre_archivo' => generaNombreWindowsValido($titulo) . '.mp4', 'tipo' => 'rtmpConcreto', 'extension' => 'mp4')); } $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 convierteID($asset, $modo = array('video', 'audio')) { $ret = ""; $modo_length = count($modo); for ($i = 0; $i < $modo_length && $ret == ''; $i++) { $codificado = $asset . '_banebdyede_' . $modo[$i] . '_es'; $codificado = self::encripta($codificado); $server5 = 'http://ztnr.rtve.es/ztnr/res/' . $codificado; dbug('idasset web=' . $server5); $ret = CargaWebCurl($server5); $ret = self::desencripta($ret); dbug_($ret); if (preg_match_all('@http://[^<^>]*?\\.(?:mp4|flv|mp3)[^<^>]*@', $ret, $m)) { dbug_r($m); foreach ($m[0] as $i) { dbug('Opcion (1): ' . $i); if (!enString($i, '1100000000000') && !enString($i, 'l3-onlinefs.rtve.es')) { $ret = $this->quita_geobloqueo($i); dbug('Opcion elejida: ' . $i); break; } } dbug('Opcion final: ' . $ret); } if (strpos($ret, 'http') !== 0 && preg_match_all('@http://[^<^>]*?\\.(?:flv)[^<^>]*@', $ret, $m)) { dbug_r($m); foreach ($m[0] as $i) { dbug('Opcion (2): ' . $i); if (!enString($i, '1100000000000')) { $ret = $this->quita_geobloqueo($i); dbug('Opcion elejida: ' . $i); break; } } } if (strpos($ret, 'http') !== 0) { dbug('$ret no es una web'); if (enString($ret, "code='state-not-valid'")) { $ret = ''; dbug('vídeo posíblemente borrado. Marcar error'); setErrorWebIntera('El vídeo ya no está disponible en RTVE. Lo sentimos.'); return false; } elseif (enString($ret, 'video-id-not-valid')) { setErrorWebIntera("No se ha podido encontrar ningún vídeo."); return false; } else { if (enString($ret, 'rtmpe://rtveod.fms.c.footprint.net/rtveod')) { $ret = strtr($ret, array('rtmpe://rtveod.fms.c.footprint.net/rtveod/' => 'http://mvod.lvlt.rtve.es/')); } $ret = 'http://' . entre1y2($ret, 'http://', '<'); $ret = $this->quita_geobloqueo($ret); } } } return $ret; }
function calcula() { $obtenido = array('enlaces' => array()); $imagen = 'http://www.' . DOMINIO . '/canales/goear.png'; //varias canciones (de un usuario) if (enString($this->web_descargada, '<h3>Audios</h3>')) { //titulo generico $titulo = "Goear"; $canciones = substr_count($this->web_descargada, 'id="sound_'); dbug('canciones=' . $canciones); $last = 0; for ($i = 0; $i < $canciones; $i++) { $last = strpos($this->web_descargada, 'id="sound_', $last); $id = entre1y2_a($this->web_descargada, $last, 'id="sound_', '"'); dbug('id ' . $i . '=' . $id); $p = strpos($this->web_descargada, '<a', $last); $tit = entre1y2_a($this->web_descargada, $p, '>', '</a'); $tit = strip_tags($tit); dbug('tit=' . $tit); $mp3 = $this->buscaMP3($id); dbug('mp3=' . $mp3); array_push($obtenido['enlaces'], array('url' => $mp3, 'tipo' => 'http', 'url_txt' => $tit)); $last++; } } elseif (enString($this->web_descargada, "playlistid = '")) { $titulo = entre1y2($this->web_descargada, 'title>', '<'); $titulo = limpiaTitulo($titulo); dbug('título=' . $titulo); $id = entre1y2($this->web_descargada, "playlistid = '", "'"); $xml = CargaWebCurl('http://www.goear.com/elplaylist.php?f=' . $id); $canciones = substr_count($xml, 'title='); dbug('canciones=' . $canciones); $last = 0; for ($i = 0; $i < $canciones; $i++) { $p = strposF($xml, 'path="', $last); $f = strpos($xml, '"', $p); $last = $f + 2; $id = substr($xml, $p, $f - $p); dbug('id ' . $i . '=' . $id); $tit = entre1y2_a($xml, $last, 'title="', '"'); $tit = html_entity_decode($tit); dbug('tit=' . $tit); $mp3 = $this->buscaMP3($id); dbug('mp3=' . $mp3); array_push($obtenido['enlaces'], array('url' => $mp3, 'tipo' => 'http', 'url_txt' => $tit)); } } elseif (enString($this->web_descargada, "soundid = '")) { $titulo = entre1y2($this->web_descargada, 'title>', '<'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); $id = entre1y2($this->web_descargada, "soundid = '", "'"); dbug('id=' . $id); $mp3 = $this->buscaMP3($id); array_push($obtenido['enlaces'], array('url' => $mp3, 'url_txt' => 'Descargar', 'tipo' => 'http')); } else { setErrorWebIntera('No se ha encontrado ninguna canción'); return; } $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; //no comprobar los enlaces finalCadena($obtenido, false); }
function calcula() { // http://www.discoverymax.es/wp-content/plugins/dni_carrington_build_modules/modules/dni-video-playlist/video.php?instanceID=dni-video-playlist-611327198&instance_id=dni-video-playlist-611327198&video_player_id=3570805961001&video_player_key=AQ%7E%7E%2CAAAAAFIw8-k%7E%2CRzpKFESr-2ALjDz9LZTdOIeBssZPLQ5q&autostart=false&playlist= $obtenido = array('enlaces' => array(), 'alerta_especifica' => 'Todos los vídeos indican ocupar 2GB a pesar de no ser real. El tamaño de los vídeos que indica la descarga no es real.'); $p = strpos($this->web_descargada, '<iframe'); //http://c.brightcove.com/services/messagebroker/amf?playerKey=AQ~~,AAAAEUA28vk~,ZZqXLYtFw-ADB2SpeHfBR3cyrCkvIrAe if (enString($this->web_descargada, '<param name="playerKey"')) { $playerKey = entre1y2($this->web_descargada, '<param name="playerKey" value="', '"'); } elseif (enString($this->web_descargada, 'video_player_key=')) { $playerKey = urldecode(entre1y2_a($this->web_descargada, $p, 'video_player_key=', '&')); } else { 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, '<param name="playerID"')) { $experienceID = entre1y2($this->web_descargada, '<param name="playerID" value="', '"'); } elseif (enString($this->web_descargada, 'video_player_id=')) { $experienceID = urldecode(entre1y2_a($this->web_descargada, $p, 'video_player_id=', '&')); } else { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } dbug('experienceID -> ' . $experienceID); if (preg_match('@#([0-9]+?)$@', $this->web, $matches)) { $contentId = $matches[1]; } elseif (enString($this->web_descargada, 'playlist=')) { $contentId = urldecode(entre1y2_a($this->web_descargada, $p, 'playlist=', '"')); } else { setErrorWebIntera('No se ha encontrado ningún vídeo.'); return; } dbug('contentId -> ' . $contentId); include 'brightcove-funciones.php'; $a_encodear = array('target' => 'com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience', 'response' => '/1', 'data' => array('0' => '9445764b9bbb1dcb6ca98bb1b0c00cb2762cd3f8', '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('contentType' => 0, 'featuredId' => NAN, 'contentId' => $contentId, 'featuredRefId' => null, 'contentIds' => null, 'target' => 'videoPlayer', 'contentRefId' => null, 'contentRefIds' => null)))))))); $post = brightcove_encode($a_encodear); // Por culpa de geobloqueo, la llamada la hará un swf en lugar de descargavideos y el js sacará las urls $urlJS = 'function lanzaDiscoveryMax(){ if(typeof DESCARGADOR_ARCHIVOS_SWF === "undefined"){ setTimeout(lanzaDiscoveryMax, 200) } else if(DESCARGADOR_ARCHIVOS_SWF === true){ getFlashMovie("descargador_archivos").CargaWeb({ "url":"' . $messagebroker . '" ,"metodo":"POST" ,"contentType":"application/x-amf" ,"postBase64":"' . base64_encode($post) . '" ,"resp":"base64" }, "procesaDiscoveryMax"); } } function procesaDiscoveryMax(txt){ var x = Base64Binary.decode(txt); var mediaDTO = decodeAMF(x).messages[0].body.programmedContent.videoPlayer.mediaDTO; var titulo = mediaDTO.displayName; var img = mediaDTO.videoStillURL; D.g("imagen_res").src = decode_utf8(img); D.g("titulo_res").innerHTML = decode_utf8(titulo); var res = mediaDTO.renditions[0]; for(var i = 1; i < mediaDTO.renditions.length; i++){ if(mediaDTO.renditions[i].encodingRate > res.encodingRate){ res = mediaDTO.renditions[i]; } } mostrarResultado(res.defaultURL); } function decode_utf8(s) { return decodeURIComponent(escape(s)); } function mostrarResultado(entrada){ finalizar(entrada,"Descargar"); } function mostrarFallo(){ finalizar("","No se ha encontrado ningún resultado"); } if(typeof descargador_archivos === "undefined"){ D.g("enlaces").innerHTML += \'' . genera_swf_object('/util/fla/f/player.swf') . '\'; var descargador_archivos = D.g("descargador_archivos"); } lanzaDiscoveryMax();'; $titulo = ''; $imagen = ''; $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => strtr($urlJS, array("\t" => '', "\r" => '', "\n" => '')), 'tipo' => 'jsFlash'))); /* dbug('a descargar: '.$messagebroker); $t=brightcove_curl_web($messagebroker,$post); echo bin2hex($t); /* $res_decoded=brightcove_decode($t); dbug('RESPUESTA BRIGHTCOVE:'); dbug_r($res_decoded); if($res_decoded['data'] === null){ // Seguro que el vídeo no funciona en la página oficial. setErrorWebIntera('No se puede reproducir el vídeo desde el enlace que ha indicado.'); return; } $base=$res_decoded['data']->getAMFData(); $base=$base['programmedContent']['videoPlayer']->getAMFData(); $base=$base['mediaDTO']->getAMFData(); $titulo=$base['displayName']; $imagen=$base['videoStillURL']; dbug('titulo = '.$titulo); dbug('imagen = '.$imagen); $obtenido['enlaces'] = brightcove_genera_obtenido($this, $base, array( 'IOSRenditions' => 'm3u8', 'renditions' => 'http' ), $titulo); $obtenido['titulo']=$titulo; $obtenido['imagen']=$imagen; */ finalCadena($obtenido, false); }