Cómo comprobar si un archivo está online
Cómo comprobar si un archivo está online

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

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

comprobar url 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.







¿Qué te ha parecido este post?

¡Haz clic en una estrella para calificarla!

Puntuación media 5 / 5. Recuento de votos: 1

¡No hay votos hasta ahora! Sé el primero en calificar esta publicación.

No te pierdas otros artículos ...

¡Síguenos en las redes sociales!

¡Lamentamos que esta publicación no te haya sido útil!

¡Permítanos mejorar esta publicación!

¿Cuéntanos cómo podemos mejorar esta publicación?

Esta entrada tiene 10 comentarios
  1. Neuro

    Pues aquí un idiota que tendrás esperando 😀

    Puedes utilizar de ejemplo el archivo de pastebin que te he puesto para que te hagas una idea .

    Gracias!!

  2. Neuro

    Hola sapoclay,

    Nuevamente, gracias por responder. La verdad, es que no me corre prisa y en cierto modo, hasta me sabe mal, pues en realidad no dejo de ser un idiota que viene a mendigar o sugerir algo que requiere de tu tiempo y esfuerzo y seguramente, no se te valorará lo suficiente el script.

    Si quisieras hacerlo, solo tendrías que sacar esta parte del json

    “username”:”3qqUL10RAz”,”password”:”rKuxRW8WZO”,”auth”:1,”status”:”Active”,”exp_date”:”1573396001″,”is_trial”:”0″,”active_cons”:”0″,”created_at”:”1570714001″,”max_connections”:”1″,”allowed_output_formats”:[“m3u8″,”ts”]},”server_info”:{“url”:”gtmservices.org”,”port”:”8000″

    Y lo hagas o no lo hagas, gracias nuevamente.

    Un saludo.

    1. sapoclay

      Hola. Me parece interesante tu propuesta. Por curiosidad lo haré, pero como te digo, no te puedo decir cuando tendré tiempo para dedicarle un rato. Cuando lo tenga funcionando, lo publicaré aquí. Salu2 y gracias por las visitas.

  3. Neuro

    Muchas gracias por responder…

    Si, si que se puede, porque ahora usan paneles anulados. Te pongo un ejemplo, es de 1 IPTV española de 1 usuario.

    http://gtmservices.org:8000/panel_api.php?username=3qqUL10RAz&password=rKuxRW8WZO

    La idea es poner muchos enlaces de las páginas de enlaces y que te devuelva la informacion

    Algo parecido a esto

    http://iptvhit.com/check_playlists

    http://iptvhit.com/freeiptv

    Si fuera necesario, no me importaría pagarte, pero también deberías de saber que después el archivo lo subiría a github si es pagando

    Gracias nuevamente.

    1. sapoclay

      Hola.Me tendrías que decir exactamente que información quieres que se muestre cuando se analicen las URL. Además posiblemente necesitarías ejecutarlo en un servidor (sea local o vía web). El problema es que ahora mismo no dispongo de demasiado tiempo para dedicarle, por lo que no puedo decirte exactamente para cuando lo tendría listo. Si te corre prisa, quizás te pueda poner en contacto con alguien que quizás te pueda ayudar a llevarlo a cabo.

      En cuanto a lo de pagar, yo no cobro por estas cosas, las hago por el simple placer de aprender. Salu2.

  4. Neuro

    Hola, buenas tardes. Es posible crear un script para sacar la información de los enlaces de Xtram Codes masivamente utilizando el json del panel_api.php?

    Aquí tienes un ejemplo que solo saca la info de las líneas de IPTV de los enlaces de los canales…

    https://pastebin.com/EavQ5Mbx

    Muchas gracias por haber compartido este script.

    1. sapoclay

      Hola. Gracias por el aporte, pero me parece que eso que pides de sacar enlaces de forma masiva de xtream codes no es factible, al menos enlaces que funcionen. Estos enlaces utilizaban una contraseña y un usuario que suelen tener un número limitado de conexiones posibles y que limitan su uso a un número limitado de usuarios.

      Además de esto, hace unas semanas la policía italiana cerró xtream codecs en italia como indican en en adslzone, y muchos de los servicios IPTV se han venido abajo. Por el momento, que yo sepa, no hay una alternativa fiable.

      Salu2 y gracias por el comentario.

  5. José Luis

    Hola Sapoclay, ante todo gracias por tus post, podrías recomendarme donde puedo encontrar información para comprobar la emisión de la lista m3u y/o ts. El código solo comprueba el estatus de la url. Quiero adentrarme un poco más en este mundillo y fabricar mi propio addon para Kodi. Gracias

    1. sapoclay

      Hola José Luis. Te diré que información sobre como comprobar la emisión de las listas m3u y/o ts en su día encontré poca que me resultase útil. Pero mientras buscaba encontré un programa que aun que no es efectivo al 100% se acerca bastante. Puedes echarle un vistazo en un post que escribí hace uno o dos meses https://entreunosyceros.net/iptv-tools-m3u-ts/ en donde encontrarás un enlace para descargar este programa. Es muy sencillo de utilizar. Solo lo hay para windows, pero si utilizas linux podrás utilizarlo con wine (a mi me funcionó).

      Si quieres hacer algo por tu cuenta un poco más efectivo te digo que si tienes un servidor en local (tipo xampp) puedes escribir un código mediante php o javascript (por ejemplo) al que tras pasarle la url del canal vía formulario comience a descargar el archivo de turno. Si este tiene un tamaño superior a 5kb (por ejemplo, siempre ha de ser mayor que cero) de por buena la emisión. Si el tamaño aumenta querrá decir que la emisión está activa. Puedes adaptar el código de este post para tal labor.

      Yo tenía pensado realizar algún código de este estilo, pero no tengo mucho tiempo para ponerme a ello. Si mientras realizas tu addon necesitas un cable (y puedo) no dudes en escribirme. Si consigues realizarlo te agradecería que lo compartieses aun que sea a modo de muestra ya que mucha gente busca algo así.

      Si por el contrario lo que buscas hacer es un addon para tu uso personal, siempre puedes utilizar las url de las páginas que emiten los canales vía web. Estas url vienen con id por lo que solo serán útiles para un único usuario y su vida será de 24 o 48 horas como máximo, pero te evitarás la publicidad tan invasiva que tienen estas páginas (aun que le harás la puñeta a la gente que se dedica a compartir estas emisiones). En su día creo que escribía algo relacionado a esto en esta página.

      Espero haberte sido de ayuda. Salu2 y gracias por la visita.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.