function calcula() { $titulo = entre1y2($this->web_descargada, '<title>', '<'); dbug('titulo = ' . $titulo); if (preg_match('@http://media.*?\\.mp4@', $this->web_descargada, $matches)) { $imagen = entre1y2_a($this->web_descargada, strposF($this->web_descargada, '"og:image"'), '"', '"'); dbug('imagen = ' . $imagen); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $matches[0], 'tipo' => 'http'))); } else { preg_match('@#player-container \\.player-display.*?url.*?\'(.*?)\'@', $this->web_descargada, $matches); dbug_r($matches); $urlPreM3U8 = 'http://www.netd.com' . $matches[1]; $ret = CargaWebCurl($urlPreM3U8); dbug_($ret); preg_match('@defaultServiceUrl.*?\'(.*?)\'.*?path.*?\'(.*?)\'@', $ret, $matches); dbug_r($matches); $url = $matches[1] . '/' . $matches[2]; dbug('URL = ' . $url); preg_match('@preview.*?\'(.*?)\'@', $ret, $matches); $imagen = 'http:' . $matches[1]; dbug('imagen = ' . $imagen); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'tipo' => 'm3u8'))); } finalCadena($obtenido); }
function calcula() { $obtenido = array('enlaces' => array()); //raido o tv if (enString($this->web_descargada, "#radio")) { $p = strpos($this->web_descargada, 'http://podcastdl.'); $f = strpos($this->web_descargada, '"', $p); $ret = substr($this->web_descargada, $p, $f - $p); dbug('url=' . $ret); array_push($obtenido['enlaces'], array('url' => $ret, 'tipo' => 'http')); $imagen = entre1y2($this->web_descargada, '<div class="imagen"><img src="', '"'); dbug('imagen=' . $imagen); } if (enString($this->web_descargada, "#tv")) { $rtmp = 'rtmp://' . entre1y2($this->web_descargada, 'rtmp://', '"'); if (enString($rtmp, "#")) { $f = strpos($rtmp, '#'); if (enString($rtmp, "#tv")) { $f = strpos($rtmp, '#', $f + 1); } $rtmp = substr($rtmp, 0, $f); } $rtmp = strtr($rtmp, array("#" => "")); dbug('rtmp=' . $rtmp); //if(isiPad) $http = entre1y2($this->web_descargada, 'if(isiPad)', '</script>'); //poster="/sites/default/files/extremaduranoticas_nuevo2.jpg" $imagen = "http://www.canalextremadura.es" . entre1y2($http, 'poster="', '"'); dbug('imagen=' . $imagen); $http = entre1y2($http, 'src="', '"'); array_push($obtenido['enlaces'], array('titulo' => 'Calidad Baja', 'url' => $http, 'tipo' => 'http')); array_push($obtenido['enlaces'], array('titulo' => 'Calidad Alta', 'url' => $rtmp, 'tipo' => 'rtmp')); } if (enString($this->web_descargada, ".mp4#")) { $rtmp = 'rtmp://' . entre1y2($this->web_descargada, 'rtmp://', '.mp4') . '.mp4'; dbug('rtmp=' . $rtmp); //if(isiPad) $http = entre1y2($this->web_descargada, 'data-iosUrl="', '"'); //poster="/sites/default/files/extremaduranoticas_nuevo2.jpg" $imagen = "http://www.canalextremadura.es/" . entre1y2($http, '#/', "#"); dbug('imagen=' . $imagen); //if(isiPad) $http = "http://" . entre1y2($http, 'http://', '#'); array_push($obtenido['enlaces'], array('titulo' => 'Calidad Baja', 'url' => $http, 'url_txt' => 'Descargar', 'tipo' => 'http')); array_push($obtenido['enlaces'], array('titulo' => 'Calidad Alta', 'url' => $rtmp, 'tipo' => 'rtmp')); } //<h1 class="title">Extremadura 2 (17/05/12)</h1> if (enString($this->web_descargada, '<h1 class="title">')) { $titulo = entre1y2($this->web_descargada, '<h1 class="title">', '</h1>'); } else { $p = strpos($this->web_descargada, '.mp4'); $p = strpos($this->web_descargada, '<a', $p); $titulo = entre1y2_a($this->web_descargada, $p, '>', '</'); } $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido); }
function calculacom() { //titulo //<meta property="og:title" content="Alaska y Mario Episodio Extra - Pierrot"/> $p = strpos($this->web_descargada, 'og:title'); $titulo = entre1y2_a($this->web_descargada, $p, 'content="', '"'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); //imagen //<meta property="og:image" content="http://....jpg?height=106&quality=0.91"/> $p = strpos($this->web_descargada, 'og:image'); $imagen = entre1y2_a($this->web_descargada, $p, 'content="', '?'); if (enString($imagen, 'mtvnimages.com')) { $imagen = $imagen . '?height=180&quality=1'; } else { $imagen = substr($imagen, 0, strpos($imagen, '"')); } dbug('imagen=' . $imagen); //en la página /* http://www.eitb.com/es/videos/detalle/1258848/video-meteorito-rusia--mas-100-heridos-al-caer-meteorito/ detalle_video_1258848 http://www.eitb.com/es/get/multimedia/video/id/1258848/size/grande/ <media:content url="http://hdstreameitb-f.akamaihd.net/z/multimediahd/videos/2013/02/15/1045086/20130215_15532024_0005703037_001_001____T1_METEOR.mp4/manifest.f4m" type="video/x-flv"/> http://www.eitb.com/multimediahd/videos/2013/02/15/1045086/20130215_15532024_0005703037_001_001____T1_METEOR.mp4 http://www.eitb.com/multimedia/videos/2011/10/24/558362/PIRINEOS_ES_20111024_101408.flv */ if (preg_match('/<div.+?class="player">/', $this->web_descargada)) { if (!enString($this->web_descargada, 'detalle_video_')) { setErrorWebIntera('No se puede encontrar ningún vídeo.'); return; } $p = strpos($this->web_descargada, '<div class="player">'); $id = entre1y2_a($this->web_descargada, $p, 'detalle_video_', '"'); dbug('id=' . $id); } elseif (enString($this->web_descargada, 'insertar_player_video(')) { $id = entre1y2($this->web_descargada, 'insertar_player_video(', ','); dbug('id=' . $id); } $ret = CargaWebCurl('http://www.eitb.com/es/get/multimedia/video/id/' . $id . '/size/grande/'); $imagen = entre1y2($ret, 'thumbnail url="', '"'); if (enString($ret, 'manifest.f4m')) { $p = strpos($ret, '<media:content url="'); //$p=strpos($ret,'url="',$p); $url = 'http://www.eitb.com/' . entre1y2_a($ret, $p, 'z/', '/manifest.f4m'); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'tipo' => 'http'))); } elseif (enString($ret, '.mp4') || enString($ret, '.flv')) { $url = 'http://www.eitb.com/' . entre1y2($ret, '<media:content url="', '"'); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'tipo' => 'http', 'extension' => substr($url, -3, 3)))); } //a la carta: Ni idea /* http://www.eitb.tv/es/#/video/2142574288001 http://www.eitb.tv/es/get/videoplaylist/2142574288001/ */ 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() { /* "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 resuelvePlayer($ret) { //return -> agregar a obtenido>enlaces if (enString($ret, "urlHTML5:'http://")) { $url = entre1y2($ret, "urlHTML5:'", "'"); } else { $url = entre1y2($ret, "href:'", "'"); } //titulo $p = strposF($ret, "<a"); $titulo = utf8_encode(strip_tags(entre1y2_a($ret, $p, ">", "</a"))); return array(array('titulo' => $titulo), array('url_txt' => "Descargar", 'url' => $url, 'tipo' => 'http')); }
function calcula() { //titulo $titulo = utf8_encode(entre1y2($this->web_descargada, '<title>', '<')); //utf-8... mirar esto $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); $p = strpos($this->web_descargada, 'og:image'); $imagen = entre1y2_a($this->web_descargada, $p, 'content="', '"'); dbug('imagen=' . $imagen); if (enString($this->web_descargada, 'og:video')) { $p = strpos($this->web_descargada, 'og:video'); $url = entre1y2_a($this->web_descargada, $p, 'content="', '"'); dbug('video=' . $url); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'tipo' => 'http'))); } elseif (enString($this->web_descargada, '<object class="BrightcoveExperience"')) { $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array()); require_once 'brightcove-funciones.php'; /* $ejemplo = 'AAMAAAABAEZjb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkV4cGVyaWVuY2VSdW50aW1lRmFjYWRlLmdldERhdGFGb3JFeHBlcmllbmNlAAIvMQAAAe4KAAAAAgIAKGQ4Y2ZhOGIwZWQwYWVlM2YyMmRmZWRlMGYyZTU4NzRjYjViNGFmNjcRCmNjY29tLmJyaWdodGNvdmUuZXhwZXJpZW5jZS5WaWV3ZXJFeHBlcmllbmNlUmVxdWVzdCFjb250ZW50T3ZlcnJpZGVzGWV4cGVyaWVuY2VJZAdVUkwTcGxheWVyS2V5GWRlbGl2ZXJ5VHlwZRFUVExUb2tlbgkDAQqBA1Njb20uYnJpZ2h0Y292ZS5leHBlcmllbmNlLkNvbnRlbnRPdmVycmlkZRtjb250ZW50UmVmSWRzDXRhcmdldBVjb250ZW50SWRzF2NvbnRlbnRUeXBlE2NvbnRlbnRJZBtmZWF0dXJlZFJlZklkGWNvbnRlbnRSZWZJZBVmZWF0dXJlZElkAQYXdmlkZW9QbGF5ZXIBBAAFQoobzh2jSAABAQV/////4AAAAAVCg917rY7IAAaBF2h0dHA6Ly93d3cudnRlbGV2aXNpb24uZXMvcHJvZ3JhbWFzL3ZheWF2LzIwMTQvMDUvMjcvMDAzMV8zNTg4MzQwNTYxMDAxLmh0bQZlQVF+fixBQUFDZXpINWhNa34sa29OVmZFd3lwcTZXeGYyS01zN3EtM2V1R0wyOU1Pck0Ff////+AAAAAGAQ=='; $ejemplo = base64_decode($ejemplo); print_r(brightcove_decode($ejemplo)); */ preg_match('/<param value="(.*?)" name="playerID"/', $this->web_descargada, $matches); $experienceID = $matches[1]; preg_match('/<param value="(.*?)" name="playerKey"/', $this->web_descargada, $matches); $playerKey = $matches[1]; preg_match('/<param value="(.*?)" name="@videoPlayer"/', $this->web_descargada, $matches); $contentId = $matches[1]; $messagebroker = "http://c.brightcove.com/services/messagebroker/amf?playerKey=" . $playerKey; $a_encodear = array('target' => 'com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience', 'response' => '/1', 'data' => array('0' => 'd8cfa8b0ed0aee3f22dfede0f2e5874cb5b4af67', '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('0' => new SabreAMF_TypedObject('com.brightcove.experience.ContentOverride', array('contentRefIds' => null, 'target' => 'videoPlayer', 'contentIds' => null, 'contentType' => 0, 'contentId' => $contentId, 'featuredRefId' => null, 'contentRefId' => null, 'featuredId' => NAN)))))))); $post = brightcove_encode($a_encodear); //print_r(brightcove_decode($post)); dbug('a descargar: ' . $messagebroker); $t = brightcove_curl_web($messagebroker, $post); $res_decoded = brightcove_decode($t); dbug('RESPUESTA BRIGHTCOVE:'); dbug_r($res_decoded); /* view-source:http://c.brightcove.com/services/mobile/streaming/index/rendition.m3u8?assetId=3588406440001 http://progresive.lavozdegalicia.es/BCOVE/VTV/pd/2728142669001/201405/3588406440001/2728142669001_3588406440001_s-1.ts? http://videohdvtv-vh.akamaihd.net/BCOVE/VTV/hd/2728142669001/201405/2728142669001_3588398678001_PRG-VAYAVT4-0032.mp4 http://progresive.lavozdegalicia.es/BCOVE/VTV/hd/2728142669001/201405/2728142669001_3588398678001_PRG-VAYAVT4-0032.mp4 */ $base = $res_decoded['data']->getAMFData(); $base = $base['programmedContent']['videoPlayer']->getAMFData(); $base = $base['mediaDTO']->getAMFData(); $obtenido['enlaces'] = brightcove_genera_obtenido($this, $base, array('IOSRenditions' => 'm3u8', 'renditions' => 'http')); } finalCadena($obtenido); }
function calcula() { preg_match("@http://[^ ]*?\\.mp4@i", $this->web_descargada, $matches); $url = $matches[0]; $p = strpos($this->web_descargada, 'property="title"'); $titulo = entre1y2_a($this->web_descargada, $p, 'content="', '"'); $titulo = utf8_encode($titulo); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); //imagen $p = strpos($this->web_descargada, 'property="og:image"'); $imagen = entre1y2_a($this->web_descargada, $p, 'content="', '"'); dbug('imagen=' . $imagen); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'tipo' => 'http'))); finalCadena($obtenido); }
function calcula() { $retfull = CargaWebCurlProxy($this->web, 'ESP'); //titulo //<meta property="og:title" content="Alaska y Mario Episodio Extra - Pierrot"/> $p = strpos($retfull, 'og:title'); $titulo = entre1y2_a($retfull, $p, 'content="', '"'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); //imagen //<meta property="og:image" content="http://....jpg?height=106&quality=0.91"/> $p = strpos($retfull, 'og:image'); $imagen = entre1y2_a($retfull, $p, 'content="', '?'); if (enString($imagen, 'mtvnimages.com')) { $imagen = $imagen . '?height=180&quality=1'; } else { $imagen = substr($imagen, 0, strpos($imagen, '"')); } if ($imagen == '' || enString($imagen, '<')) { $imagen = entre1y2($retfull, 'rel="image_src" href="', '"'); } dbug('imagen=' . $imagen); //vid:"786779", $id = entre1y2($retfull, 'vid:"', '"'); dbug('id=' . $id); //http://intl.esperanto.mtvi.com/www/xml/media/mediaGen.jhtml?uri=mgid:uma:video:mtv.es:747606 $url = 'http://intl.esperanto.mtvi.com/www/xml/media/mediaGen.jhtml?uri=mgid:uma:video:mtv.es:' . $id; dbug('url=' . $url); $ret = CargaWebCurlProxy($url, 'ESP'); dbug($ret); //Por situación geográfica del servidor (supongo) da error. Usar pydowntv :( if (!enString($ret, 'copyright_error.flv')) { $extracto = entre1y2($ret, '<rendition', '<beacons>'); dbug('extracto=' . $extracto); $p = strrposF($extracto, '<src>'); $f = strpos($extracto, '<', $p); $url = substr($extracto, $p, $f - $p); } else { dbug('Usando pydowntv'); $ret = CargaWebCurl('http://www.pydowntv.com/api?url=' . $this->web); dbug($ret); $url = entre1y2($ret, '"url_video": ["', '"'); } $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'rtmpdump' => '-r "' . $url . '" -o "' . generaNombreWindowsValido($titulo) . '.' . (enString($url, '.mp4') ? 'mp4' : 'flv') . '"', 'tipo' => 'rtmpConcreto'))); finalCadena($obtenido); }
function calcula() { //mirar si hay video $obtenido = array(); if (!enString($this->web_descargada, '_w320.jpg')) { return; } $p = strpos($this->web_descargada, 'og:image'); $imagen = entre1y2_a($this->web_descargada, $p, 'content="', '"'); dbug('imagen=' . $imagen); $id = entre1y2($imagen, strrposF($imagen, '/'), "_w320.jpg"); dbug('id=' . $id); // Problemas con geobloqueo. //$ret=CargaWebCurl(urldecode(entre1y2($this->web_descargada, "'file': '", "'"))); //$ret=CargaWebCurl('http://www.adnstream.com/get_playlist.php?lista=video¶m='.$id); $ret = CargaWebCurl('http://proxyanonimo.es/browse.php?u=' . urlencode('http://www.adnstream.com/get_playlist.php?lista=video¶m=' . $id) . '&b=12&f=norefer', '', 0, '', array('Referer: http://proxyanonimo.es/')); dbug_($ret); $titulo = entre1y2($ret, '<title>', '<'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); $descripcion = entre1y2($ret, '<description>', '<'); dbug('descripcion=' . $descripcion); if (enString($ret, 'hd.file>')) { $ret = entre1y2($ret, 'hd.file>', '<'); } elseif (enString($ret, 'file>')) { $ret = entre1y2($ret, 'file>', '<'); } else { $p = strpos($ret, 'http://'); $f = strpos($ret, '<', $p); $ret = substr($ret, $p, $f - $p); } if (enString($ret, '.flv')) { $ret = substr($ret, 0, strrposF($ret, '/')) . $id . '.H264-480p.mp4'; $ret = 'http://176.31.233.154' . substr($ret, strpos($ret, '/', 10)); } $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'descripcion' => $descripcion, 'enlaces' => array(array('url' => $ret, 'tipo' => 'http'))); finalCadena($obtenido); return $obtenido; }
function parsefragment(&$arr, $html, $titulo, $multiple = false) { //rtmp://media1.crtvg.es:80/vod $p = strpos($html, 'clip:'); if (!$p) { $p = strposF($html, '"clip":'); } $p = strpos($html, 'url:', $p); if (!$p) { $p = strposF($html, '"provider":"rtmp","url":'); } $url = entre1y2_a($html, $p, '"', '"'); $url = str_replace('\\', '', $url); dbug('url=' . $url); //netConnectionUrl: "rtmp://media1.crtvg.es:80/vod" $p = strpos($html, 'netConnectionUrl:'); if (!$p) { $p = strposF($html, '"netConnectionUrl":'); } $preurl = entre1y2_a($html, $p, '"', '"'); $preurl = str_replace('\\', '', $preurl); dbug('$preurl=' . $preurl); //ipadUrl: "http:// m3u8" $p = strpos($html, 'ipadUrl:'); if (!$p) { $p = strposF($html, '"ipadUrl":'); } $ipadUrl = entre1y2_a($html, $p, '"', '"'); $ipadUrl = str_replace('\\', '', $ipadUrl); dbug('$ipadUrl=' . $ipadUrl); if ($multiple) { $arr[] = array('titulo' => $titulo); } $arr[] = array('url' => ' ', 'rtmpdump' => '-r "' . $preurl . '" -y "' . $url . '" -o "' . generaNombreWindowsValido($titulo) . '.mp4"', 'tipo' => 'rtmpConcreto'); if (strlen($ipadUrl) > 10) { $arr[] = array('url' => $ipadUrl, 'tipo' => 'm3u8'); } }
function calcula() { //get the music_id $ari = explode("/", $this->web); $v_id = array_pop($ari); dbug("http://www.veoh.com/rest/video/" . $v_id . "/details"); //retrieve xml files $this->web_descargada = CargaWebCurl("http://www.veoh.com/rest/video/" . $v_id . "/details"); $c = strpos($this->web_descargada, "videoId"); //titulo $titulo = entre1y2_a($this->web_descargada, $c, 'title="', '"'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); //imagen $imagen = entre1y2_a($this->web_descargada, $c, 'fullHighResImagePath="', '"'); dbug('imagen=' . $imagen); $url = entre1y2_a($this->web_descargada, $c, 'fullPreviewHashPath="', '"'); //yell it loud $url = trim($url); dbug($url); $obtenido = array('titulo' => $titulo, 'imagen' => $imagen, 'enlaces' => array(array('url' => $url, 'url_txt' => 'Descargar', 'tipo' => 'http'))); finalCadena($obtenido); }
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 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; }
function desde1a2_a(&$que, $desfaseInicio = 0, $start, $fin = null, $incluyeFinal = false) { $t = entre1y2_a($que, $desfaseInicio, $start, $fin); if ($incluyeFinal && !is_int($fin)) { $t .= $fin; } if (!is_int($start)) { return $start . $t; } return $t; }
function calcula() { $obtenido = array('enlaces' => array()); //titulo //<meta property="og:title" content="..." $p = strpos($this->web_descargada, 'og:title'); $titulo = entre1y2_a($this->web_descargada, $p, 'content="', '"'); $titulo = limpiaTitulo($titulo); dbug('titulo=' . $titulo); //imagen //<meta property="og:image" content="....png" /> $p = strpos($this->web_descargada, 'og:image'); $imagen = entre1y2_a($this->web_descargada, $p, 'content="', '"'); dbug('imagen=' . $imagen); $posibilidades = array("mp4_hd", "ogv_hd", "mp4_high", "ogv_high", "mp4_med", "ogv_med", "mp4_low", "ogv_low"); $baseLimpia = $this->agregaSubDominio(""); $url = ""; for ($i = 0; $i < 8; $i++) { //8 videos //url:'mp4%3A%2Fweb%2F4311%2F4311.mp4', $p = strpos($this->web_descargada, 'id="' . $posibilidades[$i] . '"'); $f = strpos($this->web_descargada, ">", $p); $url = substr($this->web_descargada, $p, $f - $p); $url = $baseLimpia . entre1y2($url, 'src="', '"'); dbug('url=' . $url); if (esVideoAudioAnon($url)) { $obtenido['enlaces'][] = array('titulo' => $posibilidades[$i], 'url' => $url, 'tipo' => 'http'); } else { //ya no hay mas videos. fin $i = 8; } } if ($this->duda($obtenido, $url)) { dbug('intento 0'); $titulo = entre1y2($this->web_descargada, '<meta property="og:title" content="', '"'); if (enString($this->web_descargada, 'og:video')) { $url = entre1y2($this->web_descargada, '<meta property="og:video" content="', '"'); } } if ($this->duda($obtenido, $url)) { dbug('intento 1'); $titulo = "rt.com"; //video = "..." $url2 = $baseLimpia . entre1y2($this->web_descargada, 'video = "', '"'); if (esVideoAudioAnon($url2)) { $url = $url2; } } if ($this->duda($obtenido, $url)) { dbug('intento 2'); $titulo = "rt.com"; //file=http://actualidad.rt.com/images/programas/123/programas_1636.flv& $url2 = $baseLimpia . entre1y2($this->web_descargada, 'file=', '&'); if (esVideoAudioAnon($url2)) { $url = $url2; } } if ($this->duda($obtenido, $url)) { dbug('intento 3'); $titulo = "rt.com"; //'file': 'http://actualidad.rt.com/images/programas/123/programas_1636.flv'& $url2 = $baseLimpia . entre1y2($this->web_descargada, "'file': '", "'"); if (esVideoAudioAnon($url2)) { $url = $url2; } } if ($this->duda($obtenido, $url)) { dbug('intento 4'); $titulo = "rt.com"; //source src="http://actualidad.rt.com/images/programas/123/programas_1636.flv" $url2 = $baseLimpia . entre1y2($this->web_descargada, '<source src="', '"'); if (esVideoAudioAnon($url2)) { $url = $url2; } } if ($this->duda($obtenido, $url)) { dbug('intento 5'); $titulo = "rt.com"; //video:'/files/news/syria-rebel-massacre-aleppo-627/ie7d56fbec8d0673a34b31e08adb343fe_aleppo-mass-shooting.flv' $url2 = $baseLimpia . entre1y2($this->web_descargada, "video:'", "'"); if (esVideoAudioAnon($url2)) { $url = $url2; } } if ($this->duda($obtenido, $url)) { dbug('intento 6'); $titulo = "rt.com"; //video:'/files/news/syria-rebel-massacre-aleppo-627/ie7d56fbec8d0673a34b31e08adb343fe_aleppo-mass-shooting.flv' preg_match('@http://.*?\\.mp4@', $this->web_descargada, $matches); dbug_r($matches); $url2 = $matches[0]; if (esVideoAudioAnon($url2)) { $url = $url2; } } $obtenido['enlaces'][] = array('url' => $url, 'tipo' => 'http'); $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido); }
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.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, 'var videos = ')) { // var videos = [{"titulo":"Un lugar donde vivir","video":"8965","imagen":"http:\/\/api.rtvcm.webtv.flumotion.com\/videos\/8965\/thumbnail.jpg","fecha":"15\/06\/2015","format_date":"2015-06-15 00:00","descripcion":"Descubrimos los municipios de Cristo del Esp\u00edritu Santo (Ciudad Real) y Vega del Codorno en Cuenca.","fecha-publicacion":"1434404700"},{"titulo":"Un lugar donde vivir","fecha":"08\/06\/2015","format_date":"2015-06-08 00:00","descripcion":"","video":"8738","imagen":"http:\/\/api.rtvcm.webtv.flumotion.com\/videos\/8738\/thumbnail.jpg","fecha-publicacion":""},{"titulo":"Promo Un lugar donde vivir","fecha":"01\/06\/2015","format_date":"2015-06-01 00:00","descripcion":"","video":"8642","imagen":"http:\/\/api.rtvcm.webtv.flumotion.com\/videos\/8642\/thumbnail.jpg","fecha-publicacion":""}]; // http://play.rtvcm.webtv.flumotion.com/play/player?player=8&pod=8965 // <meta property=og:title content="Unlugardondevivir15062015.mp4"> // http://ondemand.rtvcm.ondemand.flumotion.com/rtvcm/ondemand/video/mp4/med/Unlugardondevivir15062015.mp4 $json = json_decode(entre1y2($this->web_descargada, 'var videos = ', ';'), true); if (!isset($json[0])) { $json[0] =& $json['']; unset($json['']); } dbug_r($json); for ($i = 0, $i_t = count($json); $i < $i_t; $i++) { //$video = CargaWebCurl('http://play.rtvcm.webtv.flumotion.com/play/player?player=8&pod=' . $json[$i]['video']); // http://api.rtvcm.webtv.flumotion.com/videos/8965/thumbnail.jpg // http://media0.ntt.webtv.flumotion.com/cust/rtvcm//outgoingimg/Unlugardondevivir15062015.mp4/Unlugardondevivir15062015.mp4-04.jpg // Queremos la redirección de la imagen $imgRealUrl = CargaWebCurl($json[$i]['imagen'], '', true, '', array(), false); dbug($imgRealUrl); $imgRealUrl = entre1y2($imgRealUrl, 'Location: ', "\r"); dbug($imgRealUrl); preg_match('@/([^/]+\\.mp4)@', $imgRealUrl, $matches); dbug_r($matches); $mp4Url = $matches[0]; $obtenido['enlaces'][] = array('titulo' => $json[$i]['titulo'] . ' - ' . $json[$i]['fecha'], 'url' => 'http://ondemand.rtvcm.ondemand.flumotion.com/rtvcm/ondemand/video/mp4/med/' . $mp4Url, 'url_txt' => 'Descargar'); } $p = strpos($this->web_descargada, '<title>'); $titulo = utf8_encode(entre1y2_a($this->web_descargada, $p, ' - ', '<')); $titulo = limpiaTitulo($titulo); $imagen = 'https://pbs.twimg.com/profile_images/585353307331301377/k1CugBXh_400x400.jpg'; $obtenido['titulo'] = $titulo; $obtenido['imagen'] = $imagen; finalCadena($obtenido); } else { //showVideo(videoURL){ $p = strpos($this->web_descargada, "showVideo(videoURL){"); $baseLimpia = entre1y2_a($this->web_descargada, $p, "url: '", "'"); //showVideo(' $videos = substr_count($this->web_descargada, "showVideo('"); $total = array(); $last = 0; for ($i = 0; $i < $videos; $i++) { $p = strposF($this->web_descargada, "showVideo('", $last); $f = strpos($this->web_descargada, "'", $p); $last = $f; $vid = $baseLimpia . substr($this->web_descargada, $p, $f - $p); dbug('video=' . $vid); $tit = entre1y2_a($this->web_descargada, $last, 'title="', '"'); dbug('tit=' . $tit); $total[] = array($vid, utf8_encode($tit)); } for ($i = 0; $i < $videos; $i++) { $obtenido['enlaces'][] = array('titulo' => $total[$i][1], 'url' => 'http://ondemand.rtvcm.ondemand.flumotion.com/rtvcm/ondemand/video/mp4/med/' . entre1y2($total[$i][0], 'mp4:'), 'url_txt' => 'Descargar'); } $p = strpos($this->web_descargada, '<title>'); $titulo = utf8_encode(entre1y2_a($this->web_descargada, $p, ' - ', '<')); $titulo = limpiaTitulo($titulo); $imagen = 'http://www.rtvcm.es/img/logos_cab_esq.gif'; $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() { //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 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); }
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 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() { //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); }