Página 1 de 1

Primer intento del verificador automático de canales

Publicado: 11 Ene 2012, 00:35
por jesus
Me voy a dormir, antes de lo que esperaba porque hoy me vence el sueño.

Llevo unos días trabajando y subiendo al SVN lo que es el primer intento del verificador automático de canales. Básicamente es un script (python claro) que verificará uno por uno que los canales funcionan, y generará un XML en algún sitio que permitirá luego utilizarlo en pelisalacarta para avisarte.

De momento llevo:

1) Una función "test()" en unos cuantos canales (por orden alfabético, voy por "divxonline") que devuelve "True" si el canal funciona, y "False" en caso de error. La primera versión es muy básica, busca cualquier vídeo que tenga mirrors en la sección "Novedades" que todos los canales suelen tener y si encuentra alguno da por bueno el canal.

Código: Seleccionar todo

# Verificación automática de canales: Esta función debe devolver "True" si todo está ok en el canal.
def test():
    bien = True
    
    # mainlist
    mainlist_items = mainlist(Item())
    
    # Da por bueno el canal si alguno de los vídeos de "Novedades" devuelve mirrors
    episodios_items = novedades(mainlist_items[0])
    
    bien = False
    for episodio_item in episodios_items:
        mirrors = videos(episodio_item)
        if len(mirrors)>0:
            bien = True
            break
    
    return bien
2) Una función de prueba en mi "tester.py" que me dice al ejecutarla que canales están activos, cuales fallan y cuales no se verifican (los no genéricos por ejemplo). En un futuro esto generará el XML (o json o lo que sea), de momento es una prueba.

Código: Seleccionar todo

def test_one_channel(channelid):
    try:
        exec "from pelisalacarta.channels import "+channelid+" as channelmodule"
        resultado = channelmodule.test()
    except:
        resultado = False

    return resultado

def test_channels():
    
    para_probar = []
    para_probar.append("animeflv")
    para_probar.append("animeid")
    para_probar.append("buenaisla")
    para_probar.append("cineadicto")
    para_probar.append("cineblog01")
    para_probar.append("cinegratis")
    para_probar.append("cinetube")
    para_probar.append("cuevana")
    para_probar.append("dlmore")
    para_probar.append("delatv")
    para_probar.append("descargacineclasico")
    para_probar.append("descargapelis")
    para_probar.append("descarregadirecta")
    para_probar.append("discoverymx")
    para_probar.append("divxonline")
    
    funcionan = []
    no_funcionan = []
    no_probados = [ "asiateam", "casttv" ]

    # Verifica los canales
    for canal in para_probar:
        resultado = test_one_channel(canal)
        if resultado:
            funcionan.append(canal)
        else:
            no_funcionan.append(canal)
Se puede mejorar mucho la verificación de cada canal, por ejemplo en Cuevana hace algo más elaborado ya que verifica tanto películas como series. Lo ideal sería verificar todas las secciones, para detectar por ejemplo que en Cuevana no funciona el HD como pasaba hoy.

Código: Seleccionar todo

# Verificación automática de canales: Esta función debe devolver "True" si todo está ok en el canal.
def test():
    bien = True
    
    # mainlist
    mainlist_items = mainlist(Item())
    peliculas_items = peliculas(mainlist_items[0])

    # Comprueba primero las películas "Recientes" a ver si alguna tiene mirrors
    novedades_items = novedades(peliculas_items[1])
    
    bien = False
    for pelicula_item in novedades_items:
        mirrors = findvideos(item=pelicula_item)
        if len(mirrors)>0:
            bien = True
            break
    
    if not bien:
        return bien

    # Comprueba luego las series
    seriesmenu_items = seriesMenu(mainlist_items[1])
    series_items = series(seriesmenu_items[0])
    episodios_items = episodios(series_items[0])
    bien = False
    for episodio_item in episodios_items:
        mirrors = findvideos(item=episodio_item)
        if len(mirrors)>0:
            bien = True
            break
    
    return bien
En cualquier caso, antes de perfeccionar la verificación de los canales prefiero añadir un test simple a todos para tener más información cuando algo falla. Ya que si un canal falla, suele hacerlo completamente.

Código: Seleccionar todo

funcionan: 15
   animeflv
   animeid
   buenaisla
   cineadicto
   cineblog01
   cinegratis
   cinetube
   cuevana
   dlmore
   delatv
   descargacineclasico
   descargapelis
   descarregadirecta
   discoverymx
   divxonline
 no funcionan: 0
 no probados: 2
   asiateam
   casttv