Página 1 de 2

Intento de hacer Canal "SOS"

Publicado: 28 Abr 2016, 21:46
por leylay
hola a todos, siempre he querido hacer un canal de pelis para pelisalacarta pero me acabo rindiendo y hoy me mosquee con kodi(y con el mundo XD), tengo empezado un modulo y no se que le pasa.

esto es lo que me sale en el log:

21:39:56 T:5860 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.SyntaxError'>
Error Contents: invalid syntax (sipeliculas.py, line 55)
Traceback (most recent call last):
File "C:\Users\Maria\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\default.py", line 31, in <module>
launcher.run()
File "C:\Users\Maria\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\platformcode\launcher.py", line 137, in run
exec "import channels."+item.channel+" as channel"
File "<string>", line 1, in <module>
File "C:\Users\Maria\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\channels\sipeliculas.py", line 55
itemlist.append( Item(channel=__channel__, action="peliculas" , title=title , url=url, thumbnail=thumbnail, plot=plot))
^
SyntaxError: invalid syntax
-->End of Python script error report<--
21:39:56 T:2512 ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://plugin.video.pelisalacarta/?eyJzdWJ0aXRsZSI6ICIiLCAiY29udGVudFNlYXNvbiI6ICIiLCAic2hvdyI6ICIiLCAiZHVyYXRpb24iOiAwLCAiY29udGVudFNlcmllTmFtZSI6ICIiLCAiZnVsbHRpdGxlIjogIlNpUGVsaWN1bGFzIiwgImhhc0NvbnRlbnREZXRhaWxzIjogImZhbHNlIiwgImNhdGVnb3J5IjogIm1vdiIsICJjb250ZW50RXBpc29kZU51bWJlciI6ICIiLCAidGl0bGUiOiAiU2lQZWxpY3VsYXMiLCAiZmFuYXJ0IjogIkM6XFxVc2Vyc1xcTWFyaWFcXEFwcERhdGFcXFJvYW1pbmdcXEtvZGlcXGFkZG9uc1xccGx1Z2luLnZpZGVvLnBlbGlzYWxhY2FydGFcXGZhbmFydC5qcGciLCAiZXh0cmEiOiAiIiwgImNvbnRlbnRDaGFubmVsIjogImxpc3QiLCAiZm9sZGVyIjogdHJ1ZSwgInR5cGUiOiAiZ2VuZXJpYyIsICJ0aHVtYm5haWwiOiAiIiwgImNoYW5uZWwiOiAic2lwZWxpY3VsYXMiLCAiY29udGVudFR5cGUiOiAiIiwgImNvbnRlbnRFcGlzb2RlVGl0bGUiOiAiIiwgInBsb3QiOiAiIiwgImNvbnRlbnRUaXRsZSI6ICIiLCAidmlld21vZGUiOiAibW92aWUiLCAicGFzc3dvcmQiOiAiIiwgImNvbnRlbnRQbG90IjogIiIsICJsYW5ndWFnZSI6ICJlcyIsICJ1cmwiOiAiIiwgImNvbnRlbnRUaHVtYm5haWwiOiAiIiwgInNlcnZlciI6ICIiLCAiY29udGV4dCI6ICIiLCAiYWN0aW9uIjogIm1haW5saXN0In0%3d
21:39:56 T:2512 ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.pelisalacarta/?eyJzdWJ0aXRsZSI6ICIiLCAiY29udGVudFNlYXNvbiI6ICIiLCAic2hvdyI6ICIiLCAiZHVyYXRpb24iOiAwLCAiY29udGVudFNlcmllTmFtZSI6ICIiLCAiZnVsbHRpdGxlIjogIlNpUGVsaWN1bGFzIiwgImhhc0NvbnRlbnREZXRhaWxzIjogImZhbHNlIiwgImNhdGVnb3J5IjogIm1vdiIsICJjb250ZW50RXBpc29kZU51bWJlciI6ICIiLCAidGl0bGUiOiAiU2lQZWxpY3VsYXMiLCAiZmFuYXJ0IjogIkM6XFxVc2Vyc1xcTWFyaWFcXEFwcERhdGFcXFJvYW1pbmdcXEtvZGlcXGFkZG9uc1xccGx1Z2luLnZpZGVvLnBlbGlzYWxhY2FydGFcXGZhbmFydC5qcGciLCAiZXh0cmEiOiAiIiwgImNvbnRlbnRDaGFubmVsIjogImxpc3QiLCAiZm9sZGVyIjogdHJ1ZSwgInR5cGUiOiAiZ2VuZXJpYyIsICJ0aHVtYm5haWwiOiAiIiwgImNoYW5uZWwiOiAic2lwZWxpY3VsYXMiLCAiY29udGVudFR5cGUiOiAiIiwgImNvbnRlbnRFcGlzb2RlVGl0bGUiOiAiIiwgInBsb3QiOiAiIiwgImNvbnRlbnRUaXRsZSI6ICIiLCAidmlld21vZGUiOiAibW92aWUiLCAicGFzc3dvcmQiOiAiIiwgImNvbnRlbnRQbG90IjogIiIsICJsYW5ndWFnZSI6ICJlcyIsICJ1cmwiOiAiIiwgImNvbnRlbnRUaHVtYm5haWwiOiAiIiwgInNlcnZlciI6ICIiLCAiY29udGV4dCI6ICIiLCAiYWN0aW9uIjogIm1haW5saXN0In0%3d) failed


ya he tratado y no se si estoy haciendo mal todo el canal(que no lo descarto)

segun mi poca experiencia el error esta aqui " itemlist.append( Item(channel=__channel__, action="peliculas" , title=title , url=url, thumbnail=thumbnail, plot=plot))"

tengo la sensacion que es en esta parte action="peliculas" donde creo que esta el fallo en la action pero vamos que es un hipotesis, tuve la idea loca de que quizas habia que definir con def peliculas, pero ni asi XD

os pongo un link del py, porque no me deja adjuntar el foro u.u
https://drive.google.com/file/d/0Bxp_K- ... sp=sharing

Re: Intento de hacer Canal "SOS"

Publicado: 28 Abr 2016, 22:23
por Cmos
leylay escribió:ya he tratado y no se si estoy haciendo mal todo el canal(que no lo descarto)

segun mi poca experiencia el error esta aqui " itemlist.append( Item(channel=__channel__, action="peliculas" , title=title , url=url, thumbnail=thumbnail, plot=plot))"

tengo la sensacion que es en esta parte action="peliculas" donde creo que esta el fallo en la action pero vamos que es un hipotesis, tuve la idea loca de que quizas habia que definir con def peliculas, pero ni asi XD
El error te lo da en la línea 55, la que tú mencionas, pero realmente la que falla es la anterior, ya que le falta un paréntesis de cierre. Para esas cosas ayuda mucho utilizar notepad++, o cualquier otro editor avanzado claro, ya que si señalas un paréntesis te marca si está cerrado o abierto. Corrigiendo lo anterior el canal funciona bien, así que ánimo que vas por el buen camino ;)

Re: Intento de hacer Canal "SOS"

Publicado: 28 Abr 2016, 22:32
por SeiTaN
El foro no te deja adjuntar ficheros determinados entre ellos el .py, lo que si puedes es zipearlo y adjuntarlo o directamente poner el codigo de tu .py dentro de las etiquetas

Código: Seleccionar todo

 [/ code]

A simple vista el error 

[b]',' or ')' expected (at line 54)[/b]

[code]if (DEBUG): logger.info("title=["+title+"], url=["+url+"], thumbnail=["+thumbnail+"])"
por

Código: Seleccionar todo

if (DEBUG): logger.info("title=["+title+"], url=["+url+"], thumbnail=["+thumbnail+"])")
Edito: Cmos que me has adelantado por la derecha :P

Re: Intento de hacer Canal "SOS"

Publicado: 29 Abr 2016, 01:39
por leylay
muchas gracias a los dos voy a probar a ver que sale, si no os parece mal puedo iros publicando por aqui si surgen mas dudas e inconvenientes¿? gracias de ante mano por vuestra paciencia.

Re: Intento de hacer Canal "SOS"

Publicado: 29 Abr 2016, 09:33
por kampanita
Al principio siempre cuesta un poco; pero al final acaba saliendo... ;)
Ánimo y a por ello.

Re: Intento de hacer Canal "SOS"

Publicado: 29 Abr 2016, 21:38
por leylay
aqui estoy de nuevo, con las torturas que paso, tengo un par de dudas(por ser sutil), bien he decidido ponerle color al menu (las secciones) espero no cause fallos de momento me deja entrar a todas y ver los titulos hasta ahi creo que voy bien, ahora tengo serios problemas con la seccion de GENEROS y AÑO(esta ultima en el def puse el nombre de AN omitiendo la Ñ porque si la memoria no me falla suele dar fallos), decidi hacerla la cosa es que no se como ver lo que hay dentro, es decir los titulos de esa carpeta, por otro lado la paginacion me ha dado una patada voladora que aun la siento...


En paginacion trate poniendo esto:

# Pag.
next_page_url = scrapertools.find_single_match(data,'<ul class="paginacion">(.*?)title="Siguiente')
if next_page_url!="":
itemlist.append( Item( channel=__channel__, action="fichas", title=">> Página siguiente", url=urlparse.urljoin(item.url,next_page_url), folder=True ) )

pero en cuanto a las carpetas como géneros y año estoy anulada total, y me falta también para que lea el link(powvideo, streaminto, etc...).

Os pongo la descarga de como voy, a ver que os parece, https://drive.google.com/folderview?id= ... sp=sharing

gracias de ante mano y espero os guste como esta quedando es mi primer canal para pelisalacarta, gracias por resolver mis dudas..

Re: Intento de hacer Canal "SOS"

Publicado: 29 Abr 2016, 23:11
por robalo
Wenas, una pequeña recomendación si se quiere :)

Usar todo el data sin acotarlo con '<ul class="lista-peliculas">(.*?)</div></li></ul><ul' para no eliminar la paginación y poder reutilazar funciones. Por ejemplo en Género (GN) y Año (AN) le puedes poner el 'action="CT"' y si te esmeras casi te quedas con una sóla para casi todas las opciones.

A La paginación le hace falta arañar un poco más :) Ánimo.

Re: Intento de hacer Canal "SOS"

Publicado: 29 Abr 2016, 23:35
por Cmos
Creo que donde te estás liando es con los nombres de las funciones, los "action". En primer lugar si te fijas tienes varias funciones iguales que podrías juntar en una sola (CT, PR y PA, también M12,M24 y M48) y así aclarar el panorama. Es más, toda la web utiliza el mismo diseño por lo que con una sola función podrías tenerlo despejado. Te pongo una función de ejemplo cogiendo tu función CT con un par de comentarios:

Código: Seleccionar todo

def peliculas(item):
    logger.info("pelisalacarta.channels.sipeliculas peliculas")
    itemlist = []
    data = scrapertools.cache_page(item.url)
    
    ### Aquí abajo tenías puesto data =, de forma que modificas el data completo de la página y luego no puedes buscar la paginacion dentro de data. Esta expresión regular es la buena, la utilizas en algunas funciones.
    ### 
    bloque = scrapertools.get_match(data,'<ul class="lista-peliculas">(.*?)<div class="derecha">')
    logger.info(bloque)
    
    ### Esta expresión regular deberías revisarla porque encuentra algunas coincidencias pero no todas ###
    patron = 'src="([^"]+)" alt="[^"]+"/></a><h3><a href="([^"]+)" title="[^"]+">[^"]+</a></h3><span>[^"]+</span><div class="ttip"><h5>([^<]+)</h5><p><span>([^<]+)</span>'
    matches = re.compile(patron,re.DOTALL).findall(bloque) 

    for scrapedthumbnail,scrapedurl,scrapedtitle,scrapedplot in matches:
        thumbnail = urlparse.urljoin(item.url, scrapedthumbnail)
        url = urlparse.urljoin(item.url,scrapedurl)
        title = scrapedtitle
        plot = scrapertools.htmlclean(scrapedplot)
        if (DEBUG): logger.info("title=["+title+"], url=["+url+"], thumbnail=["+thumbnail+"])")
        itemlist.append( Item(channel=__channel__, action="findvideos" , title=title , url=url, thumbnail=thumbnail, plot=plot))

   ### Te falla la expresión regular de next_page_url y el urlparse.join
   # Pag.
    next_page_url = scrapertools.find_single_match(data,'<ul class="paginacion">(.*?)title="Siguiente')
    #next_page_url = scrapertools.find_single_match(data,'<a href="([^"]+)" title="Siguiente página">')
    if next_page_url!="":
        itemlist.append( Item( channel=__channel__, action="peliculas", title=">> Página siguiente", url=urlparse.urljoin(item.url,next_page_url), folder=True ) )
        
    return itemlist

Luego tanto la sección de generos como la de años, al entrar a un título de esa carpeta te redirigen a la función "peliculas", pero no tienes ninguna que se llame así y de ahí el fallo. Si creas una función como la de arriba que se llame peliculas funcionaría sin problemas. Es decir, en total tendrías 4 funciones: mainlist, peliculas, GN y AN. Luego tendrías que añadirle una de findvideos para buscar los enlaces.

En realidad son 4 cosas, en cuanto las corrijas te funcionará sin problemas ;)

Edito: ayer me adelanté a SeiTaN y hoy me ha cogido la vez robalo :lol:

Re: Intento de hacer Canal "SOS"

Publicado: 01 May 2016, 21:23
por leylay
hola a todos de nuevo creo os he hecho caso espero esto os refirierais con quitarme un par de def de encima usando el mismo para varias cosas, ahora me he tropezado con dos problemas, uno es que ya logre que saliera SIGUIENTE(si mal no os entendi el problema estaba en que el bloque de peliculas a tomar, no incluía la paginacion, espero haberos captado bien.) pero al cambiar de pagina no me pilla toda la segunda pagina y ni hablar de la tercera, mire y en la pagina 2 por ejemplo, el "patron" cambian el "alt" por "title", hay alguna forma de salvarme de esto? t.t se me ocurrio quitar el title= por .*?= pero me sigue dando lo mismo...

ese es uno de mis problemas ahora el otro es findvideos algo hago mal, si hace el intento de abrirme la carpeta con lo diversos servidores, y he indagado en mas canales haber si doy con alguna cosa que me salte al igual que con la paginacion, pero todos los canales son distintos ( :oops: :oops: :oops: :? :? :? :? )

os dejo de nuevo el py, a ver que os parece, https://drive.google.com/file/d/0Bxp_K- ... sp=sharing

tengo la impresion de que no acabare nunca....

pd: Cmos diste en el clavo el action me tenia loquita. Muchas gracias por tu explicacion fuistes bastante claro y con codigo te pille mejor.

Re: Intento de hacer Canal "SOS"

Publicado: 01 May 2016, 22:55
por robalo
Si quieres código, te daremos código :)

Arañar un poco más en la paginación:

Código: Seleccionar todo

    next_page_url = scrapertools.find_single_match(data,'<li><a href="([^"]+)" title="Siguiente')
    if next_page_url!="":
        import inspect
        itemlist.append(
            Item(
                channel = __channel__,
                action = inspect.stack()[0][3],
                title = ">> Página siguiente",
                url = urlparse.urljoin( item.url, "/" + next_page_url )
            )
        )
Eso funciona, pero concentrate en lo que más te interesa :)