Página 1 de 3

Canales X Adaptados

Publicado: 04 Feb 2011, 10:36
por Chumy
Hola a tod@s

Dejo aqui el código de la adaptación de algunos canales:

[*]tupornotv

No funciona el buscador

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para tupornotv
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
import xbmc
import xbmcgui
import xbmcplugin
import scrapertools
import megavideo
import servertools
import binascii
import xbmctools
import config
from item import Item
import logger
import buscador

CHANNELNAME = "tupornotv"

# Esto permite su ejecución en modo emulado
try:
	pluginhandle = int( sys.argv[ 1 ] )
except:
	pluginhandle = ""

# Traza el inicio del canal
logger.info("[tupornotv.py] init")


def mainlist(params,url,category):
	logger.info("[tupornotv.py] mainlist")
	
	itemlist = getmainlist(params,url,category)
	xbmctools.renderItems(itemlist, params, url, category)

def getmainlist(params,url,category):
	logger.info("[tupornotv.py] getmainlist")

	itemlist = []
	itemlist.append( Item( channel=CHANNELNAME , title="Novedades" , action="novedades" , url="http://tuporno.tv/" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Categorias" , action="categorias" , url="http://tuporno.tv/" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Videos Recientes" , action="novedades" , url="http://tuporno.tv/videosRecientes/" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Top Videos (mas votados)" , action="masVotados" , url="http://tuporno.tv/topVideos/" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Nube de Tags" , action="categorias" , url="http://tuporno.tv/" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Buscar" , action="buscar" , url="http://tuporno.tv/" , folder=True ) )
	
	return itemlist

def masVotados(params,url,category):
	logger.info("[tupornotv.py] masVotadas")
	
	itemlist = getmasVotados(params,url,category)
	xbmctools.renderItems(itemlist, params, url, category)
	
def novedades(params,url,category):
	logger.info("[tupornotv.py] novedades")

	itemlist = getnovedades(params,url,category)
	xbmctools.renderItems(itemlist, params, url, category)

def categorias(params,url,category):
	logger.info("[tupornotv.py] categorias")

	itemlist = getcategorias(params,url,category)
	xbmctools.renderItems(itemlist, params, url, category)
	
def buscar(params,url,category):
	logger.info("[tupornotv.py] buscar")
	
	buscador.listar_busquedas(params,url,category)
	
def searchresults(params,Url,category):
	logger.info("[tupornotv.py] searchresults")
	
	buscador.salvar_busquedas(params,Url,category)
	url = "http://www.tuporno.tv/buscador/?str=%s" %Url
	itemlist = getsearchresults(params,url,category)
	xbmctools.renderItems(itemlist, params, url, category)
	
def nextsearchpage(params,url,category):
	logger.info("[tupornotv.py] nextsearchpage")
	
	itemlist = getsearchresults(params,url,category)
	xbmctools.renderItems(itemlist, params, url, category)	
	
def getmasVotados(params,url,category):
	logger.info("[tupornotv.py] getmasVotadas")
	
	itemlist = []
	itemlist.append( Item( channel=CHANNELNAME , title="Hoy" , action="novedades" , url="http://tuporno.tv/topVideos/todas/hoy" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Recientes" , action="novedades" , url="http://tuporno.tv/topVideos/todas/recientes" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Semana" , action="novedades" , url="http://tuporno.tv/topVideos/todas/semana" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Mes" , action="novedades" , url="http://tuporno.tv/topVideos/todas/mes" , folder=True ) )
	itemlist.append( Item( channel=CHANNELNAME , title="Año" , action="novedades" , url="http://tuporno.tv/topVideos/todas/ano" , folder=True ) )
	
	return itemlist	

def getsearchresults(params,url,category):
	logger.info("[tupornotv.py] getsearchresults")

	# ------------------------------------------------------
	# Descarga la página
	# ------------------------------------------------------
	data = scrapertools.cachePage(url)
	#logger.info(data)

	# ------------------------------------------------------
	# Extrae las entradas
	# ------------------------------------------------------
	# seccion busquedas
	'''
	<td align="left"><a href="/videos/cumpleanos_4"><img src="/imagenes/videos//c/u/cumpleanos_4_imagen2.jpg" alt="cumpleaños" border="0" /></a></td>
    <td width="100%" rowspan="2" valign="top" class="datos">
	<h2><a href="/videos/cumpleanos_4">cumpleaños</a> <span class="tmp">1:53</span></h2>
	'''
	
	patronvideos = '<td align="left"><a href="(.videos[^"]+)"><img src="([^"]+)" alt="([^"]+)".*?</a>.*?'

	patronvideos += '<span class="tmp">([^<]+)</span>'

	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	if DEBUG: scrapertools.printMatches(matches)

	itemlist = []
	for match in matches:
		# Titulo
		scrapedtitle = match[2].replace("<b>","").replace("</b>","")
		scrapedurl = urlparse.urljoin(url,match[0])
		scrapedthumbnail = urlparse.urljoin(url,match[1])
		scrapedplot = ""

		duracion = match[3].replace("Duración: ","")

		print duracion
		logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

		# Añade al listado de XBMC
		itemlist.append( Item(channel=CHANNELNAME, action="play", title=scrapedtitle , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=False , duration=duracion) )


	
	# ------------------------------------------------------
	# Extrae el paginador
	# ------------------------------------------------------
	#<a href="/buscador/?str=pillada&desde=2" class="enlace_si">Siguiente </a>
	
	patronvideos  = '<a href="([^"]+)" class="enlace_si">Siguiente </a>'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)

	if len(matches)>0:
		scrapedurl = urlparse.urljoin(url,matches[0])
		itemlist.append( Item(channel=CHANNELNAME, action="nextsearchpage", title="!Next page" , url=scrapedurl , folder=True) )
	
	
	return itemlist


def getnovedades(params,url,category):
	logger.info("[tupornotv.py] getnovedades")

	# ------------------------------------------------------
	# Descarga la página
	# ------------------------------------------------------
	data = scrapertools.cachePage(url)
	#logger.info(data)

	# ------------------------------------------------------
	# Extrae las entradas
	# ------------------------------------------------------
	# seccion novedades
	'''
	<table border="0" cellpadding="0" cellspacing="0" ><tr><td align="center" width="100%" valign="top" height="160px">
	<a href="/videos/cogiendo-en-el-bosque"><img src="imagenes/videos//c/o/cogiendo-en-el-bosque_imagen2.jpg" alt="Cogiendo en el bosque" border="0" align="top" /></a>
	<h2><a href="/videos/cogiendo-en-el-bosque">Cogiendo en el bosque</a></h2>
	'''
	patronvideos  = '(?:<table border="0" cellpadding="0" cellspacing="0" ><tr><td align="center" width="100." valign="top" height="160px">|<td align="center" valign="top" width="25%">)[^<]+'
	patronvideos += '<a href="(.videos[^"]+)"><img src="([^"]+)" alt="([^"]+)"(.*?)</td>'

	

	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	if DEBUG: scrapertools.printMatches(matches)

	itemlist = []
	for match in matches:
		# Titulo
		scrapedtitle = match[2]
		scrapedurl = urlparse.urljoin(url,match[0])
		scrapedthumbnail = urlparse.urljoin(url,match[1])
		scrapedplot = ""

		try:

			duracion = re.compile('Duración: (.+?)</span>').findall(match[3])[0]

		except:

			try:

				duracion = re.compile('\((.+?)\)<br').findall(match[3])[0]

			except:

				duracion = ""
		logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
		print duracion
		# Añade al listado de XBMC
		itemlist.append( Item(channel=CHANNELNAME, action="play", title=scrapedtitle , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=False , duration=duracion) )


	
	# ------------------------------------------------------
	# Extrae el paginador
	# ------------------------------------------------------
	#<a href="/topVideos/todas/mes/2/" class="enlace_si">Siguiente </a>
	patronvideos  = '<a href="([^"]+)" class="enlace_si">Siguiente </a>'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)

	if len(matches)>0:
		scrapedurl = urlparse.urljoin(url,matches[0])
		itemlist.append( Item(channel=CHANNELNAME, action="novedades", title="!Next page" , url=scrapedurl , folder=True) )
	
	
	return itemlist

def getcategorias(params,url,category):
	logger.info("[tupornotv.py] getcategorias")

	# ------------------------------------------------------
	# Descarga la página
	# ------------------------------------------------------
	data = scrapertools.cachePage(url)
	#logger.info(data)
	title = urllib.unquote_plus( params.get("title") )
	# ------------------------------------------------------
	# Extrae las entradas
	# ------------------------------------------------------
	# seccion categorias
	# Patron de las entradas
	if title == "Categorias":
		patronvideos  = '<li><a href="([^"]+)"'      # URL
		patronvideos += '>([^<]+)</a></li>'          # TITULO
	else:
		patronvideos  = '<a href="(.tags[^"]+)"'     # URL
		patronvideos += ' class="[^"]+">([^<]+)</a>'    # TITULO
	
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	if DEBUG: scrapertools.printMatches(matches)

	itemlist = []
	for match in matches:
		if match[1] in ["SexShop","Videochat","Videoclub"]:
			continue
		# Titulo
		scrapedtitle = match[1]
		scrapedurl = urlparse.urljoin(url,match[0])
		scrapedthumbnail = ""
		scrapedplot = ""
		logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

		# Añade al listado de XBMC
		itemlist.append( Item(channel=CHANNELNAME, action="novedades", title=scrapedtitle , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=True) )
	return itemlist

def play(params,url,category):
	logger.info("[tupornotv.py] play")

	title = urllib.unquote_plus( params.get("title") )
	thumbnail = urllib.unquote_plus( params.get("thumbnail") )
	plot = unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )
	server = "Directo"
	
	#http://tuporno.tv/videos/adolescentes-trio-follando-18
	#http://149.12.64.129/videoscodiH264/a/d/adolescentes-trio-follando-18.flv
	
	trozos = url.split("/")
	id = trozos[len(trozos)-1]
	url = "http://149.12.64.129/videoscodiH264/"+id[0:1]+"/"+id[1:2]+"/"+id+".flv"
	logger.info("url="+url)

	xbmctools.playvideo(CHANNELNAME,server,url,category,title,thumbnail,plot)

def addfolder(nombre,url,accion):
	logger.info('[tupornotv.py] addfolder( "'+nombre+'" , "' + url + '" , "'+accion+'")"')
	listitem = xbmcgui.ListItem( nombre , iconImage="DefaultFolder.png")
	itemurl = '%s?channel=tupornotv&action=%s&category=%s&url=%s' % ( sys.argv[ 0 ] , accion , urllib.quote_plus(nombre) , url )
	xbmcplugin.addDirectoryItem( handle = int(sys.argv[ 1 ]), url = itemurl , listitem=listitem, isFolder=True)

def addvideo(nombre,url,category,server):
	logger.info('[tupornotv.py] addvideo( "'+nombre+'" , "' + url + '" , "'+server+'")"')
	listitem = xbmcgui.ListItem( nombre, iconImage="DefaultVideo.png" )
	listitem.setInfo( "video", { "Title" : nombre, "Plot" : nombre } )
	itemurl = '%s?channel=tupornotv&action=play&category=%s&url=%s&server=%s' % ( sys.argv[ 0 ] , category , url , server )
	xbmcplugin.addDirectoryItem( handle=int(sys.argv[ 1 ]), url=itemurl, listitem=listitem, isFolder=False)

def addthumbnailfolder( scrapedtitle , scrapedurl , scrapedthumbnail , accion ):
	logger.info('[tupornotv.py] addthumbnailfolder( "'+scrapedtitle+'" , "' + scrapedurl + '" , "'+scrapedthumbnail+'" , "'+accion+'")"')
	listitem = xbmcgui.ListItem( scrapedtitle, iconImage="DefaultFolder.png", thumbnailImage=scrapedthumbnail )
	itemurl = '%s?channel=tupornotv&action=%s&category=%s&url=%s' % ( sys.argv[ 0 ] , accion , urllib.quote_plus( scrapedtitle ) , urllib.quote_plus( scrapedurl ) )
	xbmcplugin.addDirectoryItem( handle = int(sys.argv[ 1 ]), url = itemurl , listitem=listitem, isFolder=True)
[*]myhentaitube

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para myhentaitube
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
import scrapertools
import megavideo
import servertools
import binascii
import config
from item import Item
import logger

CHANNELNAME = "myhentaitube"

# Traza el inicio del canal
logger.info("[myhentaitube.py] init")

DEBUG = True

def mainlist(item):
    logger.info("[myhentaitube.py] mainlist")
    
    itemlist = getmainlist(item)
    #xbmctools.renderItems(itemlist, params, url, category)
    return itemlist

def getmainlist(item):
    logger.info("[myhentaitube.py] getmainlist")

    itemlist = []
    itemlist.append( Item( channel=CHANNELNAME , title="Novedades" , action="novedades" , url="http://myhentaitube.com/" , folder=True ) )
    
    return itemlist

def novedades(item):
    logger.info("[myhentaitube.py] novedades")

    itemlist = getnovedades(item)
    #xbmctools.renderItems(itemlist, params, url, category)
    return itemlist

def getnovedades(item):
    logger.info("[myhentaitube.py] getnovedades")

    # Descarga la pagina
    data = scrapertools.cachePage(item.url)
    #logger.info(data)

    # Extrae las entradas
    # seccion novedades
    '''
        <a href="/index.php?option=com_content&view=article&id=29:ai-shimai-hentai-movie-anime-&catid=1:movies&Itemid=2">
        <img src="/images/stories/ai_shimai_dvd copy.gif" border="0" />
        </a>
    '''

    #patronvideos  = '<p style="text-align: center;">.*?'
    patronvideos = '<a href="(/index.php[^"]+view=article[^"]+id=[^:]([^"]+)catid=1+[^"]+)">[^<]*?'
    patronvideos += '<img src="([^"]+)".*?</a>'

    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    if DEBUG: scrapertools.printMatches(matches)

    itemlist = []
    for match in matches:
        # Titulo
        scrapedtitle = match[1]
        scrapedurl = urlparse.urljoin(item.url,match[0])
        scrapedthumbnail = urlparse.urljoin(item.url,match[2]).replace(" ", "%20")
        scrapedplot = scrapertools.htmlclean(match[1].strip())
        if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

        # Añade al listado de XBMC
        itemlist.append( Item(channel=CHANNELNAME, action="capitulos", title=scrapedtitle , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=True) )

    # Extrae el paginador
    patronvideos  = '<a href="(\/index.php\?pageNum[^"]+)">[^<]+</a></span>'
    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    scrapertools.printMatches(matches)

    if len(matches)>0:
        scrapedurl = urlparse.urljoin(item.url,matches[0])
        itemlist.append( Item(channel=CHANNELNAME, action="novedades", title="!Página siguiente" , url=scrapedurl , folder=True) )

    return itemlist

def capitulos(item):
    logger.info("[myhentaitube.py] capitulos")
    
    itemlist = getcapitulos(item)
    #xbmctools.renderItems(itemlist, params, url, category)
    return itemlist

def getcapitulos(item):
    logger.info("[myhentaitube.py] getcapitulos")

    title = urllib.unquote_plus( item.title )
    thumbnail = urllib.unquote_plus( item.thumbnail )
    plot = urllib.unquote_plus( item.plot )

    # Descarga la pagina
    data = scrapertools.cachePage(item.url)
    #logger.info(data)
    
    # Busca el argumento
    patronvideos  = '<div class="ficha_des">(.*?)</div>'
    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    if len(matches)>0:
        plot = scrapertools.htmlclean(matches[0])
        logger.info("plot actualizado en detalle");
    else:
        logger.info("plot no actualizado en detalle");
    
    # Busca los enlaces a los mirrors, o a los capitulos de las series...
    '''
    <h3 style="text-align: center;">
    <a href="/index.php?option=com_content&view=article&id=8&Itemid=2">CAPITULO 1
    </a></h3>
    '''
    patronvideos = '<a href="(/index.php[^"]+view=article[^"]+id=[^"]+)">([^<]+)<'
    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    
    itemlist = listURL(matches,item.url)
    #~ for match in matches:
        #~ # Titulo
        #~ scrapedtitle = match[1]
        #~ scrapedurl = urlparse.urljoin(item.url,match[0])
        #~ scrapedthumbnail = thumbnail
        #~ scrapedplot = plot
        #~ 
        #~ if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
#~ 
        #~ # Añade al listado de XBMC
        #~ itemlist.append( Item(channel=CHANNELNAME, action="play", title=scrapedtitle , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=False) )

    return itemlist

def listURL(matches, url):
	logger.info("[myhentaitube.py] detail")
    
	itemlist=[]
	for match in matches:
		# Titulo
		scrapedtitle = match[1]
		scrapedurl = urlparse.urljoin(url,match[0])
	
		# Descarga la pagina
		data = scrapertools.cachePage(scrapedurl)              
		patron = "QT_WriteOBJECT_XHTML\('([^']+)'"
		matchesVideos = re.compile(patron,re.DOTALL).findall(data)
		if len(matchesVideos)>0:
			scrapedurl = matchesVideos[0]
			server="Directo"
		# Añade al listado de XBMC
		itemlist.append( Item(channel=CHANNELNAME, action="play", title=scrapedtitle , url=scrapedurl , server=server,  folder=False) )
		
	return itemlist
    
[*]mocosoftx

Solo funciona las novedades

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para mocosoftx
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
import scrapertools
import megavideo
import servertools
import binascii
import config
import logger
from item import Item

CHANNELNAME = "mocosoftx"
USER = config.getSetting("privateuser")
PASSWORD = config.getSetting("privatepassword")
LOGINURL = "http://mocosoftx.com/foro/login2/?user=" + USER + "&passwrd=" + PASSWORD + "&cookieneverexp=on&hash_passwrd="
DEBUG=True

# Esto permite su ejecución en modo emulado
try:
   pluginhandle = int( sys.argv[ 1 ] )
except:
   pluginhandle = ""

# Traza el inicio del canal
logger.info("[mocosoftx.py] init")

DEBUG = True
def GetSessionID():
        # Descarga la página
        data = scrapertools.cachePage(LOGINURL)
        #logger.info(data)
        plogin = '<a href="([^"]+)">ingresa</a>'
        plogout = '<a href="http://mocosoftx.com/foro/logout/?([^"]+)"><span>'
        matches = re.compile(plogout,re.DOTALL).findall(data)

        if len(matches)>0:
                return str(matches[0])
        else:
                return ''

def mainlist(item):
	logger.info("[mocosoftx.py] mainlist")
	itemlist = []
	sid = GetSessionID()
	# Añade al listado de XBMC
	#xbmctools.addnewfolder( CHANNELNAME , "Novedades" , category , "Novedades"            ,"http://mocosoftx.com/foro/index.php"+sid,"","")
	itemlist.append( Item( channel=CHANNELNAME , title="Novedades" , action="Novedades" , url="http://mocosoftx.com/foro/index.php"+sid , folder=True ) )
	if sid=='':
		itemlist.append( Item( channel=CHANNELNAME , title="Listado Completo" , action="FullList" , url="http://www.mocosoftx.com/foro/index.php?action=.xml;type=rss2;limit=500;board=14" , folder=True ) )
		#xbmctools.addnewfolder( CHANNELNAME , "FullList"   , category , "Listado Completo" ,"http://www.mocosoftx.com/foro/index.php?action=.xml;type=rss2;limit=500;board=14","","")
	else:
		itemlist.append( Item( channel=CHANNELNAME , title="Listado Completo" , action="FullList" , url="http://www.mocosoftx.com/foro/index.php"+sid+";action=.xml;type=rss2;limit=500;board=14" , folder=True ) )
		#xbmctools.addnewfolder( CHANNELNAME , "FullList"   , category , "Listado Completo" ,"http://www.mocosoftx.com/foro/index.php"+sid+";action=.xml;type=rss2;limit=500;board=14","","")

	# Propiedades
	#xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category=category )
	#xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
	#xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
	return itemlist

def Novedades(item):
	logger.info("[mocosoftx.py] Novedades")
	itemlist = []
	# Descarga la página
	data = scrapertools.cachePage(item.url)
	#logger.info(data)

	# Extrae las entradas (carpetas)
	patron  = '<td class="sp_middle sp_regular_padding sp_fullwidth">'
	patron += '<a href="(http://mocosoftx.com/foro/peliculas-xxx-online-\(completas\)/[^/]+/)[^"]+"'
	patron += '>([^<]+)</a>'
	patron += '.*?<img src="([^"]+)" alt="'
	matches = re.compile(patron,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)
	for match in matches:
		# Atributos
		scrapedtitle = match[1]
		scrapedurl = match[0]
		scrapedthumbnail = match[2]
		scrapedplot = ""
		# if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
		# Añade al listado de XBMC
		itemlist.append( Item( channel=CHANNELNAME , title=scrapedtitle , action="detail" , url=scrapedurl , plot=scrapedplot, thumbnail=scrapedthumbnail, folder=True ) )
		#xbmctools.addnewfolder( CHANNELNAME , "detail" , category , scrapedtitle , scrapedurl , scrapedthumbnail, scrapedplot )
	# Extrae la marca de siguiente página
	patronvideos = '\[<b>[^<]+</b>\] <a class="navPages" href="([^"]+)">'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)

	if len(matches)>0:
		scrapedtitle = "Página siguiente"
		scrapedurl = urlparse.urljoin(item.url,matches[0])
		scrapedthumbnail = ""
		scrapedplot = ""
		itemlist.append( Item( channel=CHANNELNAME , title=scrapedtitle , action="Novedades" , url=scrapedurl , plot=scrapedplot, thumbnail=scrapedthumbnail, folder=True ) )
		#xbmctools.addnewfolder( CHANNELNAME , "Novedades" , category , scrapedtitle , scrapedurl , scrapedthumbnail, scrapedplot )

	# Propiedades
	#~ xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category=category )
	#~ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
	#~ xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
	return itemlist
                                                                                         
def FullList(item):
	logger.info("[mocosoftx.py] FullList")
	itemlist = []
	url = item.url

	if url=="":
	  url = "http://www.mocosoftx.com/foro/index.php?action=.xml;type=rss2;limit=500;board=14"

	# Descarga la página
	data = scrapertools.cachePage(url)
	#logger.info(data)

	# Extrae las entradas (carpetas)
	patron      = '<item>(.*?)</item>'
	matchesITEM = re.compile(patron,re.DOTALL).findall(data)
	#scrapertools.printMatches(matchesITEM[0])
	patronvideos = '<title>(.*?)</title><link>(.*?)</link>.*?'
	#patronvideos += '<\!\[CDATA\[<a href="[^"]+" target="_blank"><img src="([^"]+)".*?'
	for match in matchesITEM:
		matches = re.compile(patronvideos,re.DOTALL).findall(match)
		#print len(matches)
		scrapertools.printMatches(matches)
		
		for match2 in matches:
			# Titulo
			scrapedtitle = match2[0]
			scrapedtitle = scrapedtitle.replace("<![CDATA[","")
			scrapedtitle = scrapedtitle.replace("]]>","")
			# URL
			scrapedurl = match
			# Thumbnail

			scrapedthumbnail = match2[1]

			# Argumento
			scrapedplot = ""

			# Depuracion
			if (DEBUG):
					logger.info("scrapedtitle="+scrapedtitle)
					logger.info("scrapedurl="+scrapedurl)
					logger.info("scrapedthumbnail="+scrapedthumbnail)

			# Añade al listado de XBMC
			itemlist.append( Item( channel=CHANNELNAME , title=scrapedtitle , action="detail" , url=scrapedurl , plot=scrapedplot, thumbnail=scrapedthumbnail, folder=True ) )
			#xbmctools.addnewfolder( CHANNELNAME , "detail" , category , scrapedtitle , scrapedurl , scrapedthumbnail , scrapedplot)

	# Label (top-right)...
	#xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )
	# Disable sorting...
	#xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )
	# End of directory...
	#xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )
	return itemlist

def detail(item):
	logger.info("[mocosoftx.py] detail")
	itemlist = []
	url = item.url
	title = urllib.unquote_plus( item.title )
	thumbnail = urllib.unquote_plus( item.thumbnail )
	#plot = unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )
	if "CDATA" in url:
		data = url
		patronthumb = '<img src="([^"]+)"'
		matches = re.compile(patronthumb,re.DOTALL).findall(data)
		scrapertools.printMatches(matches)
	else:
		#Descarga la página
		sid = GetSessionID()
		data = scrapertools.cachePage(url+sid)
		patronthumb = '<img src="([^"]+)" alt="" border="0" />[</a>|<br />]+'
		matches = re.compile(patronthumb,re.DOTALL).findall(data)
		scrapertools.printMatches(matches)
	#logger.info(data)
	#addnewvideo( canal , accion , category , server , title , url , thumbnail, plot ):
	# ------------------------------------------------------------------------------------
	# Busca los enlaces a los videos
	# ------------------------------------------------------------------------------------
	listavideos = servertools.findvideos(data)
	c=0
	for video in listavideos:
		c=c+1
		try:
			imagen = matches[c]
		except:
			imagen = thumbnail
		itemlist.append( Item( channel=CHANNELNAME , title=title+" - ["+video[2]+"]" , action="play" ,  server= video[2], url=video[1] , plot=item.plot, folder=True ) )
        #xbmctools.addnewvideo( CHANNELNAME ,"play",category,video[2], title+" - ["+video[2]+"]" , video[1] , imagen, plot )
   # ------------------------------------------------------------------------------------

   # Label (top-right)...
   #xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )

   # Disable sorting...
   #xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )

   # End of directory...
   #xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )
	return itemlist

def play(params,url,category):
   logger.info("[mocosoftx.py] play")

   title = ""#unicode( xbmc.getInfoLabel( "ListItem.Title" ), "utf-8" )
   thumbnail = ""#urllib.unquote_plus( params.get("thumbnail") )
   plot = "" #unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )
   server = params["server"]


   xbmctools.playvideo(CHANNELNAME,server,url,category,title,thumbnail,plot)

Para habilitar estos canales añadir al archivo de configuración pelisalacarta.conf

Código: Seleccionar todo

# Adult Mode

enableadultmode=true
Y en el channelselector.py

Cambiad el atributo xbmc a generic del listado

Código: Seleccionar todo

    if config.getSetting("enableadultmode") == "true":

        channelslist.append([ "PeliculasEroticas" , "peliculaseroticas" , "" , "ES" , "F" , "xbmc"  ])

        channelslist.append([ "MocosoftX"         , "mocosoftx" , "" , "ES" , "F" , "generic"  ])

        channelslist.append([ "Anifenix.com"      , "anifenix" , "" , "ES" , "F" , "xbmc"  ])

        channelslist.append([ "tuporno.tv"        , "tupornotv" , "" , "ES" , "F" , "generic"  ])

        channelslist.append([ "myhentaitube"      , "myhentaitube" , "" , "ES" , "F" , "generic"  ])

        channelslist.append([ "tubehentai"        , "tubehentai" , "" , "ES" , "F" , "xbmc"  ])

        channelslist.append([ "xhamster"          , "xhamster" , "" , "ES" , "F" , "xbmc"  ])
Un saludo

Re: Canales X Adaptados

Publicado: 06 Feb 2011, 11:58
por jesus
Gracias por estos aportes, voy a tener que hacer una nueva versión de pelisalacarta para wiimc sólo con tus mejoras :)

El paso de un canal a genérico es más sencillo incluso, ya que no hay que darle código específico para xbmc.

Si añades una función "isGeneric" que devuelva "true", el XBMC sabe cómo manejarlo.

De todas formas en cuanto publique la 3.0 de pelisalacarta actualizaré los tutoriales sobre cómo añadir canales.

Re: Canales X Adaptados

Publicado: 08 Feb 2011, 05:17
por Dalim
Buenas.

Pimero dar las gracias por los plugins para wii, la blanquita hecha humo.

Y segundo comentar que nunca habia trabajo con python (cosas de la vida), asi que aprovechando que el canal de tuporno.tv que posteo Chumy no me iba, y no sabia por que, me he puesto a retocarlo. El canal ahora si me funciona, he cambiado mas la estructura que otra cosa y he recortado algunos pasos. Lo unico que no esta operativo son las Busquedas.

Cambios:
Ahora al lado del titulo sale la duracion del clip (daba un error por una tilde) .
Se ha modificado la estructura de carpetas, mas parecida a la original y totalmente operativa.
Pequeños cambios y ajustes partiendo del codigo original

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para tupornotv
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
import scrapertools
import megavideo
import servertools
import binascii
import config
from item import Item
import logger
import buscador

CHANNELNAME = "tupornotv"

# Esto permite su ejecución en modo emulado
try:
   pluginhandle = int( sys.argv[ 1 ] )
except:
   pluginhandle = ""

# Traza el inicio del canal
logger.info("[tupornotv.py] init")


def mainlist(item):
   logger.info("[tupornotv.py] mainlist")

   itemlist = []
   itemlist.append( Item( channel=CHANNELNAME , title="Pendientes de Votación" , action="novedades" , url="http://tuporno.tv/pendientes") )
   itemlist.append( Item( channel=CHANNELNAME , title="Populares" , action="masVistos" , url="http://tuporno.tv/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Categorias" , action="categorias" , url="http://tuporno.tv/categorias/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Videos Recientes" , action="novedades" , url="http://tuporno.tv/videosRecientes/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Top Videos (mas votados)" , action="masVotados" , url="http://tuporno.tv/topVideos/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Nube de Tags" , action="categorias" , url="http://tuporno.tv/tags/" , folder=True ) )
   #itemlist.append( Item( channel=CHANNELNAME , title="Buscar" , action="buscar" , url="http://tuporno.tv/" , folder=True ) )
   
   return itemlist

def novedades(item):
   logger.info("[tupornotv.py] novedades")
   url = item.url
   # ------------------------------------------------------
   # Descarga la página
   # ------------------------------------------------------
   data = scrapertools.cachePage(url)
   #logger.info(data)

   # ------------------------------------------------------
   # Extrae las entradas
   # ------------------------------------------------------
   # seccion novedades
   '''
   <table border="0" cellpadding="0" cellspacing="0" ><tr><td align="center" width="100%" valign="top" height="160px">
   <a href="/videos/cogiendo-en-el-bosque"><img src="imagenes/videos//c/o/cogiendo-en-el-bosque_imagen2.jpg" alt="Cogiendo en el bosque" border="0" align="top" /></a>
   <h2><a href="/videos/cogiendo-en-el-bosque">Cogiendo en el bosque</a></h2>
   '''
   patronvideos  = '(?:<table border="0" cellpadding="0" cellspacing="0" ><tr><td align="center" width="100." valign="top" height="160px">|<td align="center" valign="top" width="25%">)[^<]+'
   patronvideos += '<a href="(.videos[^"]+)"><img src="([^"]+)" alt="([^"]+)"(.*?)</td>'

   matches = re.compile(patronvideos,re.DOTALL).findall(data)
   #if DEBUG: scrapertools.printMatches(matches) 

   itemlist = []
   for match in matches:
      # Titulo
      scrapedtitle = match[2]
      scrapedurl = urlparse.urljoin(url,match[0])
      scrapedthumbnail = urlparse.urljoin(url,match[1])
      scrapedplot = ""
      try:

         duracion = re.compile('n: (.+?)</span>').findall(match[3])[0]

      except:

         try:

            duracion = re.compile('\((.+?)\)<br').findall(match[3])[0]

         except:

            duracion = ""
            
      logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"], duracion=["+duracion+"]")
      # Añade al listado de XBMC
      trozos = scrapedurl.split("/")
      id = trozos[len(trozos)-1]
      videos = "http://149.12.64.129/videoscodiH264/"+id[0:1]+"/"+id[1:2]+"/"+id+".flv"
      itemlist.append( Item(channel=CHANNELNAME, action="play", title=scrapedtitle+" ["+duracion+"]" , url=videos , thumbnail=scrapedthumbnail , plot=scrapedplot, server="Directo", folder=False) )


   
   # ------------------------------------------------------
   # Extrae el paginador
   # ------------------------------------------------------
   #<a href="/topVideos/todas/mes/2/" class="enlace_si">Siguiente </a>
   patronvideos  = '<a href="([^"]+)" class="enlace_si">Siguiente </a>'
   matches = re.compile(patronvideos,re.DOTALL).findall(data)
   scrapertools.printMatches(matches)

   if len(matches)>0:
      scrapedurl = urlparse.urljoin(url,matches[0])
      itemlist.append( Item(channel=CHANNELNAME, action="novedades", title="!Next page" , url=scrapedurl , folder=True) )
   
   
   return itemlist
def masVistos(item):
   logger.info("[tupornotv.py] masVistos")
   
   itemlist = []
   itemlist.append( Item( channel=CHANNELNAME , title="Hoy" , action="novedades" , url="http://tuporno.tv/hoy" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Recientes" , action="novedades" , url="http://tuporno.tv/recientes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Semana" , action="novedades" , url="http://tuporno.tv/semana" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Mes" , action="novedades" , url="http://tuporno.tv/mes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Año" , action="novedades" , url="http://tuporno.tv/ano" , folder=True ) )
   return itemlist

def categorias(item):
   logger.info("[tupornotv.py] categorias")
   

   url=item.url
   # ------------------------------------------------------
   # Descarga la página
   # ------------------------------------------------------
   data = scrapertools.cachePage(url)
   #logger.info(data)
   # ------------------------------------------------------
   # Extrae las entradas
   # ------------------------------------------------------
   # seccion categorias
   # Patron de las entradas
   if url == "http://tuporno.tv/categorias/":
      patronvideos  = '<li><a href="([^"]+)"'      # URL
      patronvideos += '>([^<]+)</a></li>'          # TITULO
   else:
      patronvideos  = '<a href="(.tags[^"]+)"'     # URL
      patronvideos += ' class="[^"]+">([^<]+)</a>'    # TITULO
   
   matches = re.compile(patronvideos,re.DOTALL).findall(data)
   #if DEBUG: scrapertools.printMatches(matches)

   itemlist = []
   for match in matches:
      if match[1] in ["SexShop","Videochat","Videoclub"]:
         continue
      # Titulo
      scrapedtitle = match[1]
      scrapedurl = urlparse.urljoin(url,match[0])
      scrapedthumbnail = ""
      scrapedplot = ""
      logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

      # Añade al listado de XBMC
      itemlist.append( Item(channel=CHANNELNAME, action="novedades", title=scrapedtitle.capitalize() , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=True) )
   return itemlist

def masVotados(item):
   logger.info("[tupornotv.py] masVotados")
   
   itemlist = []
   itemlist.append( Item( channel=CHANNELNAME , title="Hoy" , action="novedades" , url="http://tuporno.tv/topVideos/todas/hoy" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Recientes" , action="novedades" , url="http://tuporno.tv/topVideos/todas/recientes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Semana" , action="novedades" , url="http://tuporno.tv/topVideos/todas/semana" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Mes" , action="novedades" , url="http://tuporno.tv/topVideos/todas/mes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Año" , action="novedades" , url="http://tuporno.tv/topVideos/todas/ano" , folder=True ) )
   return itemlist

Un saludo y la proxima vez intentare ayudar en un canal ... mas ...

Re: Canales X Adaptados

Publicado: 08 Feb 2011, 19:35
por Chumy
Muchas gracias Dalim,

La verdad es que para mi tambien es la primera vez que toco python :oops: pero bueno como tan solo es "apdatar" el pedazo de trabajo q ya esta hecho, pues aún nos defendemos.

Sobre el buscador he publicado un post por si te animas ;)

Un saludo

Re: Canales X Adaptados

Publicado: 08 Feb 2011, 20:36
por Dalim
En ello estoy, mejor dicho ya lo he terminado. Tengo un problemilla con una variable que hace que no detecte cuando terminan las "paginas" y me da un error cuando solo encuentra un resultado. Cuando lo termine lo posteo y me pongo con otro canal.

PD: Por si no constaba, que no lo he leido, para acceder al de mocosoftx hay que añadir dos lineas con el usuario y la contraseña al pelisalacarta.conf

Código: Seleccionar todo

# mocosoftx
privateuser=usuario
privatepassword=contraseña
Añado
----------------------------------------------------------------
Ya he terminado casi al 100% el canal de tuporno.tv con las busquedas activas, solo he detectado dos problemas:

1. Al buscar palabras cortas (de tres o menos letras) no muestra resultados aunque en el log si aparecen
Ejemplos: man , bi

2. Si se buscan palabras cortas que den un solo resultado lo que se muestra en la wii es el log (de momento solo encontre esa palabra)
Ejemplo: mam

tupornotv.py

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para tupornotv
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
import scrapertools
import megavideo
import servertools
import binascii
import config
from item import Item
import logger
import buscador

CHANNELNAME = "tupornotv"

# Esto permite su ejecución en modo emulado
try:
   pluginhandle = int( sys.argv[ 1 ] )
except:
   pluginhandle = ""

# Traza el inicio del canal
logger.info("[tupornotv.py] init")


def mainlist(item):
   logger.info("[tupornotv.py] mainlist")

   itemlist = []
   itemlist.append( Item( channel=CHANNELNAME , title="Pendientes de Votación" , action="novedades" , url="http://tuporno.tv/pendientes") )
   itemlist.append( Item( channel=CHANNELNAME , title="Populares" , action="masVistos" , url="http://tuporno.tv/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Categorias" , action="categorias" , url="http://tuporno.tv/categorias/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Videos Recientes" , action="novedades" , url="http://tuporno.tv/videosRecientes/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Top Videos (mas votados)" , action="masVotados" , url="http://tuporno.tv/topVideos/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Nube de Tags" , action="categorias" , url="http://tuporno.tv/tags/" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Buscar" , action="search") )
   
   return itemlist

def novedades(item):
   logger.info("[tupornotv.py] novedades")
   url = item.url
   # ------------------------------------------------------
   # Descarga la página
   # ------------------------------------------------------
   data = scrapertools.cachePage(url)
   #logger.info(data)

   # ------------------------------------------------------
   # Extrae las entradas
   # ------------------------------------------------------
   # seccion novedades
   '''
   <table border="0" cellpadding="0" cellspacing="0" ><tr><td align="center" width="100%" valign="top" height="160px">
   <a href="/videos/cogiendo-en-el-bosque"><img src="imagenes/videos//c/o/cogiendo-en-el-bosque_imagen2.jpg" alt="Cogiendo en el bosque" border="0" align="top" /></a>
   <h2><a href="/videos/cogiendo-en-el-bosque">Cogiendo en el bosque</a></h2>
   '''
   patronvideos  = '(?:<table border="0" cellpadding="0" cellspacing="0" ><tr><td align="center" width="100." valign="top" height="160px">|<td align="center" valign="top" width="25%">)[^<]+'
   patronvideos += '<a href="(.videos[^"]+)"><img src="([^"]+)" alt="([^"]+)"(.*?)</td>'

   matches = re.compile(patronvideos,re.DOTALL).findall(data)
   #if DEBUG: scrapertools.printMatches(matches)

   itemlist = []
   for match in matches:
      # Titulo
      scrapedtitle = match[2]
      scrapedurl = urlparse.urljoin(url,match[0])
      scrapedthumbnail = urlparse.urljoin(url,match[1])
      scrapedplot = ""
      try:

         duracion = re.compile('n: (.+?)</span>').findall(match[3])[0]

      except:

         try:

            duracion = re.compile('\((.+?)\)<br').findall(match[3])[0]

         except:

            duracion = ""
            
      #logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"], duracion=["+duracion+"]")
      # Añade al listado de XBMC
      trozos = scrapedurl.split("/")
      id = trozos[len(trozos)-1]
      videos = "http://149.12.64.129/videoscodiH264/"+id[0:1]+"/"+id[1:2]+"/"+id+".flv"
      itemlist.append( Item(channel=CHANNELNAME, action="play", title=scrapedtitle+" ["+duracion+"]" , url=videos , thumbnail=scrapedthumbnail , plot=scrapedplot, server="Directo", folder=False) )


   
   # ------------------------------------------------------
   # Extrae el paginador
   # ------------------------------------------------------
   #<a href="/topVideos/todas/mes/2/" class="enlace_si">Siguiente </a>
   patronsiguiente = '<a href="([^"]+)" class="enlace_si">Siguiente </a>'
   siguiente = re.compile(patronsiguiente,re.DOTALL).findall(data)
   if len(siguiente)>0:
      patronultima = '<!--HV_SIGUIENTE_ENLACE'
      ultpagina = re.compile(patronultima,re.DOTALL).findall(data)
      scrapertools.printMatches(siguiente)

      if len(ultpagina)>0:
         scrapedurl = urlparse.urljoin(url,siguiente[0])
         itemlist.append( Item(channel=CHANNELNAME, action="novedades", title="!Next page" , url=scrapedurl , folder=True) )
   
   
   return itemlist
def masVistos(item):
   logger.info("[tupornotv.py] masVistos")
   
   itemlist = []
   itemlist.append( Item( channel=CHANNELNAME , title="Hoy" , action="novedades" , url="http://tuporno.tv/hoy" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Recientes" , action="novedades" , url="http://tuporno.tv/recientes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Semana" , action="novedades" , url="http://tuporno.tv/semana" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Mes" , action="novedades" , url="http://tuporno.tv/mes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Año" , action="novedades" , url="http://tuporno.tv/ano" , folder=True ) )
   return itemlist

def categorias(item):
   logger.info("[tupornotv.py] categorias")
   

   url=item.url
   # ------------------------------------------------------
   # Descarga la página
   # ------------------------------------------------------
   data = scrapertools.cachePage(url)
   #logger.info(data)
   # ------------------------------------------------------
   # Extrae las entradas
   # ------------------------------------------------------
   # seccion categorias
   # Patron de las entradas
   if url == "http://tuporno.tv/categorias/":
      patronvideos  = '<li><a href="([^"]+)"'      # URL
      patronvideos += '>([^<]+)</a></li>'          # TITULO
   else:
      patronvideos  = '<a href="(.tags[^"]+)"'     # URL
      patronvideos += ' class="[^"]+">([^<]+)</a>'    # TITULO
   
   matches = re.compile(patronvideos,re.DOTALL).findall(data)
   #if DEBUG: scrapertools.printMatches(matches)

   itemlist = []
   for match in matches:
      if match[1] in ["SexShop","Videochat","Videoclub"]:
         continue
      # Titulo
      scrapedtitle = match[1]
      scrapedurl = urlparse.urljoin(url,match[0])
      scrapedthumbnail = ""
      scrapedplot = ""
      logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

      # Añade al listado de XBMC
      itemlist.append( Item(channel=CHANNELNAME, action="novedades", title=scrapedtitle.capitalize() , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=True) )
   return itemlist

def masVotados(item):
   logger.info("[tupornotv.py] masVotados")
   
   itemlist = []
   itemlist.append( Item( channel=CHANNELNAME , title="Hoy" , action="novedades" , url="http://tuporno.tv/topVideos/todas/hoy" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Recientes" , action="novedades" , url="http://tuporno.tv/topVideos/todas/recientes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Semana" , action="novedades" , url="http://tuporno.tv/topVideos/todas/semana" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Mes" , action="novedades" , url="http://tuporno.tv/topVideos/todas/mes" , folder=True ) )
   itemlist.append( Item( channel=CHANNELNAME , title="Año" , action="novedades" , url="http://tuporno.tv/topVideos/todas/ano" , folder=True ) )
   return itemlist

def search(item):
   logger.info("[tupornotv.py] search")
   tecleado = item.extra.replace(" ", "+")
   item.url = "http://tuporno.tv/buscador/?str=" + tecleado
   itemlist = getsearch(item)
   return itemlist
   
def getsearch(item):
   logger.info("[tupornotv.py] getsearch")
   data = scrapertools.cachePage(item.url)
   patronvideos  = '<td align="left"><a href="(.videos[^"]+)"><img src="([^"]+)" alt="(.+?)" (.*?)<span class="tmp">(.+?)</span></h2>'
   matches = re.compile(patronvideos,re.DOTALL).findall(data)

   if len(matches)>0:
      itemlist = []
      for match in matches:
         # Titulo
         scrapedtitle = match[2].replace("<b>","")
         scrapedtitle = scrapedtitle.replace("</b>","")
         scrapedurl = urlparse.urljoin("http://tuporno.tv/",match[0])
         scrapedthumbnail = urlparse.urljoin("http://tuporno.tv/",match[1])
         scrapedplot = ""
         duracion = match[4]
         trozos = scrapedurl.split("/")
         id = trozos[len(trozos)-1]
         videos = "http://149.12.64.129/videoscodiH264/"+id[0:1]+"/"+id[1:2]+"/"+id+".flv"
         itemlist.append( Item(channel=CHANNELNAME, action="play", title=scrapedtitle+" ["+duracion+"]" , url=videos , thumbnail=scrapedthumbnail , plot=scrapedplot, server="Directo", folder=False) )

      '''<a href="/buscador/?str=busqueda&desde=HV_PAGINA_SIGUIENTE" class="enlace_si">Siguiente </a>'''
      patronsiguiente = '<a href="([^"]+)" class="enlace_si">Siguiente </a>'
      siguiente = re.compile(patronsiguiente,re.DOTALL).findall(data)
      if len(siguiente)>0:
         patronultima = '<!--HV_SIGUIENTE_ENLACE'
         ultpagina = re.compile(patronultima,re.DOTALL).findall(data)
         scrapertools.printMatches(siguiente)
 
         if len(ultpagina)==0:
            scrapedurl = urlparse.urljoin(item.url,siguiente[0])
            itemlist.append( Item(channel=CHANNELNAME, action="getsearch", title="!Next page" , url=scrapedurl , folder=True) )
        
   return itemlist
      


Seguro que es una tonteria que no veo...

Acabo de probarlo con el buscador de Cinetube de Chumy y sucece lo mismo (exceptuando el caso de "mam").

Si alguien mas avispado localiza el problema mejor lo postea en viewtopic.php?f=15&t=1007

Re: Canales X Adaptados

Publicado: 24 Feb 2011, 23:34
por jesus
He añadido los tres canales al SVN, gracias por la aportación :)

También he tenido que retocar un poco MocosoftX, porque salía todo vacío. Ya está operativo de nuevo.

Re: Canales X Adaptados

Publicado: 01 Mar 2011, 21:49
por peligropowers
tupornotv no funciona....

Re: Canales X Adaptados

Publicado: 02 Mar 2011, 23:06
por jesus
¿Da algún error por la consola?

En XBMC sí que va...

Re: Canales X Adaptados

Publicado: 03 Mar 2011, 10:17
por Dalim
peligropowers escribió:tupornotv no funciona....
Da error por que hace referencia a xbmctools y buscador

Pon el principio asi:

Código: Seleccionar todo

import urlparse,urllib2,urllib,re
import os
import sys
from servers import servertools
#from core import xbmctools
from core import config
from core.item import Item
from core import logger
#from pelisalacarta import buscador
O bajate el canal adjunto.

Re: Canales X Adaptados

Publicado: 04 Mar 2011, 21:21
por peligropowers
Peeeeeeeeerfecto!