Pues bien, voy a empezar yo mismo con algo que seguro que todos sabéis. Pero por si no...
Como novato absoluto que soy por estas lindes (novato con python, novato con scripts xbmc, novato con plugins...) empleo la mitad del tiempo analizando el código de otros y la otra mitad leyendo manuales y wikis. Pues bien, leyendo uno de esos manuales descubrí una interesante opción de las expresiones regulares:
Resulta que se puede activar una opción "Verbose" que ignora los espacios en las expresiones regulares que creemos. También trata el caracter '#' como un comentario de línea dentro de la propia expresión regular. Esto permite crear expresiones regulares más legibles y más fáciles de mantener.
Con esta opción podemos convertir esto:
Código: Seleccionar todo
patronvideos = '''<li><a href="([^"]+)">([^<]+)(?:\ <font class="new-new">(New)!</font>)?(?: <font class="new-updated">(Updated)!</font>)?<span style="margin-top:0px;">([0-9]+) episodes'''
en esto:
Código: Seleccionar todo
patronvideos = '''(?x) # Activa opción VERBOSE.
<li><a\ href=" # Basura
([^"]+)"> # $0 = Path (relativo) de la serie Ej. "/tv/The_Wire/"
([^<]+) # $1 = Nombre de la serie Ej. Wire, The
(?:\ <font\ class="new-new">(New)!</font>)? # $2 = 'New' si la serie es nueva.
(?:\ <font\ class="new-updated">(Updated)!</font>)? # $3 = 'Updated' si la serie ha sido actualizada
<span\ style="margin-top:0px;"> # Basura
([0-9]+)\ episodes # $4 = Número de episodios Ej. 59
'''
Para activar la opción hay 2 opciones
- La opción re.VERBOSE (o reducido a re.X)
- Incluir el código (?x) al inicio del patrón (mi opción favorita ya que puedo documentarlo en el propio patrón).
Creo que sobran las palabras a la hora de elegir que opción hace el código más legible y mantenible.
Yo lo he usado en el canal de TVShack y la verdad es que he notado la diferencia...