def searchresults(params,Url,category): logger.info("[tupornotv.py] searchresults") buscador.salvar_busquedas(params,Url,category) url = "http://www.tuporno.tv/buscador/?str=%s" %Url itemlist = getsearchresults(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def searchresults(params, Url, category): logger.info("[tupornotv.py] searchresults") buscador.salvar_busquedas(params, Url, category) url = "http://www.tuporno.tv/buscador/?str=%s" % Url itemlist = getsearchresults(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def search(params, url, category): logger.info("[programastv.py] search") keyboard = xbmc.Keyboard('') keyboard.doModal() if (keyboard.isConfirmed()): tecleado = keyboard.getText() if len(tecleado) > 0: #convert to HTML tecleado = tecleado.replace(" ", "+") searchUrl = "http://programastvonline.blogspot.com/search?q=" + tecleado itemlist = [] itemlist.append( Item(channel=CHANNELNAME, title=tecleado, action="parsear", url="http://programastvonline.blogspot.com/search?q=" + tecleado, folder=True)) #searchresults(params,searchUrl,category) xbmctools.renderItems(itemlist, params, url, category) xbmcplugin.setPluginCategory(handle=int(sys.argv[1]), category=category) # Disable sorting... xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_NONE) # End of directory... xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
def search(params, url, category): logger.info("[programastv.py] search") keyboard = xbmc.Keyboard("") keyboard.doModal() if keyboard.isConfirmed(): tecleado = keyboard.getText() if len(tecleado) > 0: # convert to HTML tecleado = tecleado.replace(" ", "+") searchUrl = "http://programastvonline.blogspot.com/search?q=" + tecleado itemlist = [] itemlist.append( Item( channel=CHANNELNAME, title=tecleado, action="parsear", url="http://programastvonline.blogspot.com/search?q=" + tecleado, folder=True, ) ) # searchresults(params,searchUrl,category) xbmctools.renderItems(itemlist, params, url, category) xbmcplugin.setPluginCategory(handle=int(sys.argv[1]), category=category) # Disable sorting... xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_NONE) # End of directory... xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
def searchresults(params,tecleado,category): logger.info("[cinetube.py] searchresults") buscador.salvar_busquedas(params,tecleado,category) tecleado = tecleado.replace(" ", "+") url = "http://www.cinetube.es/buscar/peliculas/?palabra="+tecleado+"&categoria=&valoracion=" itemlist = getsearchresults(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def listfavorites(params, url, category): logger.info("[megalivewall.py] listfavorites") itemlist = getlistfavorites(params, url, category) if len(itemlist) > 0: xbmctools.renderItems(itemlist, params, url, category, isPlayable='true')
def playByID(params, url, category): logger.info("[megalivewall.py] listchannel") itemlist = getplayByID(params, url, category) if len(itemlist) > 0: xbmctools.renderItems(itemlist, params, url, category, isPlayable='true')
def detalle(params,url,category): logger.info("[a3.py] detalle") title = urllib.unquote_plus( params.get("title") ) thumbnail = urllib.unquote_plus( params.get("thumbnail") ) plot = urllib.unquote_plus( params.get("plot") ) server = "directo" item = Item(channel=CHANNELNAME, title=title , url=url, thumbnail=thumbnail , plot=plot , server=server , folder=True) itemlist = channel.detalle( item ) xbmctools.renderItems(itemlist, params, url, category)
def listfavorites(params,url,category): logger.info("[megalivewall.py] listfavorites") itemlist = getlistfavorites(params,url,category) if len(itemlist)>0: xbmctools.renderItems(itemlist, params, url, category,isPlayable='true')
def listcategory(params, url, category): logger.info("[megalivewall.py] listcategory") itemlist = getlistcategory(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def listWall(params, url, category): logger.info("[megalivewall.py] listWall") itemlist = getlistWall(params, url, category) xbmctools.renderItems(itemlist, params, url, category, isPlayable='true')
def novedades(params,url,category): logger.info("[myhentaitube.py] novedades") itemlist = getnovedades(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def novedades(params,url,category): logger.info("[tupornotv.py] novedades") itemlist = getnovedades(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def categorias(params, url, category): logger.info("[tupornotv.py] categorias") itemlist = getcategorias(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def nextsearchpage(params, url, category): logger.info("[tupornotv.py] nextsearchpage") itemlist = getsearchresults(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def novedades(params, url, category): logger.info("[tupornotv.py] novedades") itemlist = getnovedades(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def mainlist(params,url,category): logger.info("[letmewatchthis.py] mainlist") itemlist = getmainlist(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def parsear(params, url, category): logger.info("[programastv.py] parsear") itemlist = parse(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def searchvideos(params, url, category): logger.info("[programastv.py] parse") # ------------------------------------------------------ # Descarga la página # ------------------------------------------------------ data = scrapertools.cachePage(url) #logger.info(data) # ------------------------------------------------------ # Extrae las entradas # ------------------------------------------------------ #quitamos a partir de los comentarios data = data[0:data.index('class=\'post-footer\'>')] videos = servertools.findvideos(data) #xbmc.output( videos[0][2] + " es 02") #xbmc.output( videos[1][2] + " es 12") #TODO extract plot y thumbnail if len(videos) > 0: if (videos[0][2] == "Megavideo") and (videos[1][2] == "Megaupload"): xbmc.output("asumimos que solo hay un video con dos mirrors") patronvideos = 'class=\'post-title entry-title\'>.+?<a href=\'.+?\'>(.+?)</a>' matches = re.compile(patronvideos, re.DOTALL).findall(data) xbmc.output(matches[0]) xbmctools.addnewvideo(CHANNELNAME, "play", category, "Megavideo", matches[0], videos[0][1], "", "") xbmctools.addnewvideo(CHANNELNAME, "play", category, "Megaupload", matches[0], videos[1][1], "", "") elif len(videos) == 1: if re.search('&xtp=(.+?)_VIDEO', videos[0][1]): patronvideos = '&xtp=(.+?)_VIDEO' matches = re.compile(patronvideos, re.DOTALL).findall(data) videos[0][1] = matches[0] xbmc.output("aqui estamos") patronvideos = 'class=\'post-title entry-title\'>.+?<a href=\'.+?\'>(.+?)</a>' matches = re.compile(patronvideos, re.DOTALL).findall(data) xbmctools.addnewvideo(CHANNELNAME, "play", category, videos[0][2], matches[0], videos[0][1], "", "") else: xbmc.output("hay mas de 1 video") for video in videos: if video[2].find("youtube") != -1: continue #xbmc.output(video[2] + video[1] + " 2 + 1") indexvideo = data.index(video[1]) #xbmc.output(str(indexvideo)) #if (video[2]=="Megaupload"): # #xbmc.output(str(indexvideo)) # indexvideo=data.rindex(">-",0,indexvideo) # #xbmc.output(str(indexvideo)) indexvideo1 = data.rindex(">-", 0, indexvideo) #xbmc.output(str(indexvideo1)) indexvideo2 = data.rindex(">-", 0, indexvideo1) #xbmc.output(str(indexvideo2)) #xbmc.output(data[indexvideo2+1:indexvideo1]) nombre = re.sub('<.+?>', '', data[indexvideo2 + 3:indexvideo1 - 5]) while re.search('egaupl', nombre) or re.search( 'egavid', nombre): indexvideo3 = data.rindex(">-", 0, indexvideo2) nombre = re.sub('<.+?>', '', data[indexvideo3 + 3:indexvideo2 - 5]) indexvideo2 = indexvideo3 xbmctools.addnewvideo(CHANNELNAME, "play", category, video[2], nombre + " " + video[2], video[1], "", "") else: xbmc.output("es un listado") #xbmc.output(data) data = data[data.index('class=\'post-header-line-1\'') + 33:] #xbmc.output(data) xbmc.output("aqui llego") p = MyParser() p.feed(data) p.close() itemlist = [] for k, v in p.anchors.items(): print k, "=>", v if re.search('programastvonline.blogspot.com', v[0]): itemlist.append( Item(channel=CHANNELNAME, title=k, action="parsear", url=v[0], folder=True)) xbmctools.renderItems(itemlist, params, url, category) #'egaupl', nombre) #myparser=MyParser(data) #myparser.parse(data) #links = myparser.get_hyperlinks() # get the hyperlinks list #xbmc.output(str(len(links))) # print all the links #descriptions = myparser.get_descriptions() # get the hyperlinks list #xbmc.output("b",descriptions) # print all the links #xbmc.output("aqui llego 1") #post-header-line-1 #format = formatter.NullFormatter() # create default formatter #htmlparser = LinksExtractor(format) # create new parser object # for video in listavideos: # videotitle = video[0] # scrapedurl = video[1] # server = video[2] # xbmctools.addnewvideo( CHANNELNAME , "play" , category , server , title.strip()+" "+match[1]+" "+match[2]+" "+videotitle , scrapedurl , thumbnail , plot ) # ------------------------------------------------------------------------------------ # Busca los enlaces a los videos # ------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------ # Label (top-right)... xbmcplugin.setPluginCategory(handle=int(sys.argv[1]), category=category) # Disable sorting... xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_NONE) # End of directory... xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
def secciones(params, url, category): logger.info("[programastv.py] seccions") itemlist = getsecciones(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def listpeliconcaratula(params,url,category): logger.info("[cinetube.py] listpeliconcaratula") itemlist = getlistpeliconcaratula(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
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 listchannel(params,url,category): logger.info("[megalivewall.py] listchannel") itemlist = getlistchannel(params,url,category) xbmctools.renderItems(itemlist, params, url, category,isPlayable='true')
def run(): logger.info("[launcher.py] run") # Extract parameters from sys.argv params, channel_name, title, fulltitle, url, thumbnail, plot, action, server, extra, subtitle, category, show, password = extract_parameters( ) logger.info( "[launcher.py] channel_name=%s, title=%s, fulltitle=%s, url=%s, thumbnail=%s, plot=%s, action=%s, server=%s, extra=%s, subtitle=%s, category=%s, show=%s, password=%s" % (channel_name, title, fulltitle, url, thumbnail, plot, action, server, extra, subtitle, category, show, password)) from core.item import Item item = Item(channel=channel_name, title=title, fulltitle=fulltitle, url=url, thumbnail=thumbnail, plot=plot, server=server, category=category, extra=extra, subtitle=subtitle, show=show, password=password) try: # Actualizar version if (action == "configuracion"): logger.info("[launcher.py] configuracion") config.open_settings() elif (action == "vacio"): logger.info("[launcher.py] vacio") elif action == "play": import channel generico = True itemlist = channel.play(item) if len(itemlist) == 0: return item = itemlist[0] if item.url.lower().endswith(".jpg") or item.url.lower().endswith( ".png"): import os slideshowpath = os.path.join(config.get_data_path(), "slideshow") if not os.path.exists(slideshowpath): try: os.mkdir(slideshowpath) except: pass urllib.urlretrieve(item.url, os.path.join(slideshowpath, "temp.jpg")) import xbmc xbmc.executebuiltin("SlideShow(" + slideshowpath + ")") else: import xbmcplugin, xbmcgui, xbmc, xbmcaddon, sys xlistitem = xbmcgui.ListItem(item.title, iconImage="DefaultVideo.png", thumbnailImage=item.thumbnail, path=item.url) xlistitem.setInfo("video", { "Title": item.title, "Plot": item.plot, "Genre": item.category }) #xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=item.url)) # Añadimos el listitem a una lista de reproducción (playlist) playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO) playlist.clear() playlist.add(item.url, xlistitem) # Reproduce xbmcPlayer = xbmc.Player(xbmc.PLAYER_CORE_AUTO) xbmcPlayer.play(playlist) else: import channel generico = True if action == "search": logger.info("[launcher.py] search") import xbmc keyboard = xbmc.Keyboard("") keyboard.doModal() if (keyboard.isConfirmed()): tecleado = keyboard.getText() tecleado = tecleado.replace(" ", "+") itemlist = channel.search(item, tecleado) else: itemlist = [] else: exec "itemlist = channel." + action + "(item)" # Activa el modo biblioteca #import xbmcplugin #import sys #handle = sys.argv[1] #xbmcplugin.setContent(int( handle ),"movies") # Añade los items a la lista de XBMC import xbmctools xbmctools.renderItems(itemlist, params, url, category) except urllib2.URLError, e: import sys 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 = "No se puede conectar con el sitio web" ok = ventana_error.ok("plugin", 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 = ("El sitio web no funciona correctamente (error http %d)" % e.code) ok = ventana_error.ok("plugin", texto)
def playByID(params,url,category): logger.info("[megalivewall.py] listchannel") itemlist = getplayByID(params,url,category) if len(itemlist)>0: xbmctools.renderItems(itemlist, params, url, category,isPlayable='true')
def mainlist(params,url,category): logger.info("[a3.py] mainlist") itemlist = channel.mainlist() xbmctools.renderItems(itemlist, params, url, category)
def mainlist(params, url, category): logger.info("[megalivewall.py] mainlist") itemlist = getmainlist(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def run(): logger.info("[launcher.py] run") # Extract parameters from sys.argv params, channel_name, title, fulltitle, url, thumbnail, plot, action, server, extra, subtitle, category, show, password = extract_parameters() logger.info("[launcher.py] channel_name=%s, title=%s, fulltitle=%s, url=%s, thumbnail=%s, plot=%s, action=%s, server=%s, extra=%s, subtitle=%s, category=%s, show=%s, password=%s" % (channel_name, title, fulltitle, url, thumbnail, plot, action, server, extra, subtitle, category, show, password)) from core.item import Item item = Item(channel=channel_name, title=title , fulltitle=fulltitle, url=url, thumbnail=thumbnail , plot=plot , server=server, category=category, extra=extra, subtitle=subtitle, show=show, password=password) try: # Actualizar version if ( action=="configuracion" ): logger.info("[launcher.py] configuracion") config.open_settings( ) elif ( action=="vacio" ): logger.info("[launcher.py] vacio") elif action=="play": import channel generico = True itemlist = channel.play(item) if len(itemlist)==0: return elif len(itemlist)==1: item = itemlist[0] if item.url.lower().endswith(".jpg") or item.url.lower().endswith(".png"): import os slideshowpath = os.path.join(config.get_data_path(),"slideshow") if not os.path.exists(slideshowpath): try: os.mkdir(slideshowpath) except: pass urllib.urlretrieve(item.url, os.path.join(slideshowpath,"temp.jpg")) import xbmc xbmc.executebuiltin( "SlideShow("+slideshowpath+")" ) else: import xbmcplugin,xbmcgui,xbmc,xbmcaddon,sys xlistitem = xbmcgui.ListItem( item.title, iconImage="DefaultVideo.png", thumbnailImage=item.thumbnail, path=item.url) xlistitem.setInfo( "video", { "Title": item.title, "Plot" : item.plot , "Genre" : item.category } ) #xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=item.url)) # Añadimos el listitem a una lista de reproducción (playlist) playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( item.url, xlistitem ) # Reproduce xbmcPlayer = xbmc.Player() xbmcPlayer.play(playlist) return # if other action # OR # len(itemlist)>1 for action=="play": import channel generico = True if action=="search": logger.info("[launcher.py] search") import xbmc keyboard = xbmc.Keyboard("") keyboard.doModal() if (keyboard.isConfirmed()): tecleado = keyboard.getText() tecleado = tecleado.replace(" ", "+") itemlist = channel.search(item,tecleado) else: itemlist = [] else: exec "itemlist = channel."+action+"(item)" # Activa el modo biblioteca #import xbmcplugin #import sys #handle = sys.argv[1] #xbmcplugin.setContent(int( handle ),"movies") # Añade los items a la lista de XBMC import xbmctools xbmctools.renderItems(itemlist, params, url, category) except urllib2.URLError,e: import sys 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.code,e.reason)) texto = "No se puede conectar con el sitio web" ok = ventana_error.ok ("plugin", 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 = ("El sitio web no funciona correctamente (error http %d)" % e.code) ok = ventana_error.ok ("plugin", texto)
def masVotados(params, url, category): logger.info("[tupornotv.py] masVotadas") itemlist = getmasVotados(params, url, category) xbmctools.renderItems(itemlist, params, url, category)
def mainlist(params,url,category): logger.info("[myhentaitube.py] mainlist") itemlist = getmainlist(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
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
def series(params,url,category): logger.info("[letmewatchthis.py] series") itemlist = getpeliculas(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
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 searchvideos(params, url, category): logger.info("[programastv.py] parse") # ------------------------------------------------------ # Descarga la página # ------------------------------------------------------ data = scrapertools.cachePage(url) # logger.info(data) # ------------------------------------------------------ # Extrae las entradas # ------------------------------------------------------ # quitamos a partir de los comentarios data = data[0 : data.index("class='post-footer'>")] videos = servertools.findvideos(data) # xbmc.output( videos[0][2] + " es 02") # xbmc.output( videos[1][2] + " es 12") # TODO extract plot y thumbnail if len(videos) > 0: if (videos[0][2] == "Megavideo") and (videos[1][2] == "Megaupload"): xbmc.output("asumimos que solo hay un video con dos mirrors") patronvideos = "class='post-title entry-title'>.+?<a href='.+?'>(.+?)</a>" matches = re.compile(patronvideos, re.DOTALL).findall(data) xbmc.output(matches[0]) xbmctools.addnewvideo(CHANNELNAME, "play", category, "Megavideo", matches[0], videos[0][1], "", "") xbmctools.addnewvideo(CHANNELNAME, "play", category, "Megaupload", matches[0], videos[1][1], "", "") elif len(videos) == 1: if re.search("&xtp=(.+?)_VIDEO", videos[0][1]): patronvideos = "&xtp=(.+?)_VIDEO" matches = re.compile(patronvideos, re.DOTALL).findall(data) videos[0][1] = matches[0] xbmc.output("aqui estamos") patronvideos = "class='post-title entry-title'>.+?<a href='.+?'>(.+?)</a>" matches = re.compile(patronvideos, re.DOTALL).findall(data) xbmctools.addnewvideo(CHANNELNAME, "play", category, videos[0][2], matches[0], videos[0][1], "", "") else: xbmc.output("hay mas de 1 video") for video in videos: xbmc.output(video[2] + video[1]) indexvideo = data.index(video[1]) # xbmc.output(str(indexvideo)) # if (video[2]=="Megaupload"): # #xbmc.output(str(indexvideo)) # indexvideo=data.rindex(">-",0,indexvideo) # #xbmc.output(str(indexvideo)) indexvideo1 = data.rindex(">-", 0, indexvideo) # xbmc.output(str(indexvideo1)) indexvideo2 = data.rindex(">-", 0, indexvideo1) # xbmc.output(str(indexvideo2)) # xbmc.output(data[indexvideo2+1:indexvideo1]) nombre = re.sub("<.+?>", "", data[indexvideo2 + 3 : indexvideo1 - 5]) while re.search("egaupl", nombre) or re.search("egavid", nombre): indexvideo3 = data.rindex(">-", 0, indexvideo2) nombre = re.sub("<.+?>", "", data[indexvideo3 + 3 : indexvideo2 - 5]) indexvideo2 = indexvideo3 xbmctools.addnewvideo( CHANNELNAME, "play", category, video[2], nombre + " " + video[2], video[1], "", "" ) else: xbmc.output("es un listado") # xbmc.output(data) data = data[data.index("class='post-header-line-1'") + 33 :] # xbmc.output(data) xbmc.output("aqui llego") p = MyParser() p.feed(data) p.close() itemlist = [] for k, v in p.anchors.items(): print k, "=>", v if re.search("programastvonline.blogspot.com", v[0]): itemlist.append(Item(channel=CHANNELNAME, title=k, action="parsear", url=v[0], folder=True)) xbmctools.renderItems(itemlist, params, url, category) #'egaupl', nombre) # myparser=MyParser(data) # myparser.parse(data) # links = myparser.get_hyperlinks() # get the hyperlinks list # xbmc.output(str(len(links))) # print all the links # descriptions = myparser.get_descriptions() # get the hyperlinks list # xbmc.output("b",descriptions) # print all the links # xbmc.output("aqui llego 1") # post-header-line-1 # format = formatter.NullFormatter() # create default formatter # htmlparser = LinksExtractor(format) # create new parser object # for video in listavideos: # videotitle = video[0] # scrapedurl = video[1] # server = video[2] # xbmctools.addnewvideo( CHANNELNAME , "play" , category , server , title.strip()+" "+match[1]+" "+match[2]+" "+videotitle , scrapedurl , thumbnail , plot ) # ------------------------------------------------------------------------------------ # Busca los enlaces a los videos # ------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------ # Label (top-right)... xbmcplugin.setPluginCategory(handle=int(sys.argv[1]), category=category) # Disable sorting... xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_NONE) # End of directory... xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
def capitulos(params,url,category): logger.info("[anifenix.py] capitulos") itemlist = getcapitulos(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def mainlist(params,url,category): logger.info("[anifenix.py] mainlist") itemlist = getmainlist(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def masVotados(params,url,category): logger.info("[tupornotv.py] masVotadas") itemlist = getmasVotados(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def mainlist(params,url,category): logger.info("[megalivewall.py] mainlist") itemlist = getmainlist(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def categorias(params,url,category): logger.info("[tupornotv.py] categorias") itemlist = getcategorias(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def listcategory(params,url,category): logger.info("[megalivewall.py] listcategory") itemlist = getlistcategory(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def nextsearchpage(params,url,category): logger.info("[tupornotv.py] nextsearchpage") itemlist = getsearchresults(params,url,category) xbmctools.renderItems(itemlist, params, url, category)
def searchresults(params,url,category): logger.info("[cinetube.py] searchresults") itemlist = getsearchresults(params,url,category) xbmctools.renderItems(itemlist, params, url, category)