Página 1 de 2

canal repelis

Publicado: 04 Sep 2015, 10:57
por robalo
El canal repelis es una iniciativa de kampanita. Voy a pegar aquí lo más importante que se ha posteado a partir del post viewtopic.php?f=24&t=4689&start=170#p26127 del hilo "Sugerencias (estaría bien que hubiera...) > Sugerencias de canales a agregar".
kampanita escribió:
Repelis.tv, estoy intentando crear el canal, por el momento voy lento pero ya tengo la parte de sacar las fichas...
Es un buen sitio, los enlaces no fallan.
Bueno, por si alguno os interesa, aquí esta el canal de Repelis.tv con lo básico.

Me falta hacer búsqueda por categorías y demás cosas... como digo de momento es básico, pero por si alguno os animáis a echarme una mano, que todavía estoy muy verde en este asunto ;) , llevo mirándolo desde hace unos días solo y esta siendo un poco durillo el python ;) .

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para Repelis - Por Kampanita-2015
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os, sys

from core import logger
from core import config
from core import scrapertools
from core.item import Item
from servers import servertools

__channel__ = "repelis"
__category__ = "F,L"
__type__ = "generic"
__title__ = "Repelis"
__language__ = "ES"

DEBUG = config.get_setting("debug")

def isGeneric():
    return True

def mainlist(item):
    logger.info("[repelis] mainlist")
    itemlist = []
    
    item.url = "http://www.repelis.tv/page/1"

    # Descarga la pagina
     
    data = scrapertools.cache_page(item.url)
              
    patron = '<li id="menu-item-[^<]+><a href="([^"]+)" title="([^"]+)">'
    matches = re.compile(patron,re.DOTALL).findall(data)
    scrapertools.printMatches(matches)
    
    for scrapedurl,scrapedtitle in matches:
        title = scrapedtitle
        url = urlparse.urljoin(item.url,scrapedurl)
        itemlist.append( Item(channel=__channel__, action="menupelis", title=title, fulltitle=title , url=url , thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg") )
    
    itemlist.append( Item(channel=__channel__, action="poranyo", title="Por Año", url="http://www.repelis.tv/fecha/2015", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    itemlist.append( Item(channel=__channel__, action="search", title="Buscar...", url="http://www.repelis.tv/search/?s=", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    return itemlist
 		
def menupelis(item):
   
    logger.info("[repelis] menupelis")
    logger.info("[repelis] "+item.url)
    
    itemlist = []
       
    data = scrapertools.cache_page(item.url)              
    		
    patron = '<a href="([^"]+)" title="([^"]+)"> <div class="poster".*?<img src="([^"]+)"'    
    matches = re.compile(patron,re.DOTALL).findall(data)    
    
    for scrapedurl,scrapedtitle,scrapedthumbnail in matches:
       title = scrapedtitle.replace("Ver Película","");
       title = title.replace("Online","");
       url = urlparse.urljoin(item.url,scrapedurl)
       thumbnail = urlparse.urljoin(item.url,scrapedthumbnail)
       itemlist.append( Item(channel=__channel__, action="verpeli", title=title, fulltitle=title , url=url , thumbnail=thumbnail) )
    
    if not "/page/" in item.url:
        item.url = item.url + "/page/0)"
    match = 0
    data=item.url
    patron='/page/([0-9])'
    matches = re.compile(patron,re.DOTALL).findall(data)    
    scrapertools.printMatches(matches)
    for smatch in matches:       
        match = int(smatch) + 1            
        item.url=item.url.replace(smatch,str(match))
    
    itemlist.append( Item(channel=__channel__, action="menupelis", title="Pag.Siguiente >>", fulltitle="Pag.Siguiente" , url=item.url ) )        
    return itemlist

    # Extrae las entradas
   
def verpeli(item):   
   
   logger.info("[repelis] menupelis")
   logger.info("[repelis] "+item.url)
    
   itemlist = []
            
   data = scrapertools.cache_page(item.url) 
      
   patron='<a rel="nofollow" href="([^"]+)".*?</a>.*?</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>'
   matches = re.compile(patron,re.DOTALL).findall(data)    
   scrapertools.printMatches(matches)
  
   for scrapedurl,scrapedlang,scrapedquality in matches:      
      url = urlparse.urljoin(item.url,scrapedurl)
      logger.info("[repelis] "+url)
      itemlist.append( Item(channel=__channel__, action="play" , title=scrapedlang+" "+scrapedquality , url=url, thumbnail=item.thumbnail, server="directo", folder=False))  
      
   return itemlist
   

def search(item, texto):
   logger.info("[repelis] "+item.url)
   item.url = 'http://www.repelis.tv/search/?s=%s' % (texto)
   logger.info("[repelis] "+item.url)
   
   data = scrapertools.cache_page(item.url)
      
   patron = '<p class="num-resultados">.*?<a href="([^"]+)" title="([^"]+)">.*?<img src="([^"]+)".*?<p class="text-list">(.*?)</p>'
   matches = re.compile(patron,re.DOTALL).findall(data)    
   scrapertools.printMatches(matches)
   itemlist = []
   
   for scrapedurl,scrapedtitle,scrapedthumbnail,scrapedinfo in matches:      
      title = scrapedtitle
      url = urlparse.urljoin(item.url,scrapedurl)
      thumbnail = urlparse.urljoin(item.url,scrapedthumbnail)
      logger.info("[repelis] "+url)
      itemlist.append( Item(channel=__channel__, action="verpeli", title=title, fulltitle=title , url=url , thumbnail=thumbnail) )
    
   return itemlist  
   

def poranyo(item):
   
    logger.info("[repelis] poranyo")
    logger.info("[repelis] "+item.url)
    
    itemlist = []
       
   data = scrapertools.cache_page(item.url)              
   
    patron = '<option value="([^"]+)">(.*?)</option>'    
    matches = re.compile(patron,re.DOTALL).findall(data)    
    scrapertools.printMatches(matches)
    for scrapedurl,scrapedtitle in matches:
       title = scrapedtitle
       url = urlparse.urljoin(item.url,scrapedurl)       
       itemlist.append( Item(channel=__channel__, action="menupelis", title=title, fulltitle=title , url=url ) )
            
    return itemlist
   
traxel escribió:
lo he probado y me salta error... :roll:
neno1978 escribió:
seguramente sea porque el

Código: Seleccionar todo

data = scrapertools.cache_page(item.url)
de la linea 135 esta mal "ubicao", lo "corres" un espacio y listo ;)
además, no reproduce nada del modo que lo tienes puesto. El caso de esta web es que de los servidores que tiene solo nos es util netu, es decir, no tenemos conectores para los otros y netu, viene en esta web acoplado a una url de la misma , que lo hace extraño e irreconocible par nosotros. prueba esto:

Código: Seleccionar todo

def verpeli(item):   
   
   logger.info("[repelis] menupelis")
   logger.info("[repelis] "+item.url)
    
   itemlist = []
            
   data = scrapertools.cache_page(item.url) 
      
   patron='<a rel="nofollow".*?</a>.*?</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?src="http://www.google.com/s2/favicons\?domain=(.*?)"'
   matches = re.compile(patron,re.DOTALL).findall(data)    
   scrapertools.printMatches(matches)
  
   for scrapedlang, scrapedquality, scrapedurl in matches:
      url = urlparse.urljoin(item.url,scrapedurl)
      logger.info("[repelis] "+url)
      

      itemlist.append( Item(channel=__channel__, action="play" ,  title=scrapedurl+" "+scrapedquality , url=url, thumbnail=item.thumbnail, folder=False))
      
   return itemlist

def play(item):
    logger.info("[repelis] play url="+item.url)
    


    
    itemlist = servertools.find_video_items(data=item.url)
    

    return itemlist
te pongo así la url como title para que veas lo que te digo, ya , desde ese punto lo puedes acoplar a tu gusto ;)
kampanita escribió:
Hola neno1978.

Si, la verdad es que voy poco a poco, me esta costando más de lo que pensaba, ademas he estado desarrollandolo en ratos libres en la ofi, y aqui estoy detras de un proxy, por lo que no puedo probar las cosas "bien" hasta llegar a casa. :)
Lo que estoy haciendo es coger el codigo fuente html y metermelo en la variable "data" para ir probando...
Ayer cuando lo probé en casa, ya vi que no funcionaba bien..., tengo que repasar el tema de la paginación y obtener también solo los enlaces de netu/openload porque los de domino ruso esos, no van, supongo que es que no hay echo conector para dichos servidores, o...algo...

Gracias por echarme un cable !! La verdad es que me había parecido más sencillo pero tiene su miga esto ;) ;)

PD: A ver si saco un rato este finde para terminarlo y que mas o menos funcione ...
neno1978 escribió:
Poco a poco, es cogerle el tranquillo , ya te puede contar robalo los dolores de cabeza q le di al principio...y los q le sigo dando :lol: :lol: lo q si creo es q de openload, tampoco tenemos conector :(
Y eso es todo de momento.

Ahora a seguir posteando por aquí para que se pueda seguir mejor el proyecto de kampanita y sea más fácil ayudar en lo que se pueda.

Re: canal repelis

Publicado: 04 Sep 2015, 11:03
por neno1978
madre mia master, cada dia me sorprendes más, :D da gusto encontrarse contigo(entiéndase sin matiz sexual alguno :lol: :lol: :lol: )
que ordenadito :lol: :lol: :lol:
Pues mira Kampanita el propio robalo me ha informado que el amigo DrZ3r0 ha creado servidor para ok ru :D :D
así que lo podemos utilizar. Grande DrZ3r0!! ;)
en el archivo adjunto te pongo los dos archivos que hay que pegar en server y listo..rulando ;)

Re: canal repelis

Publicado: 04 Sep 2015, 12:31
por kampanita
Genial !!

Gracias a todos.

Os dejo por aqui el fichero con las correcciones de neno1978.
Sigue pendiente meter el tema de las categorías, y que la paginación me funcione bien.
En cuanto saque otro rato libre, sigo a ver si lo dejo fino.

Re: canal repelis

Publicado: 04 Sep 2015, 13:04
por neno1978
mira campanita, yo el tema de las categorías lo pondría así :

Código: Seleccionar todo

def mainlist(item):
    logger.info("[repelis] mainlist")
    itemlist = []
    
    item.url = "http://www.repelis.tv/page/1"

    itemlist.append( Item(channel=__channel__, action="menupelis", title="Peliculas",  url="http://www.repelis.tv" , thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg") )
    itemlist.append( Item(channel=__channel__, action="menupelis", title="Estrenos",  url="http://www.repelis.tv/archivos/estrenos" , thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg") )
    
    itemlist.append( Item(channel=__channel__, action="poranyo", title="Por Año", url="http://www.repelis.tv/fecha/2015", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    itemlist.append( Item(channel=__channel__, action="menupelis", title="Proximos estrenos", url="http://www.repelis.tv/archivos/proximos-estrenos", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    itemlist.append( Item(channel=__channel__, action="search", title="Buscar...", url="http://www.repelis.tv/search/?s=", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    return itemlist
En lo referente a la paginación, a continuación te pongo una manera de hacerla, pero antes debemos modificar menupelis, la forma que tiene de coger las pelis , ya que con el actual , a cambiar de pagina , siempre nos saldrán repetidas el banner de arriba de la web con las cinco o cuatro películas de estreno.
A mi me gusta delimitar un espacio en el cual se abarquen todos los enlaces lo haría así:

Código: Seleccionar todo

patronenlaces= '<h1>.*?</h1>(.*?)</section>'
         matchesenlaces = re.compile(patronenlaces,re.DOTALL).findall(data)
donde patronenlaces seria el espacio de la web que contiene todos los enlaces, desde <h1>.*?</h1> hasta section
y , de ahí, sacamos los enlaces :

Código: Seleccionar todo

for bloque_enlaces in matchesenlaces:
    
        patron = '<a href="([^"]+)" title="([^"]+)"> <div class="poster".*?<img src="([^"]+)"'
        matches = re.compile(patron,re.DOTALL).findall(bloque_enlaces)
    
        for scrapedurl,scrapedtitle,scrapedthumbnail in matches:
            title = scrapedtitle.replace("Ver Película","");
            title = title.replace("Online","");
            url = urlparse.urljoin(item.url,scrapedurl)
            thumbnail = urlparse.urljoin(item.url,scrapedthumbnail)
            itemlist.append( Item(channel=__channel__, action="verpeli", title=title, fulltitle=title , url=url , thumbnail=thumbnail) )
Y ya estaria listo para la paginación, que seria:

Código: Seleccionar todo

## Paginación
    #<span class="current">2</span><a href="http://www.repelis.tv/page/3"
    
    # Si falla no muestra ">> Página siguiente"
    try:
        next_page = scrapertools.get_match(data,'<span class="current">\d+</span><a href="([^"]+)"')
        title= "[COLOR red]Pagina siguiente>>[/COLOR]"
        itemlist.append( Item(channel=__channel__, title=title, url=next_page, action="menupelis",  folder=True) )
    except: pass
En definitiva, los cambios serian estos , todos juntitos ;)

Código: Seleccionar todo

def mainlist(item):
    logger.info("[repelis] mainlist")
    itemlist = []
    
    item.url = "http://www.repelis.tv/page/1"

    itemlist.append( Item(channel=__channel__, action="menupelis", title="Peliculas",  url="http://www.repelis.tv" , thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg") )
    itemlist.append( Item(channel=__channel__, action="menupelis", title="Estrenos",  url="http://www.repelis.tv/archivos/estrenos" , thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg") )
    
    itemlist.append( Item(channel=__channel__, action="poranyo", title="Por Año", url="http://www.repelis.tv/fecha/2015", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    itemlist.append( Item(channel=__channel__, action="menupelis", title="Proximos estrenos", url="http://www.repelis.tv/archivos/proximos-estrenos", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    itemlist.append( Item(channel=__channel__, action="search", title="Buscar...", url="http://www.repelis.tv/search/?s=", thumbnail="http://s6.postimg.org/gninw2o9d/searchaquittub.jpg", fanart="http://s6.postimg.org/b4kpslglt/searchaquit.jpg"))
    return itemlist
 		
def menupelis(item):
   
    logger.info("[repelis] menupelis")
    logger.info("[repelis] "+item.url)
    
    itemlist = []
       
    data = scrapertools.cache_page(item.url)
    patronenlaces= '<h1>.*?</h1>(.*?)</section>'
    matchesenlaces = re.compile(patronenlaces,re.DOTALL).findall(data)
    
    for bloque_enlaces in matchesenlaces:
    
        patron = '<a href="([^"]+)" title="([^"]+)"> <div class="poster".*?<img src="([^"]+)"'
        matches = re.compile(patron,re.DOTALL).findall(bloque_enlaces)
    
        for scrapedurl,scrapedtitle,scrapedthumbnail in matches:
            title = scrapedtitle.replace("Ver Película","");
            title = title.replace("Online","");
            url = urlparse.urljoin(item.url,scrapedurl)
            thumbnail = urlparse.urljoin(item.url,scrapedthumbnail)
            itemlist.append( Item(channel=__channel__, action="verpeli", title=title, fulltitle=title , url=url , thumbnail=thumbnail) )
    
    ## Paginación
    #<span class="current">2</span><a href="http://www.repelis.tv/page/3"
    
    # Si falla no muestra ">> Página siguiente"
    try:
        next_page = scrapertools.get_match(data,'<span class="current">\d+</span><a href="([^"]+)"')
        title= "[COLOR red]Pagina siguiente>>[/COLOR]"
        itemlist.append( Item(channel=__channel__, title=title, url=next_page, action="menupelis",  folder=True) )
    except: pass
    return itemlist
;)

Re: canal repelis

Publicado: 04 Sep 2015, 13:42
por kampanita
Joer, perfecto!!

La verdad es que hasta el día de hoy nunca me había tocado pegarme con python, y voy mirando el código de otros canales, para hacerme un poco a la idea de cómo se hacen ciertas cosas...también tirando de manuales online.
Te agradezco un montón la ayuda, con tu ejemplo me queda mucho más claro cómo delimitar partes del html y trabajar con los datos más concretos y acotados...de manera más sencilla.

Para el tema de la paginación, me dí cuenta ayer al llegar a casa que salían los enlaces abajo... :oops: y no hacía falta montarse la paja mental que tenía yo ( además de que no estaba correcta ), era algo pendiente.

Pues me parece que no queda mucho más que hacer con esta, no ?

Subo todo y lo probaré esta tarde. ;)
PD: uhm, al estar detrás de un proxy, el plugin parece que "pasa" de los settings de xmbc para el proxy, pero vamos, yo entendía que de eso se encargaban solos urllib, urllib2 . En fin, que desde donde estoy mirando esto, mi kodi no accede a nada, y tengo que andar pegando el html en la variable en vez de llamar al get_cache... :)

Re: canal repelis

Publicado: 04 Sep 2015, 13:54
por robalo
Para el tema de las tildes prueba con

Código: Seleccionar todo

    data = scrapertools.cache_page(item.url).decode('iso-8859-1').encode('utf-8')

Re: canal repelis

Publicado: 04 Sep 2015, 14:07
por neno1978
Hombre, todo hecho, eso depende de como tu lo quieras"maquear" por ejemplo me pareció no ver nada plot en referencia a información de las pelis, o también hacer q muestre el servidor de cada enlace, eso ya pues , depende de como te lo quieras montar ;)

RepelisTV con soporte para Servidor : ok.ru

Publicado: 04 Sep 2015, 15:30
por kampanita
Gracias a neno1978 y DrZ3r0


PD: lo de la info y eso, la tengo sacada, tengo que mirar a ver como vá lo del plot ese......Empecé estudiando el código de cuevana... y aquitorrent ... ;)

Vale, ya veo donde tengo lo del plot ..
<div id="informacion" class="tab-pane">
<h2>Titulo en Español</h2>
<p>Abzurdah</p>
<h2>Titulo Original</h2>
<p>Abzurdah</p>
<h2>Año de Lanzamiento</h2>
<p>2015</p>
<h2>Generos</h2>
<p>Romance</p>
<h2>Idioma</h2>
<p>Latino</p>
<h2>Calidad</h2>
<p>DVD-Rip</p>
Ya lo voy pillando, ;) a ver si me pongo. De momento solo saco la "sinopsis"

Re: canal repelis

Publicado: 05 Sep 2015, 13:01
por kampanita
Acabado, creo yo.

- Arreglado que no se repitan las películas de la cabecera ( estrenos )
- Añadido canales Eróticos con control parental
- separadas las peliculas por "Todas / Ultimas Agregadas / Estrenos / Proximos Estrenos"
- añadidos fanarts/thumbnails
- añadido info "plot"

Creo que ya estaría terminado así, verdad ? Si me queda algo, comentadme...

Gracias a todos por vuestra ayuda.

Re: canal repelis

Publicado: 05 Sep 2015, 20:19
por robalo
Yo lo veo bastante bien, muchas gracias :)

Lo que no entiendo el tema de '- Añadido canales Eróticos con control parental'
No se muy bien a que te refieres.
En el archivo no veo nada que filtre. Y si se quiere filtrar vídeos de las listas para adultos lo veo complicado, en esa parte no hay info en la página que te indique que es erótica. Si te vas a "Por año->1930" no veo como ocultar los items.

Pero vamos, siempre se puede ocultar el canal.

Por lo demás, perfecto.