Como ya sabemos, Kodi es un programa (multiplataforma) de código abierto, lo cual significa que es código público y que puede modificarse y personalizarse. Todo el código esta escrito en Python, PHP y XML, así que es compatible con Add-ons personalizados programados en Python que pueden comunicarse con Kodi. El mismo Wiki oficial Kodi ofrece instrucciones de como podemos crear nuestros Add-ons. Pero si queremos que nuestro Add-on pueda ser usado solo por familiares y amigos, para compartir librerías personales de películas, música o fotos, ¿como controlamos el acceso?, ¿como hacemos para que el Add-on pida un Usuario y Contraseña? En esta guía te mostramos los pasos para poder lograrlo. Sigue leyendo.

Hace poco creamos un poco de código en Python que permite entrar a la mayoría de sitios de Internet que requieren de un usuario y contraseña para acceder. Aún más, este código puede ser adaptado a varios sitios diferentes y es bastante confiable. Es por esto que decidimos crear esta guía para facilitarle a los amantes de Kodi y programadores la posibilidad de introducir contraseñas a sus Add-ons. ¡Esperamos que esta guía los ayude!

Importante (leer antes de continuar)

  1. Este método funciona para muchos sitios, pero no todos los sitios.
  2. Esta guía es solo para Programadores, ya que el proceso no es fácil y requiere de habilidades de programación y conocimientos básicos de Python y PHP.
  3. La guía no es complicada, y escribimos instrucciones detalladas. Así que no te desesperes por la longitud (y complejidad) de esta guía.
  4. Es posible usar un sitio Web personal, pero este deberá estar escrito en PHP y tener acceso por Usuario y Contraseña. Tu servidor deberá tener PHP instalado para funcionar. Esto no lo cubrimos en esta guía.  

Primero que nada, debes bajar dos archivos (deberás modificarlos); weblogin.py y gethtml.py. Para esta guía solo usaremos weblogin.py, el segundo archivo solo muestra un ejemplo de como hacer para buscar videos en un sitio web, y facilitar a los programadores de Add-ons la inserción de esta funcionalidad. Aquí es donde su creatividad inicia para lograr extraer videos de páginas web, ya que este código es básicamente un “scrapper”.

¿Como funciona este código para autorizar el acceso?

Básciamente el código introduce un nombre de Usuario y Contraseña en un sitio web, envía una petición, y guarda las “cookies” que el sitio envía como respuesta cuando la autenticación es aceptada. Para revisar que la autenticación fue aceptada, el código busca un “texto especial” en el código HTML de respuesta, este “texto especial” solo aparece en el la página web una vez que inicias tu sesión. Una vez aceptado y que el cookie fue guardado, podrás cargar cualquier URL de ese sitio.

¿Que necesitas configurar el código de tu Add-on?

  • Google Chrome o un buscador de tráfico (web traffic sniffer) instalado.
  • Un usuario y contraseña que funcionen con el sitio Web a probar.
  • Para un sitio personal PHP, necesitas que tu sitio Web te pida usuario y contraseña para entrar, y que la página de respuesta tenga un “texto especial” que solo los que entren puedan leer.

Guía

  1. Primero que nada introduce tu usuario y contraseña en weblogin.py (líneas 31 y 32). Estos son los que usas para entrar al sitio web que vas a usar para extraer tus videos, fotos ó música. En el archivo encontrarás dos comillas vacías (”), introduce tus credenciales como en el siguiente ejemplo;
    myusername = 'kodimexico'
    mypassword = 'contrasena123'
  2. Para buscar el “texto especial” en la página web. Abre Google Chrome y entra a la página que te pide tu contraseña, ¡pero no introduzcas tus datos! Sobre la página, haz click con el botón derecho y selecciona “Ver código fuente” (view page source).
  3. Después abre otra pestaña (tab) y entra nuevamente en la página web, esta vez introduce tu nombre de usuario y contraseña, y una vez que hayas entrado, haz click derecho y nuevamente “Ver código fuente.”
  4. Ahora compara los dos códigos fuente y trata de encontrar diferencias entre las dos. Debes buscar un texto que no exista en la primer página, ya que será usado para comprobar si la autenticación fue aceptada. Si el código fuente es muy extenso, usa Ctrl+F para asegurarte que el “texto especial” no existe en el primer código fuente. En algunos sitios encontrarás “Bienvenido” u “Hola” en el código. Alternativamente, puedes usar simplemente tu nombre de usuario, pero esto lo haría ser muy específico y solo funcionará con tú usuario, y la idea es tener varios usuarios autorizados.
  5. Cuando hayas encontrado tu “texto especial” debes ponerlo en weblogin.py (línea 40), una vez más este debe estar dentro de las comillas, como ejemplo asumamos que el texto diferente es ‘Welcome’.
    logged_in_string = 'Welcome'
  6. Lo que sigue es encontrar el URL o dirección que usa el “login” o autorización, y el código se envía para lograr el acceso. En Chrome, cierra las pestañas que abriste, cierra tu sesión, y regresa a la página inicial donde te pide abrir tu sesión, pero no introduzcas nada aún.
  7. Haz click derecho en cualquier parte de la página y ahora selecciona “Inspeccionar elemento” (Inspect element). Aparecerá una barra de información en la parte inferior de la página. Selecciona la pestaña de “Network” que esta en la parte superior de la barra. Ahora haz click en la columna que dice “Timeline” y en el menú selecciona “Tiempo de inicio” (Start Time). Para asegurarte que todo está limpio, haz click en el botón de “Limpiar” (Clean), que es un círculo negro con una diagonal en medio (parte  superior izquierda de la barra). Esto debe verse así antes de continuar (WordPress solo es usado como ejemplo).
    Screenshot 2016-05-18 20.57.11
  8. Ya estás listo para capturar tus valores. Introduce tus nombre de usuario y contraseña en la página web, haz click en el botón de limpiar nuevamente, y abre tu sesión. Deberás ver varias peticiones siendo capturadas en la barra de inspección.
  9. Cuando todo haya terminado, y hayas entrado al sitio web, revisa lo primero que se capturó en la línea de tiempo (lo que está hasta arriba), justo cuando hiciste click en el botón de entrada. Aquí deberás de ver el archivo que se envió cuando abriste tu sesión. Este puede tener un nombre como login.php, signin.php, o algo parecido.
  10.  Si no estás seguro del qué archivo se envió con tu nombre de usuario y contraseña, revisa la pestaña de “Encabezados” (Headers) de los primeros archivos que se enviaron , y revisa la información y encuentra tu usuario y contraseña. Por ejemplo, WordPress envía estos datos así, y estos se encuentran en la sección de “Form data”;
    log: kodimexico@wordpress.com
    pwd: contrasena123
  11. Asumiendo que ta encontraste los datos que se usaron para enviar tus credenciales al sitio, ya puedes usar esos valores para meterlos en weblogin.py. En la parte superior de la forma que analizaste deberás ver “Request URL,” esta es la dirección que se usa para entrar, guárdala. La de WordPress es (por ejemplo);
    Request URL: https://wordpress.com/wp-login.php
  12. También copia la información que está incluida en la sección “Form Data,” pégala en un archivo de texto, ya que la usaremos después. Por ejemplo;
    Screenshot 2016-05-18 20.56.27
  13. Regresa a tu archivo weblogin.py, y busca la sección de la función doLogin (línea 49). Aquí vas a pegar tu liga o “Request URL” en login_url (línea 65), como;
    login_url = 'https://wordpress.com/wp-login.php'

    Tu “Form data” o datos enviados deben de ir en el la sección de login_data (línea 71), y esta deberá modificarse de acuerdo a tu “Form Data,” mete todo lo que la forma envía. Separa el Campo y Valor con dos puntos ‘:’ y cada sección con una coma ‘,’ captura todo excepto el nombre de usuario (username) y contraseña (password), ya que en esta primer versión estas variables ya las capturaste en el paso 1, y ya dentro de Kodi estos serán enviados desde el Add-on con settings.xml. En mi caso, siguiendo el ejemplo;

    login_data = urllib.urlencode({'log':username, 'pwd':password, 'rememberme':'forever', 'wp-submit':'Log in', 'redirect_to':'https://wordpress.com/', 'testcookie':1})
  14. Prueba tu código. Asegúrate de que capturaste tu nombre de usuario y contraseña en el área de prueba (paso 1), y ahora prueba si funciona ejecutando el código. Te recomiendo usar PyCharm u otro editor de Python. Si todo sale bien, te aparecerá “True.” Una vez que funcione, intenta deliberadamente cambiar tu nombre de usuario y ejecuta de nuevo el código, ahora deberá aparecer “False”
  15. ¿Algo salió mal? Revisa los valores de los datos que enviaste; login_data, login_url y tu “texto especial.” Hasta ahora, esta es la parte fácil, ahora veremos como introducer este código a tu Add-on.
  16. Para usarlo en tu Add-on, ¡Borra tu información personal del área de prueba! No vas a querer compartir tu nombre de usuario y contraseña con todo el mundo a través de tu código fuente.
  17. En weblogin.py hay instrucciones de como usar el código. Básicamente debes añadir un poco de código a tu archivo default.py que se encuentra dentro de tu Add-on, introducelo al inicio de este archivo donde importas tus librerías. El código es el siguiente (esto lo encuentras en la sección de “Usage” en la línea 13);
    import weblogin
    cookiepath = xbmc.translatePath(addon.getAddonInfo('profile').decode('utf-8'))
    logged_in = weblogin.doLogin('cookiepath','username','password')

    Nota: El  cookiepath solo envía el “cookie” a tu directorio “userdata” de Kodi, si no sabes modificarlo,  déjalo como está

  18. En tu archivo settings.xml debes de meter una opción de “Contraseña” y campos para un Usuario y una Contraseña. Aquí te ponemos un ejemplo de lo que iría en este archivo settings.xml, puedes dejar lo que ya tenías para configurarlo, solo es agregar otra opción.
  19. <settings>
       <setting id="use-account" type="bool" label="30200" default="false"/>
       <setting id="username" type="text" label="30201" default="" enable="!eq(-1,false)"/>
       <setting id="password" type="text" label="30202" default="" option="hidden" enable="!eq(-2,false)"/>
       <setting id="hide-successful-login-messages" type="bool" label="30203" default="false" enable="!eq(-3,false)"/></settings>

Y eso es todo. Esta información puede ser usada y adaptada para tu sitio personalizado, o un lugar donde tengas una lista xml para ver TV en vivo. Tu “texto especial” puede ser parte de la dirección Web donde se encuentra tu lista secreta. Para lograr esto solo necesitas tener un servidor PHP, una código en PHP llamado index.php que te pida un nombre de usuario y contraseña, y otro donde se encuentre la dirección de tu archivo (o archivos) xml secreto, que pueda copiarse e introducirse a Kodi. Como lo mencioné antes, aquí es donde les dejo la creatividad a los programadores. La idea básica se cubre en esta guía, el uso que se le dé es cuestión del programador. Comenta tus resultados, ¡Suerte!