Este post de hoy lo dejo por que han sido bastantes las personas que me han preguntado acerca de la emisión de canales. Muchos me han preguntado si pruebo todos los canales antes de utilizarlos (yo me río de ello pues sería comprobar demasiados enlaces ya que internet está inundado de ellos). Por esta razón voy a dejar aquí un ejemplo del sistema que utilizaba para comprobar los enlaces.
Tengo que aclarar que el código que presentaré a continuación, es una modificación de uno que encontré un día en Taringa (siento no poder poner el enlace, pues no lo tengo a mano. Pero si a alguien le interesa, solo tiene que buscar un poco).
El código es bastante sencillo, y su autor creo recordar que permitía a quien quisiese modificarlo y distribuirlo. Cuando me entró la curiosidad por como funcionaban los enlaces m3u y ts me puse a modificar el script que el aportaba, y la que aquí presento es la primera de las modificaciones que le hice. Con el tiempo fui añadiéndole funcionalidades y el resultado final era parte del script que buscaba canales de tv por internet (utilizando el buscador Shodan).
Cómo comprobar si una URL está online
Quiero aclarar que en esta primera versión, solo detectaba si la url era válida o no. Vamos, que en caso de comprobar un archivo .ts, el script te devolvía si estaba online, no si estaba emitiendo o no. Eso lo conseguí más adelante utilizando otros lenguajes. El código que podéis ver a continuación podéis verlo funcionando en el siguiente enlace.
La página se divide en dos. La primera de ellas es simple y llanamente html con el código que sigue;
Html y Css
<head> <meta charset="UTF-8"> <meta name="author" content="entreunosyceros"> <title>Comprobar URL</title> <style> textarea{width: 100%; height: 300px;} .green{color: #10a500;} .gray {color: #6c6c6c;} .red {color: #a50a00;} </style> </head> <body> <!--Caja para url--> <h2>Pega las URL aquí</h2> <textarea id="list"></textarea> <button id="check">Comprobar</button> <!--mostrar status--> <p id="status"></p> <!--Filtrado--> <div id="filter" style="display:none;"> <h2>Filtrar escondiendo</h2> <div> <input name="filter" type="checkBox" title="none" /> <label>Ninguna</label> </div> <div> <input name="filter" type="checkBox" title="gray" /> <label>No-URLs</label> </div> <div> <input name="filter" type="checkBox" title="green" /> <label for="resOk">Ok</label> </div> <div> <input name="filter" type="checkBox" title="red" /> <label for="resBad">Error</label> </div> </div> <!--Lista de resultados--> <ul id="results"></ul>
Como sabréis esto tan solo es html (y css) para mostrar elementos y los resultados que se obtienen con los siguientes scripts:
JavaScript
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script> //Comprueba si son url function urlIs(e) { return (e.indexOf('http') === 0 || e.indexOf('rtmp') === 0); } //Añadir resultados a la lista function resultAdd(e, r, c) { $('#results').append('<li class="' + c + '">' + e + r + '</li>'); } //limpiar resultados function resultClear() { $('#results').empty(); } //Comprobar lista function checkList() { txt = $('#list').val(); //carga los valores de la caja de texto lines = txt.split("\n"); //separa cada una de las líneas lines.forEach(function (e) { //recorre cada una de las líneas e=e.trim(); if (urlIs(e)) { //si es una url $('#status').html('Comprobando: <b>' + e + '</b> ...'); urlCheck(e, function (xhr) { if (xhr.status === 200) { //url ok resultAdd(e, ' : OK', 'green'); } else { //error en el resultado resultAdd(e, ' : #' + xhr.status + ' (' + xhr.statusText + ')', 'red'); } }); } else { //no es una url resultAdd(e, '', 'gray'); } }); } //Comprobar URL function urlCheck(url, cb) { jQuery.ajax({ url: url, async: false, dataType: 'text', type: 'GET', complete: function (xhr) { cb.apply(this, [xhr]); } }); } //lanzamiento de funciones anteriores $(document).ready(function () { $('#check').click(function () { resultClear(); $(this).prop('disabled', true); $('#filter').hide(); checkList(); $(this).prop('disabled', false); $('#filter').show(); $('#status').html('Operación terminada.'); }); //ocultar y mostrar el filtro al acabar el análisis $('input[name="filter"]').click(function () { title = $(this).attr('title'); $('#results li').show(); $('#results li[class="' + title + '"]').hide(); }); }); </script>
Conclusiones
El resultado final es algo a lo que utilizando un poco la imaginación podrás añadir más funcionalidades para obtener los resultados que buscas. Cuando obtienes el resultado, puedes filtrarlos según te interese. Después de comprobar una lista, puedes limpiar la pantalla de los textos que no son enlaces, de los enlaces caídos, etc …
Con esto espero haber resultado algunas de las dudas que me habían planteado en los últimos días o haber dado alguna buena idea. Por último quiero volver a aclarar que SAPOIPTV no va a ser actualizado nuevamente (lo siento mucho) por las razones que ya expuse en el anterior post. Si todavía queréis ver tv por internet, hay un montón de fantásticos addons para Kodi que os ayudarán a ello. Si no conocéis ninguno, en youtube ANDROIDIPTV o CanalNereo os podrán echar una mano. Suelen presentar a diario fantásticos addons para ello.
10 Comentarios