def listar_busquedas(params,url,category):
	print "listar_busquedas()"
	channel2 = ""
	# Despliega las busquedas anteriormente guardadas
	try:
		presets = config.getSetting("presets_buscados")
		channel_preset  = params.get("channel")
		if channel_preset != CHANNELNAME:
			channel2 = channel_preset
		print "channel_preset :%s" %channel_preset
		accion = params.get("action")
		matches = ""
		if "|" in presets:
			matches = presets.split("|")
			addfolder( "buscador"   , config.getLocalizedString(30103)+"..." , matches[0] , "por_teclado", channel2 ) # Buscar
		else:
			addfolder( "buscador"   , config.getLocalizedString(30103)+"..." , "" , "por_teclado", channel2 )
		if len(matches)>0:	
			for match in matches:
				
				title=scrapedurl = match
		
				addfolder( channel_preset , title , scrapedurl , "searchresults" )
		elif presets != "":
		
			title = scrapedurl = presets
			addfolder( channel_preset , title , scrapedurl , "searchresults" )
	except:
		addfolder( "buscador"   , config.getLocalizedString(30103)+"..." , "" , "por_teclado" , channel2 )
		
	# Cierra el directorio
	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 )
예제 #2
0
def addnewvideo( canal , accion , category , server , title , url , thumbnail, plot ,Serie="",duration="",IsPlayable='false',context = 0):
	contextCommands = []
	if DEBUG:
		try:
			logger.info('[xbmctools.py] addnewvideo( "'+canal+'" , "'+accion+'" , "'+category+'" , "'+server+'" , "'+title+'" , "' + url + '" , "'+thumbnail+'" , "'+plot+'")" , "'+Serie+'")"')
		except:
			logger.info('[xbmctools.py] addnewvideo(<unicode>)')
	listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail )
	listitem.setInfo( "video", { "Title" : title, "Plot" : plot, "Duration" : duration, "Studio" : canal } )
	if IsPlayable == 'true': #Esta opcion es para poder utilizar el xbmcplugin.setResolvedUrl()
		listitem.setProperty('IsPlayable', 'true')
	#listitem.setProperty('fanart_image',os.path.join(IMAGES_PATH, "cinetube.png"))
	if context == 1: #El uno añade al menu contextual la opcion de guardar en megalive un canal a favoritos
		addItemCommand = "XBMC.RunPlugin(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s&Serie=%s)" % ( sys.argv[ 0 ] , canal , "saveChannelFavorites" , urllib.quote_plus( category ) , urllib.quote_plus( title ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( plot ) , server , Serie)
		contextCommands.append((config.getLocalizedString(30301),addItemCommand))
		
	if context == 2:#El dos añade al menu contextual la opciones de eliminar y/o renombrar un canal en favoritos 
		addItemCommand = "XBMC.RunPlugin(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s&Serie=%s)" % ( sys.argv[ 0 ] , canal , "deleteSavedChannel" , urllib.quote_plus( category ) , urllib.quote_plus( title ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( plot ) , server , Serie)
		contextCommands.append((config.getLocalizedString(30302),addItemCommand))
		addItemCommand = "XBMC.RunPlugin(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s&Serie=%s)" % ( sys.argv[ 0 ] , canal , "renameChannelTitle" , urllib.quote_plus( category ) , urllib.quote_plus( title ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( plot ) , server , Serie)
		contextCommands.append((config.getLocalizedString(30303),addItemCommand))	
	if len (contextCommands) > 0:
		listitem.addContextMenuItems ( contextCommands, replaceItems=False)
	try:
		title = title.encode ("utf-8")	 #This only aplies to unicode strings. The rest stay as they are.
		plot  = plot.encode ("utf-8")
	except:
		pass
	
	itemurl = '%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s&Serie=%s' % ( sys.argv[ 0 ] , canal , accion , urllib.quote_plus( category ) , urllib.quote_plus( title ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( plot ) , server , Serie)
	#logger.info("[xbmctools.py] itemurl=%s" % itemurl)
	xbmcplugin.addDirectoryItem( handle = pluginhandle, url=itemurl, listitem=listitem, isFolder=False)
예제 #3
0
def getmainlist(params, url, category):
    logger.info("[cinetube.py] getmainlist")

    itemlist = []
    itemlist.append(
        Item(channel=CHANNELNAME,
             title=config.getLocalizedString(30401),
             action="listWall",
             url="http://www.megalive.com/",
             folder=True))
    itemlist.append(
        Item(channel=CHANNELNAME,
             title=config.getLocalizedString(30402),
             action="listcategory",
             url="http://www.megalive.com/?c=streams",
             folder=True))
    itemlist.append(
        Item(channel=CHANNELNAME,
             title=config.getLocalizedString(30403),
             action="listfavorites",
             url="",
             folder=True))
    itemlist.append(
        Item(channel=CHANNELNAME,
             title=config.getLocalizedString(30404),
             action="playByID",
             url="",
             folder=True))

    return itemlist
예제 #4
0
def buscartrailer(params,url,category):
	print "[trailertools.py] Modulo: buscartrailer()"
	thumbnail = ""
	solo = "false"
	videotitle = title = urllib.unquote_plus( params.get("title") ).strip()
	if ":]" in videotitle:
		solo = "true"
		videotitle = re.sub("\[[^\]]+\]","",videotitle).strip()
	if config.getLocalizedString(30110) in videotitle: #"Buscar trailer para"
		videotitle = videotitle.replace(config.getLocalizedString(30110),"").strip()
	if config.getLocalizedString(30111) in videotitle: #"Insatisfecho?, busca otra vez : "
		videotitle = videotitle.replace(config.getLocalizedString(30111),"").strip()
	
		listavideos = GetTrailerbyKeyboard(videotitle.strip(),category)
	else:
		listavideos = gettrailer(videotitle.strip().strip(),category,solo)
	
	if len(listavideos)>0:
		for video in listavideos:
			titulo = video[1]
			url        = video[0]
			thumbnail  = video[2]
			duracion = video[3]
			xbmctools.addnewvideo( "trailertools" , "youtubeplay" , category , "Directo" ,  titulo , url , thumbnail , "Ver Video","",duracion )
	
	xbmctools.addnewfolder( CHANNELNAME , "buscartrailer" , category , config.getLocalizedString(30111)+" "+videotitle , url , os.path.join(IMAGES_PATH, 'trailertools.png'), "" ) #"Insatisfecho?, busca otra vez : "		
	# 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 )
def alertanomegauploadlow(server):
    advertencia = xbmcgui.Dialog()
    #'La calidad elegida no esta disponible', 'o el video ha sido borrado',
    #'Prueba a reproducir en otra calidad'
    resultado = advertencia.ok(
        config.getLocalizedString(30055), config.getLocalizedString(30061), config.getLocalizedString(30062)
    )
예제 #6
0
def listar_busquedas(params,url,category):
    print "listar_busquedas()"
    channel2 = ""
    # Despliega las busquedas anteriormente guardadas
    try:
        presets = config.getSetting("presets_buscados")
        channel_preset  = params.get("channel")
        if channel_preset != CHANNELNAME:
            channel2 = channel_preset
        print "channel_preset :%s" %channel_preset
        accion = params.get("action")
        matches = ""
        if "|" in presets:
            matches = presets.split("|")
            addfolder( "buscador"   , config.getLocalizedString(30103)+"..." , matches[0] , "por_teclado", channel2 ) # Buscar
        else:
            addfolder( "buscador"   , config.getLocalizedString(30103)+"..." , "" , "por_teclado", channel2 )
        if len(matches)>0:    
            for match in matches:
                
                title=scrapedurl = match
        
                addfolder( channel_preset , title , scrapedurl , "searchresults" )
        elif presets != "":
        
            title = scrapedurl = presets
            addfolder( channel_preset , title , scrapedurl , "searchresults" )
    except:
        addfolder( "buscador"   , config.getLocalizedString(30103)+"..." , "" , "por_teclado" , channel2 )
        
    # Cierra el directorio
    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 )
def listchannels(params,url,category):
	logger.info("[channelselector.py] listchannels")

	# Verifica actualizaciones solo en el primer nivel
	try:
		import updater
	except ImportError:
		logger.info("[channelselector.py] No disponible modulo actualizaciones")
	else:
		if config.getSetting("updatecheck2") == "true":
			logger.info("[channelselector.py] Verificar actualizaciones activado")
			updater.checkforupdates()
		else:
			logger.info("[channelselector.py] Verificar actualizaciones desactivado")

#	addfolder("Antena3","a3","mainlist")
#	addfolder("ADNStream","adnstream","mainlist")
#	addfolder("Barcelona TV","barcelonatv","mainlist")
#	addfolder("Clan TV","clantv","mainlist")
#	addfolder("El cine de las 3 mellizas","tresmellizas","mainlist")
#	addfolder("Boing","boing","mainlist")
#	#addfolder("Totlol","totlol","mainlist")
#	addfolder("EITB","eitb","mainlist")
#	addfolder("Extremadura TV","extremaduratv","mainlist")
#	addfolder("Hogarutil","hogarutil","mainlist")
#	addfolder("Plus TV","plus","mainlist")
#	addfolder("Andalucia TV","rtva","mainlist")
#	addfolder("TVE","rtve","mainlist")
#	addfolder("TVE Programas","rtveprogramas","mainlist")
#	addfolder("TVE Mediateca","rtvemediateca","mainlist")
#	#addfolder("TV Azteca","tva","mainlist")
#	addfolder("Berria TB","berriatb","mainlist")
#	addfolder("Earth TV","earthtv","mainlist")
#	addfolder("Euronews","euronews","mainlist")
#	addfolder("Comunidad Valenciana","rtvv","mainlist")
#	#addfolder("Terra TV","terratv","mainlist")
#	addfolder("Turbonick","turbonick","mainlist")
#	addfolder("TV3","tv3","mainlist")
#	addfolder("TVG","tvg","mainlist")
#	addfolder("Mallorca TV","tvmallorca","mainlist")
#	addfolder("Meristation","meristation","mainlist")
#	addfolder("7rm","sieterm","mainlist")
#	addfolder("Televisión Canaria","rtvc","mainlist")
#	addfolder("Internautas TV","internautastv","mainlist")
#	addfolder("Publico.tv","publicotv","mainlist")
	addfolder("Σκαι: Οι Νεοι Φακελοι","skai_folders","mainlist")
	addfolder("Σκαι TV","skai_tv","mainlist")
	
	cadena = config.getLocalizedString(30100)
	logger.info("cadena="+cadena)
	addfolder(cadena,"configuracion","mainlist") # Configuracion
	if (parametrizacion.DOWNLOAD_ENABLED):
		addfolder(config.getLocalizedString(30101),"descargados","mainlist")   # Descargas
	addfolder(config.getLocalizedString(30102),"favoritos","mainlist")     # Favoritos

	# Label (top-right)...
	xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category="Canales" )
	xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
	xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
def alertnoencontrado(titulo):
	advertencia = xbmcgui.Dialog()
	#'Trailer no encontrado'
	#'El Trailer para "%s"'
	#'no se ha podido localizar.'
	#'�Deseas seguir buscando con el teclado?'
	tituloq = '"'+titulo+'"'
	resultado = advertencia.yesno(config.getLocalizedString(30114), config.getLocalizedString(30115) % tituloq, config.getLocalizedString(30116),config.getLocalizedString(30117))
	return(resultado)
예제 #9
0
def getmainlist(params,url,category):
	logger.info("[cinetube.py] getmainlist")

	itemlist = []
	itemlist.append( Item(channel=CHANNELNAME, title=config.getLocalizedString(30401)    , action="listWall", url="http://www.megalive.com/"      , folder=True) )
	itemlist.append( Item(channel=CHANNELNAME, title= config.getLocalizedString(30402)      , action="listcategory", url="http://www.megalive.com/?c=streams", folder=True) )
	itemlist.append( Item(channel=CHANNELNAME, title=config.getLocalizedString(30403) , action="listfavorites"     , url=""                                       , folder=True) )
	itemlist.append( Item(channel=CHANNELNAME, title=config.getLocalizedString(30404)   , action="playByID"             , url=""       , folder=True) )
	
	return itemlist
예제 #10
0
def alertnoencontrado(titulo):
    advertencia = xbmcgui.Dialog()
    #'Trailer no encontrado'
    #'El Trailer para "%s"'
    #'no se ha podido localizar.'
    #'�Deseas seguir buscando con el teclado?'
    tituloq = '"' + titulo + '"'
    resultado = advertencia.yesno(config.getLocalizedString(30114),
                                  config.getLocalizedString(30115) % tituloq,
                                  config.getLocalizedString(30116),
                                  config.getLocalizedString(30117))
    return (resultado)
def mainlist(params,url,category):
    """Lists the main categories of the channel

    """
    logger.debug("[tvshac.py] mainlist")


    # Categories List
    test = config.getLocalizedString(30900)
    xbmctools.addnewfolder( CHANNELNAME , "ListaSeries" , "Series" , str(getStr(30901)) , "http://tvshack.cc/tv" , thumbnail="" , plot="" ) #    <string id="30901">Series TV (VO)</string>
    xbmctools.addnewfolder( CHANNELNAME , "ListaDetallada" , "Cine" , config.getLocalizedString(30902) , "http://tvshack.cc/movies" , thumbnail="" , plot="" )
    xbmctools.addnewfolder( CHANNELNAME , "ListaDetallada" , "Documentales" , getStr(30903) , "http://tvshack.cc/documentaries" , thumbnail="" , plot="" )
    xbmctools.addnewfolder( CHANNELNAME , "ListaSeries" , "Anime" , getStr(30904) , "http://tvshack.cc/anime" , thumbnail="" , plot="" )
    xbmctools.addnewfolder( CHANNELNAME , "ListaSeries" , "Musica" , getStr(30905) , "http://tvshack.cc/music" , thumbnail="" , plot="" )
    xbmctools.addnewfolder( CHANNELNAME , "Buscar" , "" , getStr(30906) , "http://tvshack.cc/search/" , thumbnail=SEARCH_THUMBNAIL , plot="" )

    FinalizaPlugin (pluginhandle,category)
def GetTrailerbyKeyboard(titulo,category):
	print "[trailertools.py] Modulo: GetTrailerbyKeyboard(titulo = %s , category = %s)"  % (titulo,category)
	devuelve = []
	keyboard = xbmc.Keyboard('default','heading')
	keyboard.setDefault(titulo)
	if titulo == "":
		keyboard.setHeading(config.getLocalizedString(30112)) #"Introduce el Titulo a buscar"
	else:
		keyboard.setHeading(config.getLocalizedString(30113)) #'Puedes recortar el titulo � bien cambiar a otro idioma'
	keyboard.doModal()
	if (keyboard.isConfirmed()):
		tecleado = keyboard.getText()
		if len(tecleado)>0:
			devuelve = gettrailer(tecleado,category)
			return devuelve
		else:return []
	else:return []	
예제 #13
0
def mainlist(params, url, category):
    """Lists the main categories of the channel

    """
    logger.debug("[tvshac.py] mainlist")

    # Categories List
    test = config.getLocalizedString(30900)
    xbmctools.addnewfolder(
        CHANNELNAME,
        "ListaSeries",
        "Series",
        str(getStr(30901)),
        "http://tvshack.bz/tv",
        thumbnail="",
        plot="")  #    <string id="30901">Series TV (VO)</string>
    xbmctools.addnewfolder(CHANNELNAME,
                           "ListaDetallada",
                           "Cine",
                           config.getLocalizedString(30902),
                           "http://tvshack.bz/movies",
                           thumbnail="",
                           plot="")
    xbmctools.addnewfolder(CHANNELNAME,
                           "ListaDetallada",
                           "Documentales",
                           getStr(30903),
                           "http://tvshack.bz/documentaries",
                           thumbnail="",
                           plot="")
    #    xbmctools.addnewfolder( CHANNELNAME , "ListaSeries" , "Anime" , getStr(30904) , "http://tvshack.bz/anime" , thumbnail="" , plot="" )
    #    xbmctools.addnewfolder( CHANNELNAME , "ListaSeries" , "Musica" , getStr(30905) , "http://tvshack.bz/music" , thumbnail="" , plot="" )
    #La música y el anime han desaparecido tras el último traslado de la web.
    xbmctools.addnewfolder(CHANNELNAME,
                           "Buscar",
                           "",
                           getStr(30906),
                           "http://tvshack.bz/search/",
                           thumbnail=SEARCH_THUMBNAIL,
                           plot="")

    FinalizaPlugin(pluginhandle, category)
예제 #14
0
def getplayByID(params,url,category):
	logger.info("[megalivewall.py] plyByID")
	tecleado = ""
	default = ""
	itemlist = []
	tecleado = string.upper(teclado(heading=config.getLocalizedString(30405)))
	if len(tecleado)>0:
		url,thumbnail = megalive.getLiveUrl(tecleado,1)
		if len(url)>0:
			itemlist.append( Item(channel=CHANNELNAME, action="play" , title=tecleado , url=tecleado, thumbnail=thumbnail, plot="", show = tecleado, folder=False , context = True))
	return itemlist
예제 #15
0
def mainlist(params,url,category):
    logger.info("[channelselector.py] mainlist")

    # Verifica actualizaciones solo en el primer nivel
    try:
        import updater
    except ImportError:
        logger.info("[channelselector.py] No disponible modulo actualizaciones")
    else:
        if config.getSetting("updatecheck2") == "true":
            logger.info("[channelselector.py] Verificar actualizaciones activado")
            updater.checkforupdates()
        else:
            logger.info("[channelselector.py] Verificar actualizaciones desactivado")

    idioma = config.getSetting("languagefilter")
    logger.info("[channelselector.py] idioma=%s" % idioma)
    langlistv = [config.getLocalizedString(30025),config.getLocalizedString(30026),config.getLocalizedString(30027),config.getLocalizedString(30028),config.getLocalizedString(30029)]
    try:
        idiomav = langlistv[int(idioma)]
    except:
        idiomav = langlistv[0]
    #logger.info("[channelselector.py] idiomav=%s" % idiomav)

    addfolder(config.getLocalizedString(30118)+" ("+idiomav+")","channelselector","channeltypes")
    #searchwebs=": Cinetube,Peliculasyonkis,Cinegratis,tumejortv.com,Peliculas21,Cine15,Seriesyonkis,Yotix.tv,DocumaniaTV,Discoverymx,Stagevu,tu.tv"
    #channelslist.append([ config.getLocalizedString(30103)+searchwebs , "buscador" , "Buscador" , "" , "B" ])# Buscador
    addfolder(config.getLocalizedString(30103),"buscador"       ,"mainlist")
    addfolder(config.getLocalizedString(30128),"trailertools"   ,"mainlist")
    addfolder(config.getLocalizedString(30102),"favoritos"      ,"mainlist")
    if (DOWNLOAD_ENABLED):
        addfolder(config.getLocalizedString(30101),"descargados","mainlist")
    addfolder(config.getLocalizedString(30100),"configuracion"  ,"mainlist")
    addfolder(config.getLocalizedString(30104),"ayuda"          ,"mainlist")

    # Label (top-right)...
    import xbmcplugin
    xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category="" )
    xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
    xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
예제 #16
0
def buscartrailer(params, url, category):
    print "[trailertools.py] Modulo: buscartrailer()"
    thumbnail = ""
    solo = "false"
    videotitle = title = urllib.unquote_plus(params.get("title")).strip()
    if ":]" in videotitle:
        solo = "true"
        videotitle = re.sub("\[[^\]]+\]", "", videotitle).strip()
    if config.getLocalizedString(30110) in videotitle:  #"Buscar trailer para"
        videotitle = videotitle.replace(config.getLocalizedString(30110),
                                        "").strip()
    if config.getLocalizedString(
            30111) in videotitle:  #"Insatisfecho?, busca otra vez : "
        videotitle = videotitle.replace(config.getLocalizedString(30111),
                                        "").strip()

        listavideos = GetTrailerbyKeyboard(videotitle.strip(), category)
    else:
        listavideos = gettrailer(videotitle.strip().strip(), category, solo)

    if len(listavideos) > 0:
        for video in listavideos:
            titulo = video[1]
            url = video[0]
            thumbnail = video[2]
            duracion = video[3]
            xbmctools.addnewvideo("trailertools", "youtubeplay", category,
                                  "Directo", titulo, url, thumbnail,
                                  "Ver Video", "", duracion)

    xbmctools.addnewfolder(CHANNELNAME, "buscartrailer", category,
                           config.getLocalizedString(30111) + " " + videotitle,
                           url, os.path.join(IMAGES_PATH, 'trailertools.png'),
                           "")  #"Insatisfecho?, busca otra vez : "
    # 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)
def addfolder( canal , nombre , url , accion , channel2 = "" ):
	logger.info('[buscador.py] addfolder( "'+nombre+'" , "' + url + '" , "'+accion+'")"')
	listitem = xbmcgui.ListItem( nombre , iconImage="DefaultFolder.png")
	itemurl = '%s?channel=%s&action=%s&category=%s&url=%s&channel2=%s' % ( sys.argv[ 0 ] , canal , accion , urllib.quote_plus(nombre) , urllib.quote_plus(url),channel2 )
	
	
	if accion != "por_teclado":
		contextCommands = []
		DeleteCommand = "XBMC.RunPlugin(%s?channel=buscador&action=borrar_busqueda&title=%s&url=%s)" % ( sys.argv[ 0 ]  ,  urllib.quote_plus( nombre ) , urllib.quote_plus( url ) )
		contextCommands.append((config.getLocalizedString( 30300 ),DeleteCommand))
		listitem.addContextMenuItems ( contextCommands, replaceItems=False)
		
	xbmcplugin.addDirectoryItem( handle = pluginhandle, url = itemurl , listitem=listitem, isFolder=True)
예제 #18
0
def addfolder( canal , nombre , url , accion , channel2 = "" ):
    logger.info('[buscador.py] addfolder( "'+nombre+'" , "' + url + '" , "'+accion+'")"')
    listitem = xbmcgui.ListItem( nombre , iconImage="DefaultFolder.png")
    itemurl = '%s?channel=%s&action=%s&category=%s&url=%s&channel2=%s' % ( sys.argv[ 0 ] , canal , accion , urllib.quote_plus(nombre) , urllib.quote_plus(url),channel2 )
    
    
    if accion != "por_teclado":
        contextCommands = []
        DeleteCommand = "XBMC.RunPlugin(%s?channel=buscador&action=borrar_busqueda&title=%s&url=%s)" % ( sys.argv[ 0 ]  ,  urllib.quote_plus( nombre ) , urllib.quote_plus( url ) )
        contextCommands.append((config.getLocalizedString( 30300 ),DeleteCommand))
        listitem.addContextMenuItems ( contextCommands, replaceItems=False)
        
    xbmcplugin.addDirectoryItem( handle = pluginhandle, url = itemurl , listitem=listitem, isFolder=True)
예제 #19
0
def GetTrailerbyKeyboard(titulo, category, solo="false"):
    print "[trailertools.py] Modulo: GetTrailerbyKeyboard(titulo = %s , category = %s)" % (
        titulo, category)
    devuelve = []
    keyboard = xbmc.Keyboard('default', 'heading')
    keyboard.setDefault(titulo)
    if titulo == "":
        keyboard.setHeading(
            config.getLocalizedString(30112))  #"Introduce el Titulo a buscar"
    else:
        keyboard.setHeading(
            config.getLocalizedString(30113)
        )  #'Puedes recortar el titulo � bien cambiar a otro idioma'
    keyboard.doModal()
    if (keyboard.isConfirmed()):
        tecleado = keyboard.getText()
        if len(tecleado) > 0:
            devuelve = gettrailer(tecleado, category, solo)
            return devuelve
        else:
            return []
    else:
        return []
def channeltypes(params,url,category):
	logger.info("[channelselector.py] channeltypes")

	addfolder(config.getLocalizedString(30121),"channelselector","listchannels","*")   # Todos
	addfolder(config.getLocalizedString(30122),"channelselector","listchannels","F")  # Películas
	addfolder(config.getLocalizedString(30123),"channelselector","listchannels","S")  # Series
	addfolder(config.getLocalizedString(30124),"channelselector","listchannels","A")  # Anime
	addfolder(config.getLocalizedString(30125),"channelselector","listchannels","D")  # Dibujos
	addfolder(config.getLocalizedString(30126),"channelselector","listchannels","M")  # Música
	addfolder(config.getLocalizedString(30127),"channelselector","listchannels","G")  # Servidores

	# Label (top-right)...
	xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category="" )
	xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
	xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
예제 #21
0
def channeltypes(params,url,category):
    logger.info("[channelselector.py] channeltypes")

    addfolder(config.getLocalizedString(30121),"channelselector","listchannels","*")   # Todos
    addfolder(config.getLocalizedString(30122),"channelselector","listchannels","F")  # Películas
    addfolder(config.getLocalizedString(30123),"channelselector","listchannels","S")  # Series
    addfolder(config.getLocalizedString(30124),"channelselector","listchannels","A")  # Anime
    addfolder(config.getLocalizedString(30125),"channelselector","listchannels","D")  # Dibujos
    addfolder(config.getLocalizedString(30126),"channelselector","listchannels","M")  # Música
    addfolder(config.getLocalizedString(30127),"channelselector","listchannels","G")  # Servidores

    # Label (top-right)...
    import xbmcplugin
    xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category="" )
    xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
    xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
예제 #22
0
def getplayByID(params, url, category):
    logger.info("[megalivewall.py] plyByID")
    tecleado = ""
    default = ""
    itemlist = []
    tecleado = string.upper(teclado(heading=config.getLocalizedString(30405)))
    if len(tecleado) > 0:
        url, thumbnail = megalive.getLiveUrl(tecleado, 1)
        if len(url) > 0:
            itemlist.append(
                Item(channel=CHANNELNAME,
                     action="play",
                     title=tecleado,
                     url=tecleado,
                     thumbnail=thumbnail,
                     plot="",
                     show=tecleado,
                     folder=False,
                     context=True))
    return itemlist
예제 #23
0
def listado(item):
	logger.info("[totlol.py] listado")

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

	patron = '<select class="subnavbarform" name="vdoorderby"[^>]+>(.*?)</select>'
	matches = re.compile(patron,re.DOTALL).findall(data)
	#if DEBUG: scrapertools.printMatches(matches)
	data = matches[0]

	patron = "<option.*?value=([^>]+)>(.*?)</option>"
	matches = re.compile(patron,re.DOTALL).findall(data)
	
	'''
	<select class="subnavbarform" name="vdoorderby" onchange="location.href = this[this.selectedIndex].value;">
	<option value="http://www.totlol.com/videos?&amp;orderby=df&amp;u=&amp;c=&amp;search_id=&amp;catid=0">- All Categories -</option>
	<option  value='http://www.totlol.com/videos?&amp;catid=1&amp;u=&amp;c=&amp;search_id='>Animals</option><option  value='http://www.totlol.com/videos?&amp;catid=6&amp;u=&amp;c=&amp;search_id='>Animated</option><option  value='http://www.totlol.com/videos?&amp;catid=16&amp;u=&amp;c=&amp;search_id='>Classic</option><option  value='http://www.totlol.com/videos?&amp;catid=17&amp;u=&amp;c=&amp;search_id='>Dance</option><option  value='http://www.totlol.com/videos?&amp;catid=13&amp;u=&amp;c=&amp;search_id='>Educational</option><option  value='http://www.totlol.com/videos?&amp;catid=24&amp;u=&amp;c=&amp;search_id='>Filmed or Live action</option><option  value='http://www.totlol.com/videos?&amp;catid=8&amp;u=&amp;c=&amp;search_id='>Food and Drinks</option><option  value='http://www.totlol.com/videos?&amp;catid=2&amp;u=&amp;c=&amp;search_id='>Funny</option><option  value='http://www.totlol.com/videos?&amp;catid=9&amp;u=&amp;c=&amp;search_id='>Games and Sports</option><option  value='http://www.totlol.com/videos?&amp;catid=7&amp;u=&amp;c=&amp;search_id='>Holidays and Special Events</option><option  value='http://www.totlol.com/videos?&amp;catid=26&amp;u=&amp;c=&amp;search_id='>Movie</option><option  value='http://www.totlol.com/videos?&amp;catid=23&amp;u=&amp;c=&amp;search_id='>Music</option><option  value='http://www.totlol.com/videos?&amp;catid=14&amp;u=&amp;c=&amp;search_id='>Places</option><option  value='http://www.totlol.com/videos?&amp;catid=19&amp;u=&amp;c=&amp;search_id='>Puppets Etc.</option><option  value='http://www.totlol.com/videos?&amp;catid=3&amp;u=&amp;c=&amp;search_id='>Songs</option><option  value='http://www.totlol.com/videos?&amp;catid=15&amp;u=&amp;c=&amp;search_id='>Stories</option><option  value='http://www.totlol.com/videos?&amp;catid=4&amp;u=&amp;c=&amp;search_id='>Transportation</option><option  value='http://www.totlol.com/videos?&amp;catid=27&amp;u=&amp;c=&amp;search_id='>TV show</option><option  value='http://www.totlol.com/videos?&amp;catid=20&amp;u=&amp;c=&amp;search_id='>Videos of Babies or Infants</option><option  value='http://www.totlol.com/videos?&amp;catid=22&amp;u=&amp;c=&amp;search_id='>Videos of Kindergarten or School Kids</option><option  value='http://www.totlol.com/videos?&amp;catid=21&amp;u=&amp;c=&amp;search_id='>Videos of Toddlers or Preschoolers</option><option  value='http://www.totlol.com/videos?&amp;catid=25&amp;u=&amp;c=&amp;search_id='>Videos of Tweens or Teens</option>
	</select>
	'''

	itemlist = []
	import config
	itemlist.append( Item(channel=CHANNELNAME, title=config.getLocalizedString(30103) , action="search" , folder=True) )

	for match in matches:
		scrapedtitle = match[1]
		scrapedurl = scrapertools.entityunescape(match[0][1:-1])
		scrapedthumbnail = ""
		scrapedplot = ""
		#if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

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

	return itemlist
def run():
    logger.info("[pelisalacarta.py] run")
    
    # Verifica si el path de usuario del plugin está creado
    if not os.path.exists(config.DATA_PATH):
        logger.debug("[pelisalacarta.py] Path de usuario no existe, se crea: "+config.DATA_PATH)
        os.mkdir(config.DATA_PATH)

    # Imprime en el log los parámetros de entrada
    logger.info("[pelisalacarta.py] sys.argv=%s" % str(sys.argv))
    
    # Crea el diccionario de parametros
    params = dict()
    if len(sys.argv)>=2 and len(sys.argv[2])>0:
        params = dict(part.split('=') for part in sys.argv[ 2 ][ 1: ].split('&'))
    logger.info("[pelisalacarta.py] params=%s" % str(params))
    
    # Extrae la url de la página
    if (params.has_key("url")):
        url = urllib.unquote_plus( params.get("url") )
    else:
        url=''

    # Extrae la accion
    if (params.has_key("action")):
        action = params.get("action")
    else:
        action = "selectchannel"

    # Extrae el server
    if (params.has_key("server")):
        server = params.get("server")
    else:
        server = ""

    # Extrae la categoria
    if (params.has_key("category")):
        category = urllib.unquote_plus( params.get("category") )
    else:
        if params.has_key("channel"):
            category = params.get("channel")
        else:
            category = ""

    # Extrae la serie
    if (params.has_key("Serie")):
        serie = params.get("Serie")
    else:
        serie = ""
    logger.info("[pelisalacarta.py] url="+url+", action="+action+", server="+server+", category="+category+", serie="+serie)

    #JUR - Gestión de Errores de Internet (Para que no casque el plugin 
    #      si no hay internet (que queda feo)
    try:

        # Accion por defecto - elegir canal
        if ( action=="selectchannel" ):
            import channelselector as plugin
            plugin.mainlist(params, url, category)

        # Actualizar version
        elif ( action=="update" ):
            try:
                import updater
                updater.update(params)
            except ImportError:
                logger.info("[pelisalacarta.py] Actualizacion automática desactivada")
                
            import channelselector as plugin
            plugin.mainlist(params, url, category)

        # Reproducir un STRM
        elif (action=="strm"):
            import xbmctools
            xbmctools.playstrm(params, url, category)

        # El resto de acciones vienen en el parámetro "action", y el canal en el parámetro "channel"
        else:

            # Actualiza el canal si ha cambiado    
            if action=="mainlist" and config.getSetting("updatechannels")=="true":
                try:
                    import updater
                    actualizado = updater.updatechannel(params.get("channel"))
    
                    if actualizado:
                        import xbmcgui
                        advertencia = xbmcgui.Dialog()
                        advertencia.ok("pelisalacarta",params.get("channel"),config.getLocalizedString(30063))
                except:
                    logger.info("Actualización de canales desactivada")

            # Ejecuta el canal
            exec "import "+params.get("channel")+" as channel"
            generico = False
            try:
                generico = channel.isGeneric()
            except:
                generico = False

            print "generico=" , generico 
            
            # Es un canal específico de xbmc
            if not generico:
                exec "channel."+action+"(params, url, category)"
            
            # Es un canal genérico
            else:
                if params.has_key("title"):
                    title = urllib.unquote_plus( params.get("title") )
                else:
                    title = ""
                if params.has_key("thumbnail"):
                    thumbnail = urllib.unquote_plus( params.get("thumbnail") )
                else:
                    thumbnail = ""
                if params.has_key("plot"):
                    plot = urllib.unquote_plus( params.get("plot") )
                else:
                    plot = ""
                if params.has_key("server"):
                    server = urllib.unquote_plus( params.get("server") )
                else:
                    server = "directo"
            
                import xbmctools
                if action=="play":
                    xbmctools.playvideo(params.get("channel"),server,url,category,title,thumbnail,plot)
                else:
                    from item import Item
                    item = Item(channel=params.get("channel"), title=title , url=url, thumbnail=thumbnail , plot=plot , server=server)
        
                    if action!="findvideos":
                        exec "itemlist = channel."+action+"(item)"
                    else:
                        # Intenta ejecutar una posible funcion "findvideos" del canal
                        try:
                            exec "itemlist = channel."+action+"(item)"
                        # Si no funciona, lanza el método genérico para detectar vídeos
                        except:
                            itemlist = findvideos(item)

                    xbmctools.renderItems(itemlist, params, url, category)
    
    except urllib2.URLError,e:
        for line in sys.exc_info():
            logger.error( "%s" % line )
        import xbmcgui
        ventana_error = xbmcgui.Dialog()
        # Agarra los errores surgidos localmente enviados por las librerias internas
        if hasattr(e, 'reason'):
            logger.info("Razon del error, codigo: %d , Razon: %s" %(e.reason[0],e.reason[1]))
            texto = config.getLocalizedString(30050) # "No se puede conectar con el sitio web"
            ok = ventana_error.ok ("pelisalacarta", texto)
        # Agarra los errores con codigo de respuesta del servidor externo solicitado     
        elif hasattr(e,'code'):
            logger.info("codigo de error HTTP : %d" %e.code)
            texto = (config.getLocalizedString(30051) % e.code) # "El sitio web no funciona correctamente (error http %d)"
            ok = ventana_error.ok ("pelisalacarta", texto)    
        else:
            pass
def listchannels(params,url,category):
	logger.info("[channelselector.py] listchannels")

	# Verifica actualizaciones solo en el primer nivel
	try:
		import updater
	except ImportError:
		logger.info("[pelisalacarta.py] No disponible modulo actualizaciones")
	else:
		if config.getSetting("updatecheck2") == "true":
			logger.info("[channelselector.py] Verificar actualizaciones activado")
			updater.checkforupdates()
		else:
			logger.info("[channelselector.py] Verificar actualizaciones desactivado")

	# Añade los canales
	addfolder("Cinetube","cinetube","mainlist")
	addfolder("Peliculasyonkis","peliculasyonkis","mainlist")
	#addfolder("Divx Online","divxonline","mainlist") # added by ermanitu
	addfolder("Cinegratis","cinegratis","mainlist")
	addfolder("tumejortv.com","tumejortv","mainlist")
	addfolder("Peliculas21","peliculas21","mainlist")
	addfolder("Dospuntocerovision","dospuntocerovision","mainlist")
	addfolder("Cine15","cine15","mainlist")
	#addfolder("Eduman Movies","edumanmovies","mainlist")
	#addfolder("SesionVIP","sesionvip","mainlist")
	addfolder("Peliculasid","peliculasid","mainlist")
	addfolder("Cinegratis24h","cinegratis24h","mainlist")
	addfolder("Cine-Adicto","cineadicto","mainlist")
	#addfolder("PelisFlv","pelisflv","mainlist")  # de momento queda apartado por falta de tiempo
	addfolder("NoloMires","nolomires","mainlist")
	addfolder("NewDivx","newdivx","mainlist")
	#addfolder("Pelis-Sevillista56","sevillista","mainlist")
	addfolder("FilmesOnlineBr [Portugues]","filmesonlinebr","mainlist")
	addfolder("TVShack.net (VO)","tvshack","mainlist")
	addfolder("DeLaTV","delatv","mainlist")
	addfolder("Pelis24","pelis24","mainlist")
	addfolder("Veocine","veocine","mainlist")
	addfolder("Pintadibujos","pintadibujos","mainlist")
	if config.getSetting("enableadultmode") == "true":
		addfolder("PeliculasEroticas","peliculaseroticas","mainlist")
		addfolder("MocosoftX","mocosoftx","mainlist")
		addfolder("Anifenix.com","anifenix","mainlist")
		addfolder("tuporno.tv","tupornotv","mainlist")
	addfolder("Descarga Cine Clásico","descargacineclasico","mainlist")
	addfolder("Capitan Cinema","capitancinema","mainlist")
	addfolder("Film Streaming [IT]","filmstreaming","mainlist")
	addfolder("No Megavideo","nomegavideo","mainlist")
	addfolder("LetMeWatchThis","letmewatchthis","mainlist")
	addfolder("Seriesyonkis","seriesyonkis","mainlist","Series") #Modificado por JUR para añadir la categoría
	addfolder("Seriespepito","seriespepito","mainlist")
	#addfolder("seriesonline.us","seriesonline","mainlist")
	addfolder("Series21","series21","mainlist")
	#addfolder("Newcineonline","newcineonline","mainlist")
	addfolder("CastTV","casttv","mainlist")
	addfolder("Ver Telenovelas Online","vertelenovelasonline","mainlist")
	addfolder("Anime Foros","animeforos","mainlist")
	addfolder("Yotix.tv","yotix","mainlist")
	addfolder("MCAnime","mcanime","mainlist")
	addfolder("Animetakus","animetakus","mainlist")
	addfolder("Ver-anime","veranime","mainlist")
	addfolder("Watchanimeon [EN]","watchanimeon","mainlist")
	addfolder("Animeid","animeid","mainlist")
	addfolder("Ovasid","ovasid","mainlist")
	addfolder("dibujosanimadosgratis.net","dibujosanimadosgratis","mainlist")
	addfolder("DocumaniaTV","documaniatv","mainlist")
	addfolder("DocumentariesTV [EN]","documentariestv","mainlist")
	addfolder("Documentalesyonkis","documentalesyonkis","mainlist")
	addfolder("Documentalesatonline","documentalesatonline","mainlist")
	addfolder("Discoverymx.Wordpress","discoverymx","mainlist")
	addfolder("Gratisdocumentales","gratisdocumentales","mainlist")
	addfolder("Redes.tv","redestv","mainlist")
	addfolder("Buscador de Trailers (Youtube)","trailertools","mainlist")
	addfolder("ecartelera (Trailers)","ecarteleratrailers","mainlist")
	addfolder("Stagevu","stagevusite","mainlist")
	addfolder("tu.tv","tutvsite","mainlist")
	addfolder("Megavideo","megavideosite","mainlist")
	addfolder("Megaupload","megauploadsite","mainlist")
	
	addfolder(config.getLocalizedString(30100),"configuracion","mainlist") # Configuracion
	
	if (parametrizacion.DOWNLOAD_ENABLED):
		addfolder(config.getLocalizedString(30101),"descargados","mainlist")   # Descargas
	addfolder(config.getLocalizedString(30102),"favoritos","mainlist")     # Favoritos
	addfolder(config.getLocalizedString(30103),"buscador","mainlist")      # Buscador
	addfolder(config.getLocalizedString(30104),"ayuda","mainlist")         # Ayuda

	#addfolder("Kochikame","kochikame","mainlist")
	#addfolder("PeliculasHD","peliculashd","mainlist")
	#addfolder("Wuapi","wuapisite","mainlist")
	#addfolder("Frozen Layer","frozenlayer","mainlist")

	# Label (top-right)...
	xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category="Canales" )
	xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
	xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
예제 #26
0
def run():
	logger.info("[GreekTV.py] run")
	
	# Verifica si el path de usuario del plugin est� creado
	if not os.path.exists(config.DATA_PATH):
		logger.debug("[GreekTV.py] Path de usuario no existe, se crea: "+config.DATA_PATH)
		os.mkdir(config.DATA_PATH)

	# Imprime en el log los par�metros de entrada
	logger.info("[GreekTV.py] sys.argv=%s" % str(sys.argv))
	
	# Crea el diccionario de parametros
	params = dict()
	if len(sys.argv)>=2 and len(sys.argv[2])>0:
		params = dict(part.split('=') for part in sys.argv[ 2 ][ 1: ].split('&'))
	logger.info("[GreekTV.py] params=%s" % str(params))
	
	# Extrae la url de la p�gina
	if (params.has_key("url")):
		url = urllib.unquote_plus( params.get("url") )
	else:
		url=''

	# Extrae la accion
	if (params.has_key("action")):
		action = params.get("action")
	else:
		action = "selectchannel"

	# Extrae el server
	if (params.has_key("server")):
		server = params.get("server")
	else:
		server = ""

	# Extrae la categoria
	if (params.has_key("category")):
		category = urllib.unquote_plus( params.get("category") )
	else:
		if params.has_key("channel"):
			category = params.get("channel")
		else:
			category = ""


	try:
		# Accion por defecto - elegir canal
		if ( action=="selectchannel" ):
			import channelselector as plugin
			plugin.listchannels(params, url, category)
		# Actualizar version
		elif ( action=="update" ):
			import updater
			updater.update(params)
			import channelselector as plugin
			plugin.listchannels(params, url, category)
		# El resto de acciones vienen en el par�metro "action", y el canal en el par�metro "channel"
		else:
			exec "import "+params.get("channel")+" as channel"
			generico = False
			try:
				generico = channel.isGeneric()
			except:
				generico = False

			print "generico=" , generico 
			
			if not generico:
				exec "channel."+action+"(params, url, category)"
			else:
				if params.has_key("title"):
					title = urllib.unquote_plus( params.get("title") )
				else:
					title = ""
				if params.has_key("thumbnail"):
					thumbnail = urllib.unquote_plus( params.get("thumbnail") )
				else:
					thumbnail = ""
				if params.has_key("plot"):
					plot = urllib.unquote_plus( params.get("plot") )
				else:
					plot = ""
				if params.has_key("server"):
					server = urllib.unquote_plus( params.get("server") )
				else:
					server = "directo"
			
				import xbmctools
				if action=="play":
					xbmctools.playvideo(params.get("channel"),server,url,category,title,thumbnail,plot)
				else:
					from item import Item
					item = Item(channel=params.get("channel"), title=title , url=url, thumbnail=thumbnail , plot=plot , server=server)
		
					exec "itemlist = channel."+action+"(item)"
					xbmctools.renderItems(itemlist, params, url, category)

	except urllib2.URLError,e:
		ventana_error = xbmcgui.Dialog()
		# Agarra los errores surgidos localmente enviados por las librerias internas
		if hasattr(e, 'reason'):
			logger.info("Razon del error, codigo: %d , Razon: %s" %(e.reason[0],e.reason[1]))
			texto = config.getLocalizedString(30050) # "No se puede conectar con el sitio web"
			ok = ventana_error.ok ("pelisalacarta", texto)
		# Agarra los errores con codigo de respuesta del servidor externo solicitado 	
		elif hasattr(e,'code'):
			logger.info("codigo de error HTTP : %d" %e.code)
			texto = (config.getLocalizedString(30051) % e.code) # "El sitio web no funciona correctamente (error http %d)"
			ok = ventana_error.ok ("pelisalacarta", texto)	
		else:
			pass
예제 #27
0
def listarvideos(params,url,category,data):
    titulo = params.get("title")
    logger.info("[dospuntocerovision.py] listarvideos ")
    plot = params.get("plot")
    patronmovshare   = 'href="(http://www.movshare.net/.*?)"[^>]+>(.*?)<'         
    patronmegavideoflv= 'href="(http://www.megavideoflv.com/.*?)"'
    patronmegavideo  = 'href="http://www.megavideo.com/.*?v=([A-Z0-9]{8})\&.*?>(.*?)</a>'
    patronmegavideo2 = 'http\:\/\/www.mega(?:(?:video)|(?:upload))?\.com/(?:(?:v/)|\?(?:s=.+?&(?:amp;)?)?((?:(?:v\=)|(?:d\=))))?([A-Z0-9]{8}).*?>(.*?)</a>(.*?)<'
    patronvideo      = '<a onblur=.+?href="[^"]+">.*?<.*?src="([^"]+)".*? alt=.*?;">(.*?)</div>'
    patroncinegratis = 'href="(http://www.cinegratis24h.com/.*?)"'
    patronflv        = 'flashvars="file=(http.*?.flv)'	
    scrapedtitle     = urllib.unquote_plus(titulo)
    scrapedthumbnail = ""
    scrapedplot      = ""
    patrontitle = "post-title entry-title\'>[^<]+<[^>]+>(.+?)</a>"
    matches     = re.compile(patrontitle,re.DOTALL).findall(data)
    for match in matches:
		scrapedtitle = match
#-------------------------------------------------------------------------------
    matchesvideo     = re.compile(patronvideo,re.DOTALL).findall(data)
    for match in matchesvideo:
    
        scrapedthumbnail = match[0]
        scrapedplot = match [1]
        scrapedplot = re.sub("<[^>]+>"," ",scrapedplot)
        scrapedplot = scrapedplot.replace("&#191;","�")
        scrapedplot = acentos(scrapedplot)
        
    
    if not urllib.unquote_plus(titulo) in ("�ltimas pel�culas" , "P�gina siguiente") :
		detalle = "Esta opcion permite buscar el trailer en youtube para esta pelicula y muestra hasta seis titulos mas aproximados si los hay \n "
		xbmctools.addnewfolder( "trailertools" , "buscartrailer" , category ,config.getLocalizedString(30110)+" "+scrapedtitle  , titulo , os.path.join(IMAGES_PATH, 'trailertools.png'), detalle ) #Buscar trailer para
#-------------------------------------------------------------------------------    
    '''   
    matchesmegavideo = re.compile(patronmegavideo,re.DOTALL).findall(data) # busca los links de megavideo

    #logger.info("videos Match " +matchesmegavideo[0])
    for match in matchesmegavideo:
	scrapedurl = match[0]
	# A�ade al listado de XBMC
        xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Megavideo" , scrapedtitle+" - "+match[1]+" - (Megavideo)" , scrapedurl , scrapedthumbnail , scrapedplot ) 
	'''
  #http://www.megavideo.com/?v=0I5DDHA8   #http://www.megavideo.com/?s=dospuntocerovision&v=R30GGEMG&confirmed=1

    matchesmegavideo = re.compile(patronmegavideo2,re.DOTALL).findall(data) # busca los links de megavideo
    for match in matchesmegavideo:
        scrapedurl = match[1]
        #titulo = re.sub("<[^>]+>","",match[0])
        #titulo = titulo.replace("<a href=","")
        #titulo = titulo.replace("<a style=","")
        #titulo = titulo.replace("<span style=","")
        #titulo = titulo.replace("<div style=","")
        if "megavideo" in match[2]:titulo=""
        else: titulo = match[2] + " " + match[3]
        
        if "v" in match[0]:
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Megavideo" , scrapedtitle+" - "+titulo+" - (Megavideo)" , scrapedurl , scrapedthumbnail , scrapedplot )
        elif "d" in match[0]:
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Megaupload" , scrapedtitle+" - "+titulo+" - (Megaupload)" , scrapedurl , scrapedthumbnail , scrapedplot )	
			
#-------------------------------------------------------------------------------
	
    matchescinegratis= re.compile(patroncinegratis,re.DOTALL).findall(data) # busca los links de la pagina de cinegratis24h.com
    if len(matchescinegratis)>0:
        #logger.info("videos Match " +matchescinegratis[0])
        data1 = scrapertools.cachePage(matchescinegratis[0])
        matchesflv   = re.compile(patronflv,re.DOTALL).findall(data1)
        c = 0
        for match in matchesflv:
            c = c + 1
            scrapedurl = match
            # A�ade al listado de XBMC
            xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"parte "+str(c)+" (FLV) (V.O.S.)", scrapedurl , scrapedthumbnail , scrapedplot )

#-------------------------------------------------------------------------------
    
    matchesmegavideoflv = re.compile(patronmegavideoflv,re.DOTALL).findall(data)  # Busca los link de megavideoflv.com
    if len(matchesmegavideoflv)>0:
        #logger.info("videos Match " +matchesmegavideoflv[0])
        data1 = scrapertools.cachePage(matchesmegavideoflv[0])
        matchesflv   = re.compile(patronflv,re.DOTALL).findall(data1)
        c = 0
        for match in matchesflv:
            c = c + 1
            scrapedurl = match
            # A�ade al listado de XBMC
            xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"parte "+str(c)+" (FLV)", scrapedurl , scrapedthumbnail , scrapedplot )

    matchesmovshare = re.compile(patronmovshare,re.DOTALL).findall(data)
    if len(matchesmovshare)>0:
       #import movshare
        
       total = len(matchesmovshare)
       for match in matchesmovshare:
		logger.info("movshare link : "+match[0])
		
		import movshare
		if "#" in match[0]:
			urlsplited = match[0].split("#")
			scrapedurl = urlsplited[0]
		else:
			scrapedurl = match[0]
		
		if len(scrapedurl)>0:
			
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Movshare" , scrapedtitle +" - "+match[1]+" (Movshare)", scrapedurl , scrapedthumbnail , scrapedplot )     

#-------------------------------------------------------------------------------
   
    matchesvideoflv = re.compile(patronflv,re.DOTALL).findall(data)  # busca los link flashvar directos
    if len(matchesvideoflv)>0:
      for match in matchesvideoflv:
          scrapedurl = match 
	  # A�ade al listado de XBMC
          xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"Directo  (FLV)", scrapedurl , scrapedthumbnail , scrapedplot ) 
 
    # Busca la lista de los videos documentales de suricato.com para youtube  

    patronyoutube = '<param name="movie" value="http://www.youtube.com/p/(.*?)\&'
    matchyoutube  = re.compile(patronyoutube,re.DOTALL).findall(data)
    if len(matchyoutube)>0:
      for match in matchyoutube:
        listyoutubeurl = 'http://www.youtube.com/view_play_list?p='+match
        data1 = scrapertools.cachePage(listyoutubeurl)
        newpatronyoutube = '<a href="(.*?)".*?<img src="(.*?)".*?alt="([^"]+)"'
        matchnewyoutube  = re.compile(newpatronyoutube,re.DOTALL).findall(data1)
        if len(matchnewyoutube)>0:
           for match2 in matchnewyoutube:
               scrapedthumbnail = match2[1]
               scrapedtitle     = match2[2]
               scrapedurl       = match2[0]
     
               logger.info(" lista de links encontrados U "+str(len(matchnewyoutube)))
            
               xbmctools.addnewvideo( CHANNELNAME , "youtubeplay" , category , "Directo" , scrapedtitle +" - "+"(youtube) ", scrapedurl , scrapedthumbnail , scrapedplot )
            
#-------------------------------------------------------------------------------
    patronyoutube = '<a href="http://www.youtube.com(/watch\?v\=.*?)".*?>(.*?)</a>'
    matchyoutube  = re.compile(patronyoutube,re.DOTALL).findall(data)
    for match in matchyoutube:
		scrapedtitle = match[1]
		scrapedtitle = re.sub("<[^>]+>"," ",scrapedtitle)
		scrapedurl   = match[0]
		xbmctools.addnewvideo( CHANNELNAME , "youtubeplay" , category , "Directo" , scrapedtitle +" - "+"(youtube) ", scrapedurl , scrapedthumbnail , scrapedplot )
		
    # busca los link directos de Google

    patrongoogle  = 'href="(http://video.google.com/videoplay.*?)"'
    matchesgoogle = re.compile(patrongoogle,re.DOTALL).findall(data)
    for match in matchesgoogle:
        urllink = "http://www.flashvideodownloader.org/download.php?u="+match
        logger.info(" Url = "+urllink[0])
        data1 = scrapertools.cachePage(urllink)
        newpatron = '</script><div.*?<a href="(.*?)" title="Click to Download">'
        newmatches = re.compile(newpatron,re.DOTALL).findall(data1)
        if len(newmatches)>0:
          scrapedurl = newmatches[0]
          xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"(Google) ", scrapedurl , scrapedthumbnail , scrapedplot )
          
    # busca las url de los videos alojados en tu.tv
    patronvideotv = '(http://www.tu.tv/videos/.*?)"><img src="(.*?)" alt="(.*?)".*?'
    #logger.info("dataa "+data)
    matchestv  = re.compile(patronvideotv,re.DOTALL).findall(data)
    for match in matchestv:
		xbmctools.addnewfolder( CHANNELNAME , "listvideosTVmirror" , category , match[2] , match[0] , match[1], scrapedplot ) 
	
	# Busca las URLs de los videos alojados en videoweed
    patronvideos = 'href="(http://www.videoweed.com/file/[^"]+)" target="_blank">(.*?)</a>'
    matchesweed  = re.compile(patronvideos,re.DOTALL).findall(data)
    if len(matchesweed)>0:
		for match in matchesweed:
			scrapedurl = match[0]
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "videoweed" , scrapedtitle +" - "+match[1]+" (Videoweed)", scrapedurl , scrapedthumbnail , scrapedplot )
예제 #28
0
def alertnodisponibleserver(server):
	advertencia = xbmcgui.Dialog()
	# 'El vídeo ya no está en %s' , 'Prueba en otro servidor o en otro canal'
	resultado = advertencia.ok( config.getLocalizedString(30055),(config.getLocalizedString(30057)%server),config.getLocalizedString(30058))
예제 #29
0
def alerterrorpagina():
	advertencia = xbmcgui.Dialog()
	#'Error en el sitio web'
	#'No se puede acceder por un error en el sitio web'
	resultado = advertencia.ok(config.getLocalizedString(30059) , config.getLocalizedString(30060))
예제 #30
0
def playvideoEx(canal,server,url,category,title,thumbnail,plot,desdefavoritos,desdedescargados,desderrordescargas,strmfile=False,Serie=""):

	logger.info("[xbmctools.py] playvideo")
	logger.info("[xbmctools.py] playvideo canal="+canal)
	logger.info("[xbmctools.py] playvideo server="+server)
	logger.info("[xbmctools.py] playvideo url="+url)
	logger.info("[xbmctools.py] playvideo category="+category)
	logger.info("[xbmctools.py] playvideo serie="+Serie)
	
	# Parametrizacion especifica
	import parametrizacion

	# Abre el diálogo de selección
	opciones = []
	default_action = config.getSetting("default_action")
	# Los vídeos de Megavídeo sólo se pueden ver en calidad alta con cuenta premium
	# Los vídeos de Megaupload sólo se pueden ver con cuenta premium, en otro caso pide captcha
	if (server=="Megavideo" or server=="Megaupload") and config.getSetting("megavideopremium")=="true":
		opciones.append(config.getLocalizedString(30150)+" ["+server+"]") # "Ver en calidad alta"
		# Si la accion por defecto es "Ver en calidad alta", la seleccion se hace ya
		if default_action=="2":
			seleccion = len(opciones)-1

	# Los vídeos de Megavídeo o Megaupload se pueden ver en calidad baja sin cuenta premium, aunque con el límite
	if (server=="Megavideo" or server=="Megaupload"):
		opciones.append(config.getLocalizedString(30152)+" [Megavideo]") # "Ver en calidad baja"
		# Si la accion por defecto es "Ver en calidad baja", la seleccion se hace ya
		if default_action=="1":
			seleccion = len(opciones)-1
	else:
		opciones.append(config.getLocalizedString(30151)+" ["+server+"]") # "Ver en calidad normal"
		# Si la accion por defecto es "Ver en calidad baja", la seleccion se hace ya
		if default_action<>"0":  #Si hay alguna calidad elegida (alta o baja) seleccionarmos esta para los no megavideo
			seleccion = len(opciones)-1

	if (parametrizacion.DOWNLOAD_ENABLED):
		opciones.append(config.getLocalizedString(30153)) # "Descargar"

	if desdefavoritos: 
		opciones.append(config.getLocalizedString(30154)) # "Quitar de favoritos"
	else:
		opciones.append(config.getLocalizedString(30155)) # "Añadir a favoritos"

	if (parametrizacion.DOWNLOAD_ENABLED):
		if desdedescargados:
			opciones.append(config.getLocalizedString(30156)) # "Quitar de lista de descargas"
		else:
			opciones.append(config.getLocalizedString(30157)) # "Añadir a lista de descargas"

	opciones.append(config.getLocalizedString(30158)) # "Enviar a JDownloader"
	if default_action=="3":
		seleccion = len(opciones)-1

	if (parametrizacion.DOWNLOAD_ENABLED):
		if desderrordescargas:
			opciones.append(config.getLocalizedString(30159)) # "Borrar descarga definitivamente"
			opciones.append(config.getLocalizedString(30160)) # "Pasar de nuevo a lista de descargas"

	if not strmfile:
		if category in LIBRARY_CATEGORIES:
			opciones.append(config.getLocalizedString(30161)) # "Añadir a Biblioteca"

	# Busqueda de trailers en youtube	
	if not canal in ["Trailer","ecarteleratrailers"]:
		opciones.append(config.getLocalizedString(30162)) # "Buscar Trailer"

	# Si la accion por defecto es "Preguntar", pregunta
	if default_action=="0":
		dia = xbmcgui.Dialog()
		seleccion = dia.select(config.getLocalizedString(30163), opciones) # "Elige una opción"
		#dia.close()
	logger.info("seleccion=%d" % seleccion)
	logger.info("seleccion=%s" % opciones[seleccion])

	# No ha elegido nada, lo más probable porque haya dado al ESC 
	if seleccion==-1:
		if strmfile:  #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm
			listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
			xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),False,listitem)    # JUR Added
		if config.getSetting("subtitulo") == "true":
			config.setSetting("subtitulo", "false")
		return

	if opciones[seleccion]==config.getLocalizedString(30158): # "Enviar a JDownloader"
		if server=="Megaupload":
			d = {"web": "http://www.megaupload.com/?d=" + url}
		else:
			d = {"web": "http://www.megavideo.com/?v=" + url}
		
		import scrapertools
		data = scrapertools.cachePage(config.getSetting("jdownloader")+"/action/add/links/grabber0/start1/"+urllib.urlencode(d)+ " " +thumbnail)
		return

	# Ver en calidad alta
	if opciones[seleccion].startswith(config.getLocalizedString(30150)): # "Ver en calidad alta"
		if server=="Megaupload":
			mediaurl = servertools.getmegauploadhigh(url)
		else:
			mediaurl = servertools.getmegavideohigh(url)
	
	# Ver (calidad baja megavideo o resto servidores)
	elif opciones[seleccion].startswith(config.getLocalizedString(30151)) or opciones[seleccion].startswith(config.getLocalizedString(30152)): # Ver en calidad (normal o baja)
		if server=="Megaupload":
			mediaurl = servertools.getmegauploadlow(url)
			if mediaurl == "":
				alertanomegauploadlow(server)
				return
		elif server=="Megavideo":
			# Advertencia límite 72 minutos megavideo
			if config.getSetting("megavideopremium")=="false":
				advertencia = xbmcgui.Dialog()
				resultado = advertencia.ok(config.getLocalizedString(30052) , config.getLocalizedString(30053) , config.getLocalizedString(30054))			
			mediaurl = servertools.getmegavideolow(url)
		else:
			mediaurl = servertools.findurl(url,server)

	# Descargar
	elif opciones[seleccion]==config.getLocalizedString(30153): # "Descargar"
		if server=="Megaupload":
			if config.getSetting("megavideopremium")=="false":
				mediaurl = servertools.getmegauploadlow(url)
			else:
				mediaurl = servertools.getmegauploadhigh(url)
		elif server=="Megavideo":
			if config.getSetting("megavideopremium")=="false":
				mediaurl = servertools.getmegavideolow(url)
			else:
				mediaurl = servertools.getmegavideohigh(url)
		else:
			mediaurl = servertools.findurl(url,server)

		import downloadtools
		keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title))
		keyboard.doModal()
		if (keyboard.isConfirmed()):
			title = keyboard.getText()
			downloadtools.downloadtitle(mediaurl,title)
		return

	# TODO: Mover a modulo favoritos
	elif opciones[seleccion]==config.getLocalizedString(30154): #"Quitar de favoritos"
		# La categoría es el nombre del fichero en favoritos
		os.remove(urllib.unquote_plus( category ))
		advertencia = xbmcgui.Dialog()
		resultado = advertencia.ok(config.getLocalizedString(30102) , title , config.getLocalizedString(30105)) # 'Se ha quitado de favoritos'
		return

	# TODO: Mover a modulo descargadoslist
	elif opciones[seleccion]==config.getLocalizedString(30159): #"Borrar descarga definitivamente"
		# La categoría es el nombre del fichero en favoritos
		os.remove(urllib.unquote_plus( category ))
		advertencia = xbmcgui.Dialog()
		resultado = advertencia.ok(config.getLocalizedString(30101) , title , config.getLocalizedString(30106)) # 'Se ha quitado de la lista'
		return

	# TODO: Mover a modulo descargadoslist
	elif opciones[seleccion]==config.getLocalizedString(30160): #"Pasar de nuevo a lista de descargas":
		import descargadoslist
		# La categoría es el nombre del fichero en favoritos, así que lee el fichero
		titulo,thumbnail,plot,server,url = descargadoslist.readbookmarkfile(urllib.unquote_plus( category ),"")
		# Lo añade a la lista de descargas
		descargadoslist.savebookmark(title,url,thumbnail,server,plot)
		# Y lo borra de la lista de errores
		os.remove(urllib.unquote_plus( category ))
		advertencia = xbmcgui.Dialog()
		resultado = advertencia.ok(config.getLocalizedString(30101) , title , config.getLocalizedString(30107)) # 'Ha pasado de nuevo a la lista de descargas'
		return

	# TODO: Mover a modulo favoritos
	elif opciones[seleccion]==config.getLocalizedString(30155): #"Añadir a favoritos":
		import favoritos
		import downloadtools
		keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title))
		keyboard.doModal()
		if keyboard.isConfirmed():
			title = keyboard.getText()
			favoritos.savebookmark(title,url,thumbnail,server,plot)
			advertencia = xbmcgui.Dialog()
			resultado = advertencia.ok(config.getLocalizedString(30102) , title , config.getLocalizedString(30108)) # 'se ha añadido a favoritos'
		return

	# TODO: Mover a modulo descargadoslist
	elif opciones[seleccion]==config.getLocalizedString(30156): #"Quitar de lista de descargas":
		# La categoría es el nombre del fichero en la lista de descargas
		os.remove(urllib.unquote_plus( category ))
		advertencia = xbmcgui.Dialog()
		resultado = advertencia.ok(config.getLocalizedString(30101) , title , config.getLocalizedString(30106)) # 'Se ha quitado de lista de descargas'
		return

	# TODO: Mover a modulo descargadoslist
	elif opciones[seleccion]==config.getLocalizedString(30157): #"Añadir a lista de descargas":
		import descargadoslist
		import downloadtools
		keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title))
		keyboard.doModal()
		if keyboard.isConfirmed():
			title = keyboard.getText()
			descargadoslist.savebookmark(title,url,thumbnail,server,plot)
			advertencia = xbmcgui.Dialog()
			resultado = advertencia.ok(config.getLocalizedString(30101) , title , config.getLocalizedString(30109)) # 'se ha añadido a la lista de descargas'
		return

	elif opciones[seleccion]==config.getLocalizedString(30161): #"Añadir a Biblioteca":  # Library
		import library
		library.savelibrary(title,url,thumbnail,server,plot,canal=canal,category=category,Serie=Serie)
		return

	elif opciones[seleccion]==config.getLocalizedString(30162): #"Buscar Trailer":
		config.setSetting("subtitulo", "false")
		xbmc.executebuiltin("Container.Update(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s)" % ( sys.argv[ 0 ] , "trailertools" , "buscartrailer" , urllib.quote_plus( category ) , urllib.quote_plus( title ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( "" ) , server ))
		return

	# Si no hay mediaurl es porque el vídeo no está :)
	logger.info("[xbmctools.py] mediaurl="+mediaurl)
	if mediaurl=="":
		alertnodisponibleserver(server)
		return

	# Crea un listitem para pasárselo al reproductor

	# Obtención datos de la Biblioteca (solo strms que estén en la biblioteca)
	if strmfile:
		logger.info("[xbmctools.py] 1")
		listitem = getLibraryInfo(mediaurl)
	else:
		logger.info("[xbmctools.py] 2")
		listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail)
		listitem.setInfo( "video", { "Title": title, "Plot" : plot , "Studio" : canal , "Genre" : category } )

		
	# Lanza el reproductor
	if strmfile: #Si es un fichero strm no hace falta el play
		logger.info("[xbmctools.py] 3")
		xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),True,listitem)
	else:
		logger.info("[xbmctools.py] 4")
		launchplayer(mediaurl, listitem)
		
	if (config.getSetting("subtitulo") == "true") and (opciones[seleccion].startswith("Ver")):
		xbmc.Player().setSubtitles(os.path.join( config.DATA_PATH, 'subtitulo.srt' ) )
		config.setSetting("subtitulo", "false")
예제 #31
0
def alertnodisponible():
	advertencia = xbmcgui.Dialog()
	#'Vídeo no disponible'
	#'No se han podido localizar videos en la página del canal'
	resultado = advertencia.ok(config.getLocalizedString(30055) , config.getLocalizedString(30056))
예제 #32
0
def run():
    logger.info("[pelisalacarta.py] run")

    # Verifica si el path de usuario del plugin está creado
    if not os.path.exists(config.DATA_PATH):
        logger.debug(
            "[pelisalacarta.py] Path de usuario no existe, se crea: " +
            config.DATA_PATH)
        os.mkdir(config.DATA_PATH)

    # Imprime en el log los parámetros de entrada
    logger.info("[pelisalacarta.py] sys.argv=%s" % str(sys.argv))

    # Crea el diccionario de parametros
    params = dict()
    if len(sys.argv) >= 2 and len(sys.argv[2]) > 0:
        params = dict(part.split('=') for part in sys.argv[2][1:].split('&'))
    logger.info("[pelisalacarta.py] params=%s" % str(params))

    # Extrae la url de la página
    if (params.has_key("url")):
        url = urllib.unquote_plus(params.get("url"))
    else:
        url = ''

    # Extrae la accion
    if (params.has_key("action")):
        action = params.get("action")
    else:
        action = "selectchannel"

    # Extrae el server
    if (params.has_key("server")):
        server = params.get("server")
    else:
        server = ""

    # Extrae la categoria
    if (params.has_key("category")):
        category = urllib.unquote_plus(params.get("category"))
    else:
        if params.has_key("channel"):
            category = params.get("channel")
        else:
            category = ""

    # Extrae la serie
    if (params.has_key("Serie")):
        serie = params.get("Serie")
    else:
        serie = ""
    logger.info("[pelisalacarta.py] url=" + url + ", action=" + action +
                ", server=" + server + ", category=" + category + ", serie=" +
                serie)

    #JUR - Gestión de Errores de Internet (Para que no casque el plugin
    #      si no hay internet (que queda feo)
    try:

        # Accion por defecto - elegir canal
        if (action == "selectchannel"):
            import channelselector as plugin
            plugin.mainlist(params, url, category)

        # Actualizar version
        elif (action == "update"):
            try:
                import updater
                updater.update(params)
            except ImportError:
                logger.info(
                    "[pelisalacarta.py] Actualizacion automática desactivada")

            import channelselector as plugin
            plugin.mainlist(params, url, category)

        # Reproducir un STRM
        elif (action == "strm"):
            import xbmctools
            xbmctools.playstrm(params, url, category)

        # El resto de acciones vienen en el parámetro "action", y el canal en el parámetro "channel"
        else:

            # Actualiza el canal si ha cambiado
            if action == "mainlist" and config.getSetting(
                    "updatechannels") == "true":
                try:
                    import updater
                    actualizado = updater.updatechannel(params.get("channel"))

                    if actualizado:
                        import xbmcgui
                        advertencia = xbmcgui.Dialog()
                        advertencia.ok("pelisalacarta", params.get("channel"),
                                       config.getLocalizedString(30063))
                except:
                    for line in sys.exc_info():
                        logger.error("%s" % line)
                    logger.info("Actualización de canales desactivada")

            # Ejecuta el canal
            exec "import " + params.get("channel") + " as channel"
            generico = False
            try:
                generico = channel.isGeneric()
            except:
                generico = False

            print "generico=", generico

            # Es un canal específico de xbmc
            if not generico:
                exec "channel." + action + "(params, url, category)"

            # Es un canal genérico
            else:
                if params.has_key("title"):
                    title = urllib.unquote_plus(params.get("title"))
                else:
                    title = ""
                if params.has_key("thumbnail"):
                    thumbnail = urllib.unquote_plus(params.get("thumbnail"))
                else:
                    thumbnail = ""
                if params.has_key("plot"):
                    plot = urllib.unquote_plus(params.get("plot"))
                else:
                    plot = ""
                if params.has_key("server"):
                    server = urllib.unquote_plus(params.get("server"))
                else:
                    server = "directo"
                if params.has_key("extradata"):
                    extradata = urllib.unquote_plus(params.get("extradata"))
                else:
                    extradata = ""
                if params.has_key("category"):
                    category = urllib.unquote_plus(params.get("category"))
                else:
                    category = ""
                if params.has_key("Serie"):
                    Serie = urllib.unquote_plus(params.get("Serie"))
                else:
                    Serie = ""

                import xbmctools
                if action == "play":
                    xbmctools.playvideo(params.get("channel"), server, url,
                                        category, title, thumbnail, plot)
                else:
                    from item import Item
                    item = Item(channel=params.get("channel"),
                                title=title,
                                url=url,
                                thumbnail=thumbnail,
                                plot=plot,
                                server=server,
                                category=category,
                                extra=extradata)

                    if action != "findvideos":
                        exec "itemlist = channel." + action + "(item)"
                    else:
                        # Intenta ejecutar una posible funcion "findvideos" del canal
                        try:
                            exec "itemlist = channel." + action + "(item)"
                        # Si no funciona, lanza el método genérico para detectar vídeos
                        except:
                            itemlist = findvideos(item)

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

    except urllib2.URLError, e:
        for line in sys.exc_info():
            logger.error("%s" % line)
        import xbmcgui
        ventana_error = xbmcgui.Dialog()
        # Agarra los errores surgidos localmente enviados por las librerias internas
        if hasattr(e, 'reason'):
            logger.info("Razon del error, codigo: %d , Razon: %s" %
                        (e.reason[0], e.reason[1]))
            texto = config.getLocalizedString(
                30050)  # "No se puede conectar con el sitio web"
            ok = ventana_error.ok("pelisalacarta", texto)
        # Agarra los errores con codigo de respuesta del servidor externo solicitado
        elif hasattr(e, 'code'):
            logger.info("codigo de error HTTP : %d" % e.code)
            texto = (
                config.getLocalizedString(30051) % e.code
            )  # "El sitio web no funciona correctamente (error http %d)"
            ok = ventana_error.ok("pelisalacarta", texto)
        else:
            pass
def run():
	logger.info("[pelisalacarta.py] run")
	
	# Verifica si el path de usuario del plugin está creado
	if not os.path.exists(config.DATA_PATH):
		logger.debug("[pelisalacarta.py] Path de usuario no existe, se crea: "+config.DATA_PATH)
		os.mkdir(config.DATA_PATH)

	# Imprime en el log los parámetros de entrada
	logger.info("[pelisalacarta.py] sys.argv=%s" % str(sys.argv))
	
	# Crea el diccionario de parametros
	params = dict()
	if len(sys.argv)>=2 and len(sys.argv[2])>0:
		params = dict(part.split('=') for part in sys.argv[ 2 ][ 1: ].split('&'))
	logger.info("[pelisalacarta.py] params=%s" % str(params))
	
	# Extrae la url de la página
	if (params.has_key("url")):
		url = urllib.unquote_plus( params.get("url") )
	else:
		url=''

	# Extrae la accion
	if (params.has_key("action")):
		action = params.get("action")
	else:
		action = "selectchannel"

	# Extrae el server
	if (params.has_key("server")):
		server = params.get("server")
	else:
		server = ""

	# Extrae la categoria
	if (params.has_key("category")):
		category = urllib.unquote_plus( params.get("category") )
	else:
		if params.has_key("channel"):
			category = params.get("channel")
		else:
			category = ""

	# Extrae la serie
	if (params.has_key("Serie")):
		serie = params.get("Serie")
	else:
		serie = ""
	logger.info("[pelisalacarta.py] url="+url+", action="+action+", server="+server+", category="+category+", serie="+serie)

	#JUR - Gestión de Errores de Internet (Para que no casque el plugin 
	#      si no hay internet (que queda feo)
	try:

		# Accion por defecto - elegir canal
		if ( action=="selectchannel" ):
			import channelselector as plugin
			plugin.mainlist(params, url, category)

		# Actualizar version
		elif ( action=="update" ):
			try:
				import updater
				updater.update(params)
			except ImportError:
				logger.info("[pelisalacarta.py] Actualizacion automática desactivada")
				
			import channelselector as plugin
			plugin.mainlist(params, url, category)

		# Reproducir un STRM
		elif (action=="strm"):
			import xbmctools
			xbmctools.playstrm(params, url, category)

		# El resto de acciones vienen en el parámetro "action", y el canal en el parámetro "channel"
		else:

			exec "import "+params.get("channel")+" as plugin"
			exec "plugin."+action+"(params, url, category)"
	
	except urllib2.URLError,e:
		ventana_error = xbmcgui.Dialog()
		# Agarra los errores surgidos localmente enviados por las librerias internas
		if hasattr(e, 'reason'):
			logger.info("Razon del error, codigo: %d , Razon: %s" %(e.reason[0],e.reason[1]))
			texto = config.getLocalizedString(30050) # "No se puede conectar con el sitio web"
			ok = ventana_error.ok ("pelisalacarta", texto)
		# Agarra los errores con codigo de respuesta del servidor externo solicitado 	
		elif hasattr(e,'code'):
			logger.info("codigo de error HTTP : %d" %e.code)
			texto = (config.getLocalizedString(30051) % e.code) # "El sitio web no funciona correctamente (error http %d)"
			ok = ventana_error.ok ("pelisalacarta", texto)	
		else:
			pass
def listarvideos(params,url,category,data):
    titulo = params.get("title")
    logger.info("[dospuntocerovision.py] listarvideos ")
    plot = params.get("plot")
    patronmovshare   = 'href="(http://www.movshare.net/.*?)"[^>]+>(.*?)<'         
    patronmegavideoflv= 'href="(http://www.megavideoflv.com/.*?)"'
    patronmegavideo  = 'href="http://www.megavideo.com/.*?v=(.*?)\&.*?>(.*?)</a>'
    patronmegavideo2 = '(<b[^"]+|<b[^<]+<b[^"]+)".*?http\:\/\/www.megavideo.com/\?(v\=|d\=)([A-Z0-9]{8})".*?>(.*?)</a>(.*?)<'
    patronvideo      = "<a href='.*?'>(.*?)<.*?src=\"([^\"]+)\".*? alt=.*?;\">(.*?)</div>"
    patroncinegratis = 'href="(http://www.cinegratis24h.com/.*?)"'
    patronflv        = 'flashvars="file=(http.*?.flv)'	
    scrapedtitle     = ""
    scrapedthumbnail = ""
    scrapedplot      = ""
#-------------------------------------------------------------------------------
    matchesvideo     = re.compile(patronvideo,re.DOTALL).findall(data)
    for match in matchesvideo:
        scrapedtitle = match[0]
        scrapedthumbnail = match[1]
        scrapedplot = match [2]
        scrapedplot = re.sub("<[^>]+>"," ",scrapedplot)
        scrapedplot = scrapedplot.replace("&#191;","�")
        scrapedplot = acentos(scrapedplot)
        
    if DEBUG and ("+" == plot):
		
		detalle = "Esta opcion permite buscar el trailer en youtube para esta pelicula y muestra hasta seis titulos mas aproximados si los hay \n "
		xbmctools.addnewfolder( "trailertools" , "buscartrailer" , category ,config.getLocalizedString(30110)+" "+scrapedtitle  , titulo , os.path.join(IMAGES_PATH, 'trailertools.png'), detalle ) #Buscar trailer para
#-------------------------------------------------------------------------------    
       
    matchesmegavideo = re.compile(patronmegavideo,re.DOTALL).findall(data) # busca los links de megavideo
#http://www.megavideo.com/?s=dospuntocerovision&amp;v=R30GGEMG&amp;confirmed=1
    #logger.info("videos Match " +matchesmegavideo[0])
    for match in matchesmegavideo:
	scrapedurl = match[0]
	# A�ade al listado de XBMC
        xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Megavideo" , scrapedtitle+" - "+match[1]+" - (Megavideo)" , scrapedurl , scrapedthumbnail , scrapedplot ) 

  #http://www.megavideo.com/?v=0I5DDHA8

    matchesmegavideo = re.compile(patronmegavideo2,re.DOTALL).findall(data) # busca los links de megavideo
    for match in matchesmegavideo:
        scrapedurl = match[2]
        titulo = re.sub("<[^>]+>","",match[0])
        titulo = titulo.replace("<a href=","")
        titulo = titulo.replace("<a style=","")
        titulo = titulo.replace("<span style=","")
        titulo = titulo.replace("<div style=","")
        if "megavideo" in match[3]:titulo=titulo +match[4]
        else: titulo = titulo+match[3]+match[4]
        
        if "v" in match[1]:
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Megavideo" , scrapedtitle+" - "+titulo+" - (Megavideo)" , scrapedurl , scrapedthumbnail , scrapedplot )
        elif "d" in match[1]:
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Megaupload" , scrapedtitle+" - "+titulo+" - (Megaupload)" , scrapedurl , scrapedthumbnail , scrapedplot )	
			
#-------------------------------------------------------------------------------
	
    matchescinegratis= re.compile(patroncinegratis,re.DOTALL).findall(data) # busca los links de la pagina de cinegratis24h.com
    if len(matchescinegratis)>0:
        #logger.info("videos Match " +matchescinegratis[0])
        data1 = scrapertools.cachePage(matchescinegratis[0])
        matchesflv   = re.compile(patronflv,re.DOTALL).findall(data1)
        c = 0
        for match in matchesflv:
            c = c + 1
            scrapedurl = match
            # A�ade al listado de XBMC
            xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"parte "+str(c)+" (FLV) (V.O.S.)", scrapedurl , scrapedthumbnail , scrapedplot )

#-------------------------------------------------------------------------------
    
    matchesmegavideoflv = re.compile(patronmegavideoflv,re.DOTALL).findall(data)  # Busca los link de megavideoflv.com
    if len(matchesmegavideoflv)>0:
        #logger.info("videos Match " +matchesmegavideoflv[0])
        data1 = scrapertools.cachePage(matchesmegavideoflv[0])
        matchesflv   = re.compile(patronflv,re.DOTALL).findall(data1)
        c = 0
        for match in matchesflv:
            c = c + 1
            scrapedurl = match
            # A�ade al listado de XBMC
            xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"parte "+str(c)+" (FLV)", scrapedurl , scrapedthumbnail , scrapedplot )

    matchesmovshare = re.compile(patronmovshare,re.DOTALL).findall(data)
    if len(matchesmovshare)>0:
       #import movshare
        
       total = len(matchesmovshare)
       for match in matchesmovshare:
		logger.info("movshare link : "+match[0])
		
		import movshare
		if "#" in match[0]:
			urlsplited = match[0].split("#")
			scrapedurl = urlsplited[0]
		else:
			scrapedurl = match[0]
		
		if len(scrapedurl)>0:
			
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Movshare" , scrapedtitle +" - "+match[1]+" (Movshare)", scrapedurl , scrapedthumbnail , scrapedplot )     

#-------------------------------------------------------------------------------
   
    matchesvideoflv = re.compile(patronflv,re.DOTALL).findall(data)  # busca los link flashvar directos
    if len(matchesvideoflv)>0:
      for match in matchesvideoflv:
          scrapedurl = match 
	  # A�ade al listado de XBMC
          xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"Directo  (FLV)", scrapedurl , scrapedthumbnail , scrapedplot ) 
 
    # Busca la lista de los videos documentales de suricato.com para youtube  

    patronyoutube = '<param name="movie" value="http://www.youtube.com/p/(.*?)\&'
    matchyoutube  = re.compile(patronyoutube,re.DOTALL).findall(data)
    if len(matchyoutube)>0:
      for match in matchyoutube:
        listyoutubeurl = 'http://www.youtube.com/view_play_list?p='+match
        data1 = scrapertools.cachePage(listyoutubeurl)
        newpatronyoutube = '<a href="(.*?)".*?<img src="(.*?)".*?alt="([^"]+)"'
        matchnewyoutube  = re.compile(newpatronyoutube,re.DOTALL).findall(data1)
        if len(matchnewyoutube)>0:
           for match2 in matchnewyoutube:
               scrapedthumbnail = match2[1]
               scrapedtitle     = match2[2]
               scrapedurl       = match2[0]
     
               logger.info(" lista de links encontrados U "+str(len(matchnewyoutube)))
            
               xbmctools.addnewvideo( CHANNELNAME , "youtubeplay" , category , "Directo" , scrapedtitle +" - "+"(youtube) ", scrapedurl , scrapedthumbnail , scrapedplot )
            
#-------------------------------------------------------------------------------
    patronyoutube = '<a href="http://www.youtube.com(/watch\?v\=.*?)".*?>(.*?)</a>'
    matchyoutube  = re.compile(patronyoutube,re.DOTALL).findall(data)
    for match in matchyoutube:
		scrapedtitle = match[1]
		scrapedtitle = re.sub("<[^>]+>"," ",scrapedtitle)
		scrapedurl   = match[0]
		xbmctools.addnewvideo( CHANNELNAME , "youtubeplay" , category , "Directo" , scrapedtitle +" - "+"(youtube) ", scrapedurl , scrapedthumbnail , scrapedplot )
		
    # busca los link directos de Google

    patrongoogle  = 'href="(http://video.google.com/videoplay.*?)"'
    matchesgoogle = re.compile(patrongoogle,re.DOTALL).findall(data)
    for match in matchesgoogle:
        urllink = "http://www.flashvideodownloader.org/download.php?u="+match
        logger.info(" Url = "+urllink[0])
        data1 = scrapertools.cachePage(urllink)
        newpatron = '</script><div.*?<a href="(.*?)" title="Click to Download">'
        newmatches = re.compile(newpatron,re.DOTALL).findall(data1)
        if len(newmatches)>0:
          scrapedurl = newmatches[0]
          xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "Directo" , scrapedtitle +" - "+"(Google) ", scrapedurl , scrapedthumbnail , scrapedplot )
          
    # busca las url de los videos alojados en tu.tv
    patronvideotv = '(http://www.tu.tv/videos/.*?)"><img src="(.*?)" alt="(.*?)".*?'
    #logger.info("dataa "+data)
    matchestv  = re.compile(patronvideotv,re.DOTALL).findall(data)
    for match in matchestv:
		xbmctools.addnewfolder( CHANNELNAME , "listvideosTVmirror" , category , match[2] , match[0] , match[1], scrapedplot ) 
	
	# Busca las URLs de los videos alojados en videoweed
    patronvideos = 'href="(http://www.videoweed.com/file/[^"]+)" target="_blank">(.*?)</a>'
    matchesweed  = re.compile(patronvideos,re.DOTALL).findall(data)
    if len(matchesweed)>0:
		for match in matchesweed:
			scrapedurl = match[0]
			xbmctools.addnewvideo( CHANNELNAME , "detail" , category , "videoweed" , scrapedtitle +" - "+match[1]+" (Videoweed)", scrapedurl , scrapedthumbnail , scrapedplot )
예제 #35
0
def listvideos(params,url,category):
	logger.info("[peliculas21.py] listvideos")

	if url=="":
		url = "http://www.peliculas21.com"
	
	# Descarga la página
	data = scrapertools.cachePage(url)
	#logger.info(data)
	#title = urllib.unquote_plus(params.get("title"))
	#thumbnail = urllib.unquote_plus(params.get("thumbnail"))
	#plot = urllib.unquote_plus(params.get("plot"))
	
	# Busca el area donde estan los videos y la descripcion
	patronvideos = '<div  class="peliculadoblaje">(.*?)<!-- FIN #content-->'
	matches      = re.compile(patronvideos,re.DOTALL).findall(data)
	
	# busca el titulo y el thumbnail
	patronvideos = '<img src="([^"]+)"[^>]+>[^<]+<[^>]+>([^<]+)</div>'
	matches2 =  re.compile(patronvideos,re.DOTALL).findall(matches[0])
	for match in matches2:
		title = match[1]
		thumbnail = urlparse.urljoin(url,match[0])
	plot = ""
	patronvideos = '<b>Duraci&oacute;n:</b>(.*?)<br />'
	duracion     = re.compile(patronvideos,re.DOTALL).findall(matches[0])
	if len(duracion)>0:plot = "Duracion:"+duracion[0] + "\n"
		
	patronvideos = '<b>G&eacute;nero:</b>(.*?)<br />'
	genero       = re.compile(patronvideos,re.DOTALL).findall(matches[0])
	if len(genero)>0:plot = plot + "Genero:  "+genero[0] +"\n"
	
	patronvideos = '<b>Sinopsis:</b>(.*?)</div>'
	sinopsis     = re.compile(patronvideos,re.DOTALL).findall(matches[0])
	
	
	  
	# Busca los actores
	matchesactores = buscactores(matches[0]) 
	if len(matchesactores)>0:
		plot = plot + "Actores:   "
		c = 0
		actores = "ACTORES DE ESTA PELICULA :\n\n"
		for match in matchesactores:
			c =  c + 1
			actores = actores + "-"+match[1] + "\n"
			if   c == 3:
				plot = plot + match[1] + "\n"
			elif c == 4:
				plot = plot + "*              "  + match[1]+" "
			else:
				plot = plot + match[1]+ " , "
		
	plot = plot	+ "\nSinopsis: " + sinopsis[0]
	plot = re.sub("<[^>]+>"," ",plot)
	# Busca el trailer 
	patronvideos = '<param name="movie" value="([^"]+)"></param>'
	matchtrailer = re.compile(patronvideos,re.DOTALL).findall(matches[0])
	if len(matchtrailer)>0:
		for match in matchtrailer:
		# Añade al listado de XBMC
			xbmctools.addnewvideo( CHANNELNAME , "youtubeplay" , category ,"Directo", "Ver El Trailer de : "+title , match , thumbnail, plot )
	else:
		import trailertools
		print title
		s = unicode( title, "latin-1" )
		# Añade al listado de XBMC

		xbmctools.addnewfolder( "trailertools" , "buscartrailer" , category , config.getLocalizedString(30110)+" "+title , url , os.path.join(IMAGES_PATH, 'trailertools.png'), plot ) # Buscar trailer para
		
		
	matchesBK = matches[0]
	# Extrae las entradas (videos) para megavideo con tipo de audio
	patronvideos  = '<span  style="font-size:12px;"><strong>(.*?)</strong></span><br/>.*?'
	patronvideos += '<span.*?>.*?<a href="http\:\/\/www.megavideo.com\/[\?v=|v/]+([A-Z0-9]{8}).*?" target="_blank">1</a>.</span><br />'
	
	matches = re.compile(patronvideos,re.DOTALL).findall(matches[0])
	scrapertools.printMatches(matches)
	encontrados = set()
	for match in matches:
		if match[1] not in encontrados:
			encontrados.add(match[1])
		
			# Titulo
			scrapedtitle = title + " -   [" +scrapertools.entityunescape(match[0])+ "]" + " (Megavideo)"

			# URL
			scrapedurl = match[1]
			# Thumbnail
			scrapedthumbnail = thumbnail
			# Argumento
			scrapedplot = plot

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

			# Añade al listado de XBMC
			xbmctools.addnewvideo( CHANNELNAME , "play" , category ,"Megavideo", scrapedtitle , scrapedurl , scrapedthumbnail, scrapedplot )
	if len(matches)==0:
		listavideos = servertools.findvideos(data)
		encontrados = set()
		for titulo,scrapedurl,servidor in listavideos:
			if scrapedurl.strip() not in encontrados:
				encontrados.add(scrapedurl.strip())
				xbmctools.addnewvideo( CHANNELNAME , "play" , category ,servidor, title+ " - %s" % titulo  , scrapedurl , thumbnail, plot )		
	'''
	<span class="bloque-uploader">Anónimo</span>
	<span class="bloque-doblaje"><img src="../images/esp.gif" class="bandera" /></span>
	<span class="bloque-link">Opción 8: <a href="javascript:goTo('aHR0cDovL3d3dy5tZWdhdmlkZW8uY29tLz92PTVOM0JYOVMx', 'megavideo.com')" rel="nofollow">Ver película</a></span>
	'''
	patronvideos = '<span class="bloque-doblaje">(.+?)</span>[^<]+'
	patronvideos +='<span class="bloque-link">[^<]+<a href="javascript\:goTo\(\'([^\']+)\'\, \'([^\']+)\'\)"(.+?)</span>'
	#patronvideos +='(?:\| <a href="javascript\:goTo\(\'([^\']+)\'\, \'([^\']+)\'\)".*?)</span>'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)
	for match in matches:
	
		# URL
		if "megavideo" in match[2]:
			server = "Megavideo"
		elif "megaupload" in match[2]:
			server = "Megaupload"
		if "esp.gif" in match[0]:
			doblaje = "Español"
			
		else:
			doblaje = match[0].strip()			
		base64 = decrypt21.Base64()
		try:
			url2 = re.compile("javascript\:goTo\(\'([^\']+)\'\, \'([^\']+)\'\)").findall(match[3])[0]
			scrapedurl2 = base64._extract_code(base64.decode(url2[0]))
			scrapedurl = base64._extract_code(base64.decode(match[1]))
			part1 = " Parte 1 "
			part2 = " Parte 2 "
			scrapedtitle2 = title + part2+ " -   [" +doblaje+ "]" + " ("+server+")"
			#print match[3]
		except:
			scrapedurl = base64._extract_code(base64.decode(match[1]))
			part1 = ""
			part2 = ""			
			
		

		scrapedtitle = title + part1+ " -   [" +doblaje+ "]" + " ("+server+")"


		# Thumbnail
		scrapedthumbnail = thumbnail
		# Argumento
		scrapedplot = plot

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

		# Añade al listado de XBMC
		xbmctools.addnewvideo( CHANNELNAME , "play" , category ,server, scrapedtitle , scrapedurl , scrapedthumbnail, scrapedplot )
		if part2:
			xbmctools.addnewvideo( CHANNELNAME , "play" , category ,server, scrapedtitle2 , scrapedurl2 , scrapedthumbnail, scrapedplot )
	# Extrae las entradas (videos) directos
	patronvideos = 'flashvars="file=([^\&]+)\&amp;controlbar=over'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)
	if len(matches)>0:
		
		data1 = scrapertools.cachePage(matches[0])
		#logger.info(data)
		patron = 'author">(.*?)</media:credit>.*?<media\:content url="([^"]+)"'
		matches = re.compile(patron,re.DOTALL).findall(data1)
		scrapertools.printMatches(matches)
		
		for match in matches:
			# Añade al listado de XBMC
			xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title +" -  ["+match[0]+"]"+ " (Directo)" , match[1] , thumbnail , plot )
			
	# Busca otras peliculas relacionadas con los actores
	if len(matchesactores)>0:
		titulo = "Busca otros Films de los actores de esta pelicula"
		xbmctools.addnewfolder( CHANNELNAME , "listaractores" , category , titulo , matchesBK , thumbnail, actores )
		
	# Lista peliculas relacionadas
	titulo = "Ver Peliculas Relacionadas" 
	matches = buscarelacionados(matchesBK)
	plot2 = "PELICULAS RELACIONADAS :\n\n"
	for match in matches:
		plot2 = plot2 + "-"+match[1]+"\n"
	xbmctools.addnewfolder( CHANNELNAME , "listarelacionados" , category , titulo , matchesBK , thumbnail, plot2 )
	
	# 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 )
def channels_list():
	channelslist = []
	channelslist.append([ "Cinetube"              , "cinetube"             , "" , "ES" , "F" ])
	channelslist.append([ "Peliculasyonkis"       , "peliculasyonkis"      , "" , "ES" , "F" ])
	channelslist.append([ "Cinegratis"            , "cinegratis"           , "" , "ES" , "F,S,A,D" ])
	channelslist.append([ "tumejortv.com"         , "tumejortv"            , "" , "ES" , "F,S" ])
	channelslist.append([ "Peliculas21"           , "peliculas21"          , "" , "ES" , "F" ])
	channelslist.append([ "Dospuntocerovision"    , "dospuntocerovision"   , "" , "ES" , "F,S" ])
	channelslist.append([ "Cine15"                , "cine15"               , "" , "ES" , "F" ])
	channelslist.append([ "Peliculasid"           , "peliculasid"          , "" , "ES" , "F" ])
	channelslist.append([ "Cinegratis24h"         , "cinegratis24h"        , "" , "ES" , "F" ])
	channelslist.append([ "Cine-Adicto"           , "cineadicto"           , "" , "ES" , "F,D" ])
	channelslist.append([ "PelisFlv"              , "pelisflv"             , "" , "ES" , "F" ])
	channelslist.append([ "NoloMires"             , "nolomires"            , "" , "ES" , "F" ])
	channelslist.append([ "NewDivx"               , "newdivx"              , "" , "ES" , "F,D" ])
	channelslist.append([ "Peliculas Online FLV"  , "peliculasonlineflv"   , "" , "ES" , "F,D" ])
	channelslist.append([ "FilmesOnlineBr"        , "filmesonlinebr"       , "" , "PT" , "F" ])
	channelslist.append([ "TVShack.cc (VO)"       , "tvshack"              , "" , "EN" , "F,S,A,D,M" ])
	channelslist.append([ "DeLaTV"                , "delatv"               , "" , "ES" , "F" ])
	channelslist.append([ "Pelis24"               , "pelis24"              , "" , "ES" , "F,S" ])
	channelslist.append([ "Veocine"               , "veocine"              , "" , "ES" , "F,A,D" ])
	channelslist.append([ "Pintadibujos"          , "pintadibujos"         , "" , "ES" , "F,A" ])
	channelslist.append([ "Pelis Pekes"           , "pelispekes"           , "" , "ES" , "F,A" ])
	channelslist.append([ "Descarga Cine Clásico" , "descargacineclasico"  , "" , "ES" , "F,S" ])
	channelslist.append([ "Capitan Cinema"        , "capitancinema"        , "" , "ES" , "F" ])
	channelslist.append([ "Film Streaming"        , "filmstreaming"        , "" , "IT" , "F,A" ])
	channelslist.append([ "No Megavideo"          , "nomegavideo"          , "" , "ES" , "F" ])
	channelslist.append([ "LetMeWatchThis"        , "letmewatchthis"       , "" , "EN" , "F,S" ])
	channelslist.append([ "Cineblog01"            , "cineblog01"           , "" , "IT" , "F,S,A" ])
	channelslist.append([ "Seriesyonkis"          , "seriesyonkis"         , "Series" , "ES" , "S,A" ]) #Modificado por JUR para añadir la categoría
	channelslist.append([ "Seriespepito"          , "seriespepito"         , "" , "ES" , "S" ])
	channelslist.append([ "Series21"              , "series21"             , "" , "ES" , "S" ])
	channelslist.append([ "DeLaTV Series"         , "bancodeseries"        , "" , "ES" , "S" ])
	channelslist.append([ "CastTV"                , "casttv"               , "" , "ES,EN" , "S" ])
	channelslist.append([ "Ver Telenovelas Online", "vertelenovelasonline" , "" , "ES" , "S" ])
	channelslist.append([ "Anime Foros"           , "animeforos"           , "" , "ES", "A" ])
	channelslist.append([ "Yotix.tv"              , "yotix"                , "" , "ES" , "A" ])
	channelslist.append([ "MCAnime"               , "mcanime"              , "" , "ES" , "A" ])
	channelslist.append([ "Animetakus"            , "animetakus"           , "" , "ES" , "A" ])
	channelslist.append([ "Ver-anime"             , "veranime"             , "" , "ES" , "A" ])
	channelslist.append([ "Watchanimeon"          , "watchanimeon"         , "" , "EN" , "A" ])
	channelslist.append([ "Animeid"               , "animeid"              , "" , "ES" , "A" ])
	channelslist.append([ "Ovasid"                , "ovasid"               , "" , "ES" , "A" ])
	channelslist.append([ "dibujosanimadosgratis" , "dibujosanimadosgratis", "" , "ES" , "A" ])
	channelslist.append([ "DocumaniaTV"           , "documaniatv"          , "" , "ES" , "D" ])
	channelslist.append([ "DocumentariesTV"       , "documentariestv"      , "" , "EN", "D" ])
	channelslist.append([ "Documentalesyonkis"    , "documentalesyonkis"   , "" , "ES" , "D" ])
	channelslist.append([ "Documentalesatonline"  , "documentalesatonline" , "" , "ES" , "D" ])
	channelslist.append([ "Discoverymx.Wordpress" , "discoverymx"          , "" , "ES" , "D" ])
	channelslist.append([ "Gratisdocumentales"    , "gratisdocumentales"   , "" , "ES" , "D" ])
	channelslist.append([ "Programas TV Online"   , "programastv"          , "" , "ES" , "D" ])
	channelslist.append([ "Redes.tv"              , "redestv"              , "" , "ES" , "D" ])
	channelslist.append([ "Trailers ecartelera"   , "ecarteleratrailers"   , "" , "ES,EN" , "F" ])
	channelslist.append([ config.getLocalizedString(30128), "trailertools" , "" , "" , "F" ])
	channelslist.append([ "Stagevu"               , "stagevusite"          , "" , "" , "G" ])
	channelslist.append([ "tu.tv"                 , "tutvsite"             , "" , "ES", "G" ])
	channelslist.append([ "Megavideo"             , "megavideosite"        , "" , "" , "G" ])
	channelslist.append([ "Megaupload"            , "megauploadsite"       , "" , "" , "G" ])

	if config.getSetting("enableadultmode") == "true":
		channelslist.append([ "PeliculasEroticas" , "peliculaseroticas" , "" , "ES" , "F" ])
		channelslist.append([ "MocosoftX"         , "mocosoftx" , "" , "ES" , "F" ])
		channelslist.append([ "Anifenix.com"      , "anifenix" , "" , "ES" , "F" ])
		channelslist.append([ "tuporno.tv"        , "tupornotv" , "" , "ES" , "F" ])

	#channelslist.append([ "Divx Online" , "divxonline" , "" , "ES" , "F" ]) # added by ermanitu
	#channelslist.append([ "Eduman Movies" , "edumanmovies" , "" , "ES" , "F" ])
	#channelslist.append([ "SesionVIP" , "sesionvip" , "" , "ES" , "F" ])
	#channelslist.append([ "Pelis-Sevillista56" , "sevillista" , "" , "ES" , "F" ])
	#channelslist.append([ "seriesonline.us" , "seriesonline" , "" , "ES" , "S" ])
	#channelslist.append([ "Newcineonline" , "newcineonline" , "" , "ES" , "S" ])
	#channelslist.append([ "PeliculasHD" , "peliculashd" , "" , "ES" , "F" ])
	#channelslist.append([ "Wuapi" , "wuapisite" , "" , "ES" , "F" ])
	#channelslist.append([ "Frozen Layer" , "frozenlayer" , "" , "ES" , "A" ])
	return channelslist