Mini Tutorial de Regex para Alfa

danielr460

Miembro del equipo
18 Oct 2017
76
43
18
28
#1
Buenas, hoy les traigo un mini tutorial sobre expresiones regulares para la creación de canales en alfa.
Se usará el canal Anitoonstv.com.
Primero como se indica en el tutorial de creación de canales crearemos una entrada en el mainlist con la pagina actual y se dirigirá a un método que muestre el código fuente en kodi.log

Para que funcione, tienen que activar el log detallado en la configuración de Alfa, y editar el archivo anitoonstv.py con cualquier editor y descomentar la linea:

#logger.info("Pagina para regex "+data)

Y dejarlo como:

logger.info("Pagina para regex "+data)

Quitándole el caracter: #

Como se aprecia, en la última línea se descarga el código fuente de la página web en kodi.log.
Luego, en la página web haremos clic en inspeccionar en alguna serie o película, para revisar por encima su código fuente.


Como se muestra en el cuadro rojo, la estructura de cada serie comienza con <div class ="serie">, este será uno de nuestros puntos de partida para este canal en específico.
Ahora vamos a kodi.log y buscamos: "Página para regex" que fue lo que se escribió como punto de ubicación para el código fuente de la página web.

Asi, seleccionamos todo lo que sigue, hasta que termine el código fuente que suele (pero no siempre) terminar en la etiqueta </html>

Ahora este código lo podemos pasar a una página para realizar regex, el que se usa en este tutorial es: regex101.com, y buscamos la etiqueta que revisamos en la página web.

Como nos indica la web, se obtienen 100 resultados de la etiqueta, lo que quiere decir que nos estamos acercando a lo que queremos. Lo que se ve después de esta etiqueta es <a href='Link de la serie'> (el link de la serie esta incompleto, hace falta www.anitoonstv.com, pero no importa).
En este punto lo que haremos es recurrir a los patrones o carácteres de las expresiones regulares, ya que la información que queremos es Link de la serie.
Para obtener que algún tipo de información se guarde en python en una lista, haremos uso del primer patrón de regex, los paréntesis. Los paréntesis capturarán lo que este dentro de estos en una lista, como se quiere.
Lo que se incluye en los paréntesis ya son varios carácteres, que usualmente puede ser:
[^"]+ : Captura todo lo que esta en una cadena completa
.+? : Captura todo lo que esta hasta que la expresión regular se lo indique
.+ : Captura todo hasta el próximo salto de línea
Generalmente se suele usar el primero, pero pues ya depende de la estructura de la web, en este caso se hará uso del segundo, quedando nuestro patrón así (.+?)

Como se aprecia, el patrón esta perfecto ya nos captura la url de todas las series, para ser procesadas en python. Pero como se aprecia en la imagen, de cada serie se tiene mas informacion entonces podemos seguir haciendo uso de los caracteres para seguir construyendo una cadena única de información capturada.

Como se muestra en la imagen basta con poner .+? para dejar pasar informacion innecesaria o (.+?) para capturarla.
Nota: Para hacer uso de los caracteres reservados de regex en python se hace uso de "\" o backslash, como se muestra en la imagen se hizo uso para el carácter "/" que es usado para los finales de las etiquetas de HTML.
En la imagen se aprecia la información capturada:
url: en color verde
thumbnail (o miniatura): en color rosado
titulo: en color naranja
informacion_serie: en color morado
Así ya podemos copiar toda la expresión regular en el fichero (en este caso) anitoonstv.py

Además se organizo en python la expresión regular para saber que información se obtiene de la página web, posteriormente se llama la función find_multiple_matches para que me capture los datos que seleccionamos.
Nota: En el caso de solo obtener una cadena de informacion (por ejemplo, url de la serie nada más) se hace uso de la función find_single_match.
Ya para finalizar se hace uso de un for para almacenar la informacion en un itemlist y poder visualizarla en Kodi

Nota: Como se vio anteriormente la url guardada le hacia falta "www.anitoonstv.com" por lo que se hace la unión por medio de host (previamente definido) + scrapedurl (que es la capturada).
Finalmente se puede apreciar un resultado de la siguiente manera en kodi:
 
Última edición por un moderador: