def reset_password(item): logger.info("tvalacarta.channels.configuracion reset_password") email = plugintools.keyboard_input( config.get_setting("account_email") ,"Introduce tu email") if len(email.strip())==0: plugintools.message("Olvidé mi contraseña","No has introducido ningún email") return result = api.accounts_reset_password_request( email ) if result["error"]: plugintools.message("Olvidé mi contraseña","Se ha producido un error",result["error_message"]) return request_id = result["body"]["request_id"] canceled = plugintools.message("Olvidé mi contraseña","Te llegará un correo con un enlace","Haz click sobre él y luego pulsa OK para introducir tu nueva contraseña") if not canceled: password = plugintools.keyboard_input("","Introduce tu nueva contraseña",hidden=True) password_confirmation = plugintools.keyboard_input("","Confirma tu nueva contraseña",hidden=True) result = api.accounts_reset_password_confirmation(request_id , password) if not result["error"]: plugintools.message("Olvidé mi contraseña","Tu contraseña ha sido modificada") else: plugintools.message("Olvidé mi contraseña","Error al cambiar la contraseña", result["error_message"] ) else: plugintools.message("Olvidé mi contraseña","El proceso se ha interrumpido","Tu contraseña no ha cambiado") plugintools.refresh_items()
def reset_password(item): logger.info("tvalacarta.channels.configuracion reset_password") email = plugintools.keyboard_input( config.get_setting("account_email") ,"Introduce tu email") if len(email.strip())==0: plugintools.message("Olvidé mi contraseña","No has introducido ningún email") return result = api.accounts_reset_password_request( email ) if result["error"]: plugintools.message("Olvidé mi contraseña","Se ha producido un error",result["error_message"]) return request_id = result["body"]["request_id"] canceled = plugintools.message("Olvidé mi contraseña","Te llegará un correo con un enlace","Haz click sobre él y luego pulsa OK para introducir tu nueva contraseña") if not canceled: password = plugintools.keyboard_input("","Introduce tu contraseña",hidden=True) password_confirmation = plugintools.keyboard_input("","Confirma tu contraseña",hidden=True) result = api.accounts_reset_password_confirmation(request_id , password) if not result["error"]: plugintools.message("Olvidé mi contraseña","Tu contraseña ha sido modificada") else: plugintools.message("Olvidé mi contraseña","Error al cambiar la contraseña", result["error_message"] ) else: plugintools.message("Olvidé mi contraseña","El proceso se ha interrumpido","Tu contraseña no ha cambiado") plugintools.refresh_items()
def register(item): logger.info("tvalacarta.channels.configuracion register") email = plugintools.keyboard_input( config.get_setting("account_email") ,"Introduce tu email") password = plugintools.keyboard_input("","Introduce tu contraseña",hidden=True) if len(password)<6: plugintools.message("Crear nueva cuenta","La contraseña debe tener al menos 6 caracteres") return password_confirmation = plugintools.keyboard_input("","Confirma tu contraseña",hidden=True) if password<>password_confirmation: plugintools.message("Crear nueva cuenta","La contraseña y la confirmacion", "deben ser iguales") return result = api.accounts_register( email , password ) if not result["error"]: config.set_setting("account_type_registered","1") config.set_setting("account_email",email) config.set_setting("account_session",result["body"]["s"]) plugintools.refresh_items() plugintools.message("Crear nueva cuenta","Sesion iniciada con "+email) else: plugintools.message("Crear nueva cuenta","Error al crear la nueva cuenta", result["error_message"] )
def login(item): logger.info("tvalacarta.channels.configuracion login") email = plugintools.keyboard_input( config.get_setting("account_email") ,"Introduce tu email") if email=="": return password = plugintools.keyboard_input("","Introduce tu contraseña",hidden=True) if password=="": return result = api.accounts_login( email , password) if not result["error"]: # Login con éxito, actualiza los datos y quita el id anónimo config.set_setting("account_type_registered","1") config.set_setting("account_email",email) config.set_setting("account_session",result["body"]["s"]) config.set_setting("account_anonymous_id","") plugintools.refresh_items() plugintools.message("Iniciar sesión","Sesion iniciada con "+email) else: # Login sin éxito, invalida la sesión y deja el login como anónimo config.set_setting("account_session","") config.set_setting("account_type_registered","0") plugintools.message("Iniciar sesión","Identificacion no valida",result["error_message"])
def change_password(item): logger.info("tvalacarta.channels.configuracion change_password") old_password = plugintools.keyboard_input("","Introduce tu ANTIGUA contraseña",hidden=True) if len(old_password)<6: plugintools.message("Cambiar contraseña","La contraseña debe tener al menos 6 caracteres") return password = plugintools.keyboard_input("","Introduce tu NUEVA contraseña",hidden=True) if len(password)<6: plugintools.message("Cambiar contraseña","La contraseña debe tener al menos 6 caracteres") return password_confirmation = plugintools.keyboard_input("","Confirma tu NUEVA contraseña",hidden=True) if password<>password_confirmation: plugintools.message("Cambiar contraseña","La contraseña y la confirmacion", "deben ser iguales") return result = api.accounts_change_password(old_password,password) if not result["error"]: plugintools.message("Cambiar contraseña","Tu contraseña ha sido modificada") else: plugintools.message("Cambiar contraseña","Error al cambiar la contraseña", result["error_message"] ) plugintools.refresh_items()
def login(item): logger.info("tvalacarta.channels.configuracion login") email = plugintools.keyboard_input(config.get_setting("account_email"), "Introduce tu email") if email == "": return password = plugintools.keyboard_input("", "Introduce tu contraseña", hidden=True) if password == "": return result = api.accounts_login(email, password) if not result["error"]: # Login con éxito, actualiza los datos y quita el id anónimo config.set_setting("account_type_registered", "1") config.set_setting("account_email", email) config.set_setting("account_session", result["body"]["s"]) config.set_setting("account_anonymous_id", "") plugintools.refresh_items() plugintools.message("Iniciar sesión", "Sesion iniciada con " + email) else: # Login sin éxito, invalida la sesión y deja el login como anónimo config.set_setting("account_session", "") config.set_setting("account_type_registered", "0") plugintools.message("Iniciar sesión", "Identificacion no valida", result["error_message"])
def agrega_lista(params): parser2 = parser.replace( "(Dedicado al rey de las Listas: [COLOR blue]Sebas[COLOR skyblue])", "*** Agregar Lista ***") #plugintools.add_item(action="",url="",title=parser2,thumbnail=logo,fanart=fondo,folder=False,isPlayable=False) titulo = plugintools.keyboard_input( '', 'Introduzca [COLOR red]Nombre[/COLOR] de la Lista') url = plugintools.keyboard_input( '', 'Introduzca [COLOR red]URL[/COLOR] de la Lista') logo1 = plugintools.keyboard_input( '', 'Introduzca [COLOR red]Url del Logo[/COLOR] de la Lista') fondo1 = plugintools.keyboard_input( '', 'Introduzca [COLOR red]Url del Fondo[/COLOR] de la Lista') file_listas = open(mis_listas, "a+") file_listas.write("<Lista>\n") file_listas.write("<Nombre>" + titulo + "<<\n") file_listas.write("<Url>" + url + "<<\n") file_listas.write("<Logo>" + logo1 + "<<\n") file_listas.write("<Fondo>" + fondo1 + "<<\n") file_listas.write("<Fin Lista>\n") file_listas.close() return
def monova0_bum(params): plugintools.log('[%s %s] [BUM+] Monova... %s' % (addonName, addonVersion, repr(params))) thumbnail = 'http://upload.wikimedia.org/wikipedia/en/f/f4/Monova.jpg' fanart = 'http://www.gadgethelpline.com/wp-content/uploads/2013/10/Digital-Piracy.png' show = 'list' plugintools.modo_vista(show) try: texto = "" texto = 'the strain spanish' texto = plugintools.keyboard_input(texto) plugintools.set_setting("alluc_search", texto) params["plot"] = texto texto = texto.lower() if texto == "": errormsg = plugintools.message( "Arena+", "Por favor, introduzca el término a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # https://isohunt.to/torrents/?ihq=the+strain+spanish url = 'https://www.monova.org/search.php?sort=5&term=' + texto + '&verified=1' params["url"] = url url = params.get("url") referer = 'https://monova.org' monova1_bum(params) except: pass
def search(params): plugintools.log("movie4k.search "+repr(params)) text = plugintools.keyboard_input(title="Input search terms") url = MAIN_URL+"movies.php?list=search" post = "search="+text.replace(" ","+") body,response_headers = read_body_and_headers(url, post=post) pattern = '<TR id="coverPreview[^<]+' pattern += '<TD width="550" id="tdmovies"[^<]+' pattern += '<a href="([^"]+)">([^<]+)</a>' matches = plugintools.find_multiple_matches(body,pattern) for scrapedurl, scrapedtitle in matches: url = urlparse.urljoin(url,scrapedurl) title = scrapedtitle.strip() thumbnail = "" plot = "" plugintools.log("movie4k.search title="+title+", url="+url+", thumbnail="+thumbnail) if "watch-tvshow" in url: url = MAIN_URL+"tvshows-season-"+plugintools.find_single_match(url,MAIN_URL+"([A-Za-z0-9\-]+)-watch-tvshow-\d+.html")+".html" plugintools.add_item( action="tvshow_seasons", title=title, url=url, thumbnail=thumbnail , plot=plot, fanart=thumbnail , folder=True ) else: plugintools.add_item( action="single_movie", title=title, url=url, thumbnail=thumbnail , plot=plot, fanart=thumbnail , folder=True )
def mundoplus0(params): plugintools.log("[Arena+ 0.3.3].Mundoplus.tv " + repr(params)) try: texto = "" texto = 'strain' texto = plugintools.keyboard_input(texto) plugintools.set_setting("mundoplus_search", texto) params["plot"] = texto texto = texto.lower() if texto == "": errormsg = plugintools.message( "Arena+", "Por favor, introduzca serie a buscar") return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") url = 'http://www.mundoplus.tv/programacion/buscador.php?canal=g_todos&fecha=TODAS&buscar=' + texto #url = 'http://www.alluc.com/stream/'+texto+'++lang:es' #url=baseurl+'stream/?q='+texto+'&stream=Streams' #url=baseurl+'stream/'+texto params["url"] = url url = params.get("url") referer = 'http://www.mundoplus.tv' plugintools.log("Texto a buscar: " + title) mundoplus1(params) except: pass
def bitsnoop0_bum(params): plugintools.log('[%s %s] [BUM+] BitSnoop... %s' % (addonName, addonVersion, repr(params))) try: texto = ""; texto='riddick' texto = plugintools.keyboard_input(texto) plugintools.set_setting("alluc_search",texto) params["plot"]=texto texto = texto.lower() if texto == "": errormsg = plugintools.message("PalcoTV","Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # http://bitsnoop.com/search/all/the+strain+spanish/c/d/1/ url = 'http://bitsnoop.com/search/all/'+texto+'/c/d/1/' params["url"]=url url = params.get("url") referer = 'http://www.bitsnoop.com' bitsnoop1_bum(params) except: pass
def cambia_hora_marcador(params): if not os.path.exists(fich_hora): diferencia = "00:00" file_hora = open(fich_hora, "w+") file_hora.write("00:00") file_hora.close() else: file_hora = open(fich_hora, "r") diferencia = file_hora.read() file_hora.close() pide = plugintools.keyboard_input( diferencia, 'Introduzca Diferencia (con [COLOR red]Signo Menos[/COLOR] si son a Disminuir) [COLOR green]XX:XX[/COLOR]' ) if pide <> diferencia: file_hora = open(fich_hora, "w+") file_hora.write(pide) file_hora.close() xbmcgui.Dialog().ok( "- Tenga en Cuenta -", "Para que el cambio tenga efecto en la Guía, tendrá que salir del Parser y volver a entrar." ) return
def monova0_bum(params): plugintools.log('[%s %s] [BUM+] Monova... %s' % (addonName, addonVersion, repr(params))) thumbnail = 'http://upload.wikimedia.org/wikipedia/en/f/f4/Monova.jpg' fanart = 'http://www.gadgethelpline.com/wp-content/uploads/2013/10/Digital-Piracy.png' show = 'list' plugintools.modo_vista(show) try: texto = ""; texto='the strain spanish' texto = plugintools.keyboard_input(texto) plugintools.set_setting("alluc_search",texto) params["plot"]=texto texto = texto.lower() if texto == "": errormsg = plugintools.message("PalcoTV","Por favor, introduzca el término a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # https://isohunt.to/torrents/?ihq=the+strain+spanish url = 'https://www.monova.org/search.php?sort=5&term='+texto+'&verified=1' params["url"]=url url = params.get("url") referer = 'https://monova.org' monova1_bum(params) except: pass
def get_search(): qry =plugintools.keyboard_input('','ค้นหา') showsList = vte.getsearch(qry) for show in showsList: thumb = show.get('thumbnail') plugintools.add_item(title=show.get('title'), action='showepisodes', url=show.get('url'), thumbnail=thumb) plugintools.close_item_list()
def ir_a(params): vextra = params.get("extra") extra = vextra[0] maxpag = vextra[1] url = params.get("url") #Eliminamos el número de página de la URL para poder contruir la nueva url = url[:url.rfind("/")] #Pedimos al usuario la página mipagina = plugintools.keyboard_input() if not mipagina.isdigit(): plugintools.message("ERROR", "Por favor, introduzca un número.") plugintools.add_item(action="ir_a", url=url, title="[COLORred][B] Ir a página...[/B][/COLOR]", extra=extra, thumbnail=thumbnail, fanart=fanart, folder=True, isPlayable=False) else: miurl = url + '/' + mipagina plugintools.add_item(action="hdfull_seccion", title="[COLORred][B] Continúa a la página " + str(mipagina) + "[/B][/COLOR]", url=miurl, thumbnail=thumbnail, fanart=fanart, extra=extra, folder=True, isPlayable=False)
def bitsnoop0(params): plugintools.log("[movie.ultra.7k 0.3.0].BitSnoop" + repr(params)) try: texto = "" texto = 'riddick' texto = plugintools.keyboard_input(texto) plugintools.set_setting("alluc_search", texto) params["plot"] = texto texto = texto.lower() if texto == "": errormsg = plugintools.message( "Movie Ultra 7K", "Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # http://bitsnoop.com/search/all/the+strain+spanish/c/d/1/ url = 'http://bitsnoop.com/search/all/' + texto + '/c/d/1/' params["url"] = url url = params.get("url") referer = 'http://www.bitsnoop.com' bitsnoop1(params) except: pass
def bitsnoop0_bum(params): plugintools.log('[%s %s] [BUM+] BitSnoop... %s' % (addonName, addonVersion, repr(params))) try: texto = "" texto = 'riddick' texto = plugintools.keyboard_input(texto) plugintools.set_setting("alluc_search", texto) params["plot"] = texto texto = texto.lower() if texto == "": errormsg = plugintools.message( "Arena+", "Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # http://bitsnoop.com/search/all/the+strain+spanish/c/d/1/ url = 'http://bitsnoop.com/search/all/' + texto + '/c/d/1/' params["url"] = url url = params.get("url") referer = 'http://www.bitsnoop.com' bitsnoop1_bum(params) except: pass
def isohunt0_bum(params): plugintools.log('[%s %s] [BUM+] Isohunt... %s' % (addonName, addonVersion, repr(params))) thumbnail = 'http://www.userlogos.org/files/logos/dfordesmond/isohunt%201.png' fanart = 'http://2.bp.blogspot.com/_NP40rzexJsc/TMGWrixybJI/AAAAAAAAHCU/ij1--_DQEZo/s1600/Keep_Seeding____by_Carudo.jpg' show = 'list' plugintools.modo_vista(show) try: texto = "" texto = 'riddick' texto = plugintools.keyboard_input(texto) plugintools.set_setting("alluc_search", texto) params["plot"] = texto texto = texto.lower() if texto == "": errormsg = plugintools.message( "Arena+", "Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # https://isohunt.to/torrents/?ihq=the+strain+spanish url = 'https://isohunt.to/torrents/?ihq=' + texto + '&Torrent_sort=seeders.desc' params["url"] = url url = params.get("url") referer = 'https://isohunt.to' isohunt1_bum(params) except: pass
def search(params): plugintools.log("movie4k.search "+repr(params)) text = plugintools.keyboard_input(title="Input search terms") url = MAIN_URL+"movies.php?list=search" post = "search="+text.replace(" ","+") body,response_headers = read_body_and_headers_cached(url, post=post) pattern = '<TR id="coverPreview\d+">(.*?)</TR>' matches = plugintools.find_multiple_matches(body,pattern) for match in matches: pattern = '<a href="([^"]+)">([^<]+).*?<img border=0 src="([^"]+)' scrapedurl, scrapedtitle, flag = plugintools.find_single_match(match, pattern) pattern = '/img/smileys/(\d).gif' quality = plugintools.find_single_match(match, pattern) pattern = '<STRONG>(\d+\.*\d*)' rating = plugintools.find_single_match(match, pattern) url = urljoin(url,scrapedurl) title = html_unescape(scrapedtitle) title = re.sub('\s+', ' ', title).strip() + " (" + get_language_from_flag_img(flag) + " IMDB:" + rating + " Quality:" + quality + ")" plugintools.log("movie4k.search title=" + title + ", url=" + url) if "watch-tvshow" in url: url = MAIN_URL+"tvshows-season-"+plugintools.find_single_match(url,MAIN_URL+"([A-Za-z0-9\-]+)-watch-tvshow-\d+.html")+".html" plugintools.add_item( action="tvshow_seasons", title=title, url=url, fanart=FANART , folder=True ) else: plugintools.add_item( action="single_movie", title=title, url=url, fanart=FANART , folder=True )
def ciberdocus3(params): plugintools.setview("tvshows") fanart = params.get("fanart") thumbnail = params.get("thumbnail") title = params.get("title") recursividad = params.get("extra") if recursividad == "1": buscar="" buscar = plugintools.keyboard_input().replace(" ", "+") url_busca="http://www.ciberdocumentales.com/index.php?keysrc="+buscar+"&categoria=0" else: url_busca = params.get("url") #headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0', "Referer": url} #r=requests.get(url, headers=headers) data = plugintools.read(url_busca) group_channel = plugintools.find_single_match(data,'var xajaxRequestUri="(.*?)<div id="paginador">') plugintools.log("group_channel= "+group_channel) cada_canal = plugintools.find_multiple_matches(group_channel,'<div class="fotonoticia">(.*?)>Ha sido visto') for item in cada_canal: plugintools.log("item= "+item) url_canal=plugintools.find_single_match(item,'<div class="opcionesbot"><a target="_blank" href="(.*?)"') titulo_canal=plugintools.find_single_match(item,'alt="(.*?)"') caratula_canal='http://www.ciberdocumentales.com'+plugintools.find_single_match(item,'src="(.*?)"') ##Capturo la Sinopsis en un Diccionario para usarla en "plugintools.add_item(" mediante la variable "info_labels" sinopsis = plugintools.find_single_match(item,'h3></a><br /><br />(.*?)</div>') plugintools.log("Sinopsis= "+sinopsis) datamovie = {} datamovie["Plot"]=sinopsis url_montada = 'plugin://plugin.video.SportsDevil/?mode=1&item=catcher%3dstreams%26url='+url_canal+'%26referer='+url_ref plugintools.add_item(action="runPlugin", title=titulo_canal, url=url_montada, thumbnail=caratula_canal, info_labels=datamovie , fanart=fanart, folder = False, isPlayable=True) if recursividad == "1": #Resuelvo la posibilidad de mas de 1 Página en la Busqueda mas_pag = plugintools.find_single_match(data,'<div class="pagination">(.*?)</div>') ##Si no está vacio... es decir, q hay mas de 1 página if len(mas_pag) > 1: cadena_busqueda='/index.php?keysrc='+buscar+'&categoria=0&page=' total_pag=plugintools.find_multiple_matches(mas_pag, 'a href="([^"]+)') #Con esto te devuelve una lista: ['/index.php?keysrc=cine&categoria=0&page=2', '/index.php?keysrc=cine&categoria=0&page=3', '/index.php?keysrc=cine&categoria=0&page=2'] ult_pag=int(total_pag[-2].replace(cadena_busqueda, "")) for num_pag in range(2, ult_pag+1): recursividad="0" url_pag=url_ref+'index.php?keysrc='+buscar+'&categoria=0&page='+str(num_pag) ## Obtengo las páginas así: http://www.ciberdocumentales.com/index.php?keysrc=cine&categoria=0&page=2 print url_pag plugintools.add_item(action="ciberdocus3",title="[COLORred][B]Página Numero: " + str(num_pag) + " [/B][/COLOR]", url=url_pag, extra=recursividad, thumbnail=thumbnail, fanart=fanart, folder=True, isPlayable=False)
def url_tester(params): url_test = plugintools.keyboard_input("", "Probar URL!") params["plot"] = url_test url_test = url_test.lower() if url_test == "": errormsg = plugintools.message( "Arena+", "Por favor, introduzca el canal a buscar") else: plugintools.log('[%s %s] Probando URL... %s' % (addonName, addonVersion, url_test)) url_test = url_test.strip() params["url"] = url_test title = multiparse_title('URL Tester', url_test, 'list') params["title"] = title if url_test.startswith("rtmp") == True: server_rtmp(params) print params plugintools.add_item(action="launch_rtmp", title=title + ' [I][COLOR lightyellow][' + params.get("server") + '][/I][/COLOR]', url=url_test, folder=False, isPlayable=True) else: plugintools.add_item(action="launch_rtmp", title=title, url=url_test, folder=False, isPlayable=True)
def isohunt0_bum(params): plugintools.log('[%s %s] [BUM+] Isohunt... %s' % (addonName, addonVersion, repr(params))) thumbnail = 'http://www.userlogos.org/files/logos/dfordesmond/isohunt%201.png' fanart = 'http://2.bp.blogspot.com/_NP40rzexJsc/TMGWrixybJI/AAAAAAAAHCU/ij1--_DQEZo/s1600/Keep_Seeding____by_Carudo.jpg' show = 'list' plugintools.modo_vista(show) try: texto = ""; texto='riddick' texto = plugintools.keyboard_input(texto) plugintools.set_setting("alluc_search",texto) params["plot"]=texto texto = texto.lower() if texto == "": errormsg = plugintools.message("PalcoTV","Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # https://isohunt.to/torrents/?ihq=the+strain+spanish url = 'https://isohunt.to/torrents/?ihq='+texto+'&Torrent_sort=seeders.desc' params["url"]=url url = params.get("url") referer = 'https://isohunt.to' isohunt1_bum(params) except: pass
def pornhd_buscador(params): parametros = {} clave = plugintools.keyboard_input( "", "Escriba las palabras a buscar").replace(" ", "+") parametros["url"] = sec["BUSCADOR"] + clave parametros["extra"] = 'PornHD - Resultados para: "' + clave + '"' pornhd_videos(parametros)
def search(params): plugintools.log("soritvch.search " + repr(params)) last_search = plugintools.get_setting("last_search") texto = plugintools.keyboard_input(last_search) plugintools.set_setting("last_search", texto) params["texto"] = texto youtube_search(params)
def settings(params): plugintools.log("ruyaiptv.settings "+repr(params)) if plugintools.get_setting("pincode")!="": text = plugintools.keyboard_input(default_text="", title="Enter PIN Code") if text==plugintools.get_setting("pincode"): plugintools.open_settings_dialog() else: plugintools.open_settings_dialog()
def vanema_lukk(name): plugintools.log(pnimi+sync_data("UGFyZW50YWwgbG9jayA=")) a = 'XXX', 'Adult', 'Adults','ADULT','ADULTS','adult','adults','P**n','P**N','p**n','P**n','xxx' if any(s in name for s in a): xbmc.executebuiltin((u'XBMC.Notification("Parental Lock", "Channels may contain adult content", 2000)')) text = plugintools.keyboard_input(default_text="", title=get_live("UGFyZW50YWwgbG9jaw==")) if text==plugintools.get_setting(sync_data("dmFuZW1ha29vZA==")): return else: exit() else: name = ""
def get_search(): qry = plugintools.keyboard_input('', 'ค้นหา') showsList = add.getsearch(qry) for show in showsList: thumb = show.get('thumbnail') plugintools.add_item(title=show.get('title'), action=show.get('action'), url=show.get('url'), thumbnail=thumb, gtitle=show.get('title')) xbmc.executebuiltin('Container.SetViewMode(502)') plugintools.close_item_list()
def general_playlists(params): plugintools.log("soritvch.general_playlists " + repr(params)) #data2 = xbmcgui.Dialog().input("Search to youtube") last_search = plugintools.get_setting("last_search") data2 = plugintools.keyboard_input(last_search) if not data2: cap1 = plugintools.get_localized_string(50001) cap2 = plugintools.get_localized_string(50002) # Canceled plugintools.message(cap1, cap2) exit = sys.exit() return exit data2 = data2.strip() plugintools.set_setting("last_search", data2) data2 = data2.replace(" ", "+") sch_lng = plugintools.get_setting("sch_lng") #plugintools.message("-",sch_lng) url = params.get("url") + data2 + "+" + sch_lng #xbmcgui.Dialog().ok("Search to youtube", url) try: data = plugintools.read(url) except: cap1 = plugintools.get_localized_string(50001) cap2 = plugintools.get_localized_string(50003) # 0 Results plugintools.message(cap1, cap2) exit = sys.exit() return exit plugintools.log("data=" + data) pattern = '<h3 class="yt-lockup-title "><a href="(.*?)</h3>' matches = plugintools.find_multiple_matches(data, pattern) for entry in matches: plugintools.log("=====================================") plugintools.log("entry=" + entry) video_id = plugintools.find_single_match(entry, 'v=(.*?)" class') plugintools.log("video_id=" + video_id) title = plugintools.find_single_match(entry, 'dir="ltr">(.*?)</a>') title2 = plugintools.find_single_match(entry, '"> -(.*?).</span>') title = title + "[COLOR yellow]-" + title2 + "[/COLOR]" title = title.replace('"', '"') title = title.strip() plot = "" thumbnail = "http://img.youtube.com/vi/" + video_id + "/0.jpg" url = "plugin://plugin.video.youtube/?path=/root/video&action=play_video&videoid=" + video_id plugintools.add_item(action="play", title=title, plot=plot, url=url, thumbnail=thumbnail, isPlayable=False, folder=False)
def cocina_busqueda(params): fanart = params.get("fanart") thumbnail = params.get("thumbnail") title = params.get("title") recursividad = params.get("extra") if recursividad == "1": buscar="" buscar = plugintools.keyboard_input().replace(" ", "+") url_busca="http://canalcocina.es/video-recetas?buscarEn=videoRecetas&q="+buscar buscar = buscar.replace("+"," ") cabecera = "[COLOR lightgreen][B]Búsqueda: "+buscar+" [COLOR yellow][I]Pag. 1"+"[/I][/B][/COLOR]" else: url_busca = params.get("url") buscar = plugintools.find_single_match(url_busca,'buscarEn=videoRecetas&q=(.*?)') cabecera = recursividad r = requests.get(url_busca) data = r.content plugintools.add_item(action="",url="",title=cabecera,thumbnail=thumbnail,fanart=fanart,folder=False,isPlayable=False) plugintools.add_item(action="",url="",title="",thumbnail=thumbnail, fanart=fanart, folder=False, isPlayable=False) bloque_videos = plugintools.find_single_match(data,'<h3 class=(.*?)class="letter-filter cube pagination') cada_video = plugintools.find_multiple_matches(bloque_videos,'<a(.*?)/p>') for item in cada_video: titulo_vid = plugintools.find_single_match(item,'class="icon(.*?)/span>') titulo_video = plugintools.find_single_match(titulo_vid,'</i>(.*?)<') url_video = plugintools.find_single_match(item,'href="(.*?)"') url_video = "http://canalcocina.es"+url_video cocinero = plugintools.find_single_match(item,'chef20"></i>(.*?)<').strip() logo = plugintools.find_single_match(item,'src="(.*?)"') titulo_completo = titulo_video + " [COLOR red][I](" + cocinero + ")[/I][/COLOR]" plugintools.add_item(action="lanza_video",url=url_video,title=titulo_completo,extra="",thumbnail=logo, fanart=fanart, folder=False, isPlayable=True) #Resuelvo la posibilidad de mas de 1 Página en la Búsqueda pag_sig = plugintools.find_single_match(data,'<!--<span>...</span>-->(.*?)title=') pagina_prox = plugintools.find_single_match(pag_sig,'href="(.*?)"') ##if len(pagina_prox) <> 0: # Es que hay otra página en la búsqueda if "http://canalcocina.es" in pagina_prox: # Es que hay otra página en la búsqueda num_prox_pag = plugintools.find_single_match(pagina_prox,'/pag/(.*?)/') plugintools.add_item(action="cocina_busqueda",url=pagina_prox,title="[COLORFFFF0759]Página: " + num_prox_pag + " >>>[/COLOR]",extra="[COLOR lightgreen][B]Búsqueda: "+buscar+" [COLOR yellow][I]Pag. "+num_prox_pag+"[/I][/B][/COLOR]",thumbnail=thumbnail, fanart=fanart, folder=True, isPlayable=False)
def ivoox_search(params): texto = "" texto = plugintools.keyboard_input(texto) texto = texto.lower() if texto == "": errormsg = plugintools.message( "PalcoTV", "Por favor, introduzca el término de búsqueda") else: texto = texto.lower() texto_a = texto.replace(" ", "+").strip() texto_b = texto.replace(" ", "-").strip() url = 'http://www.ivoox.com/' + texto_a + '_sb.html?sb=' + texto_b params["url"] = url Secciones_Ivoox(params)
def ooooooO0oo(name): plugintools.log(pnimi + o0OOO("UGFyZW50YWwgbG9jayA=")) III1iII1I1ii = 'XXX', 'Adult', 'Adults', 'ADULT', 'ADULTS', 'adult', 'adults', 'P**n', 'P**N', 'p**n', 'P**n', 'xxx' if any(s in name for s in III1iII1I1ii): xbmc.executebuiltin(( u'XBMC.Notification("Parental Lock", "Channels may contain adult content", 2000)' )) oOOo0 = plugintools.keyboard_input(default_text="", title=O0O("UGFyZW50YWwgbG9jaw==")) if oOOo0 == plugintools.get_setting(o0OOO("dmFuZW1ha29vZA==")): return else: exit() else: name = ""
def vanema_lukk(name): plugintools.log(pnimi + "Parental lock ") a = '' if any(s in name for s in a): xbmc.executebuiltin(( u'XBMC.Notification("Parental-Lock", "Channels may contain adult content", 2000)' )) text = plugintools.keyboard_input( default_text="", title="Parental-Lock: Please enter your Parental Code") if text == plugintools.get_setting("vanemakood"): return else: exit() else: name = ""
def MiamiTV_playlists(params): #url = plugintools.read( params.get("url") ) url = params.get("url") texto = plugintools.keyboard_input("") num = strtoint(texto) if num == 9898: #url = 'http://usaserver.miamitvchannel.com/miamitv/smil:miamitv/chunklist_w1612796246_b2592000.m3u8' plugintools.play_resolved_url(url) else: #line1 = T_PSWD #time = 5000 #in miliseconds #xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(__addonname__,line1, time, __icon__)) cap1 = plugintools.get_localized_string(50001) cap2 = plugintools.get_localized_string(50004) # wrong password plugintools.message(cap1, cap2) return False
def get_search(): qry = plugintools.keyboard_input('', 'ค้นหา') showsList = nim.getsearch(qry) for show in showsList: thumb = show.get('thumbnail') if thumb == None: thumb = "" if show.get('title') != u"Next": plugintools.add_item(title=show.get('title'), action='showepisodes', url=show.get('url'), thumbnail=thumb) else: plugintools.add_item(title=show.get('title'), action='showmovie', url=show.get('url'), thumbnail=thumb) plugintools.close_item_list()
def url_tester(params): url_test = plugintools.keyboard_input("", "Probar URL!") params["plot"]=url_test url_test = url_test.lower() if url_test == "": errormsg = plugintools.message("Arena+","Por favor, introduzca el canal a buscar") else: plugintools.log('[%s %s] Probando URL... %s' % (addonName, addonVersion, url_test)) url_test = url_test.strip() params["url"]=url_test title = multiparse_title('URL Tester', url_test, 'list') params["title"]=title if url_test.startswith("rtmp") == True: server_rtmp(params) print params plugintools.add_item(action="launch_rtmp", title=title+' [I][COLOR lightyellow]['+params.get("server")+'][/I][/COLOR]', url=url_test, folder=False, isPlayable=True) else: plugintools.add_item(action="launch_rtmp", title=title, url=url_test, folder=False, isPlayable=True)
def xhamster_bus(params): plugintools.log('[%s %s] Buscando videos... %s' % (addonName, addonVersion, repr(params))) texto = "" texto = plugintools.keyboard_input(texto) texto = texto.lower( ) # Pasamos el texto a minúsculas para evitar problemas if texto == "": errormsg = plugintools.message( "Movie Ultra 7K", "Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") url_bus = 'http://es.xhamster.com/search.php?from=&q=' + texto + '&qcat=video' params = plugintools.get_params() params["url"] = url_bus xhamster_bus1(params) # pasando los resultados a xhamster_bus1
def search(params): plugintools.log("movie4k.search " + repr(params)) text = plugintools.keyboard_input(title="Input search terms") url = MAIN_URL + "movies.php?list=search" post = "search=" + text.replace(" ", "+") body, response_headers = read_body_and_headers(url, post=post) pattern = '<TR id="coverPreview[^<]+' pattern += '<TD width="550" id="tdmovies"[^<]+' pattern += '<a href="([^"]+)">([^<]+)</a>' matches = plugintools.find_multiple_matches(body, pattern) for scrapedurl, scrapedtitle in matches: url = urlparse.urljoin(url, scrapedurl) title = scrapedtitle.strip() thumbnail = "" plot = "" plugintools.log("movie4k.search title=" + title + ", url=" + url + ", thumbnail=" + thumbnail) if "watch-tvshow" in url: url = MAIN_URL + "tvshows-season-" + plugintools.find_single_match( url, MAIN_URL + "([A-Za-z0-9\-]+)-watch-tvshow-\d+.html") + ".html" plugintools.add_item(action="tvshow_seasons", title=title, url=url, thumbnail=thumbnail, plot=plot, fanart=thumbnail, folder=True) else: plugintools.add_item(action="single_movie", title=title, url=url, thumbnail=thumbnail, plot=plot, fanart=thumbnail, folder=True)
def search(params): plugintools.log("movie4k.search " + repr(params)) text = plugintools.keyboard_input(title="Input search terms") url = MAIN_URL + "movies.php?list=search" post = "search=" + text.replace(" ", "+") body, response_headers = read_body_and_headers_cached(url, post=post) pattern = '<TR id="coverPreview\d+">(.*?)</TR>' matches = plugintools.find_multiple_matches(body, pattern) for match in matches: pattern = '<a href="([^"]+)">([^<]+).*?<img border=0 src="([^"]+)' scrapedurl, scrapedtitle, flag = plugintools.find_single_match( match, pattern) pattern = '/img/smileys/(\d).gif' quality = plugintools.find_single_match(match, pattern) pattern = '<STRONG>(\d+\.*\d*)' rating = plugintools.find_single_match(match, pattern) url = urljoin(url, scrapedurl) title = html_unescape(scrapedtitle) title = re.sub( '\s+', ' ', title).strip() + " (" + get_language_from_flag_img( flag) + " IMDB:" + rating + " Quality:" + quality + ")" plugintools.log("movie4k.search title=" + title + ", url=" + url) if "watch-tvshow" in url: url = MAIN_URL + "tvshows-season-" + plugintools.find_single_match( url, MAIN_URL + "([A-Za-z0-9\-]+)-watch-tvshow-\d+.html") + ".html" plugintools.add_item(action="tvshow_seasons", title=title, url=url, fanart=FANART, folder=True) else: plugintools.add_item(action="single_movie", title=title, url=url, fanart=FANART, folder=True)
def cambia_hora_marcador(params): if not os.path.exists(fich_hora): diferencia = "00:00" file_hora=open(fich_hora, "w+") file_hora.write("00:00") file_hora.close() else: file_hora=open(fich_hora, "r") diferencia = file_hora.read() file_hora.close() pide = plugintools.keyboard_input(diferencia, 'Introduzca Diferencia (con [COLOR red]Signo Menos[/COLOR] si son a Disminuir) [COLOR green]XX:XX[/COLOR]') if pide <> diferencia: file_hora=open(fich_hora, "w+") file_hora.write(pide) file_hora.close() xbmcgui.Dialog().ok( "- Tenga en Cuenta -" , "Para que el cambio tenga efecto en la Guía, tendrá que salir del Parser y volver a entrar." ) return
def livetv_catchup_search(params): plugintools.log("ruyaiptv.livetv_catchup_search "+repr(params)) token = plugintools.get_setting("token") if token=="": return current_page , next_page = get_current_and_next_page(params.get("page")) if params.get("url")=="": terms = plugintools.keyboard_input(default_text="", title="Enter search terms") else: terms = params.get("url") items = api.livetv_catchup_search(terms,num_page=current_page) for item in items: plugintools.add_item( action="play_catchup", title=item["title"] , url=item["url"] , plot=item["plot"], thumbnail=item["thumbnail"], fanart=os.path.join(THUMBNAIL_PATH,"fanart2.jpg") , isPlayable=True, folder=False ) if len(items)>=MAX_ITEMS_PER_PAGE: plugintools.add_item( action="livetv_catchup_by_genre", title=">> Next page" , url=terms, page=next_page, fanart=os.path.join(THUMBNAIL_PATH,"fanart2.jpg") , folder=True ) plugintools.set_view( plugintools.EPISODES )
def tvshows_search(params): plugintools.log("ruyaiptv.tvshows_search "+repr(params)) token = plugintools.get_setting("token") if token=="": return current_page , next_page = get_current_and_next_page(params.get("page")) if params.get("url")=="": terms = plugintools.keyboard_input(default_text="", title="Enter search terms") else: terms = params.get("url") items = api.tvshow_search(token,terms,num_page=current_page) for item in items: plugintools.add_item( action="tvshow_seasons", title=item["title"] , url=item["title"] , plot=item["plot"], thumbnail=item["thumbnail"], fanart=item["fanart"], folder=True ) if len(items)>=MAX_ITEMS_PER_PAGE: plugintools.add_item( action="tvshows_search", title=">> Next page" , url=terms , page=next_page, fanart=os.path.join(THUMBNAIL_PATH,"fanart1.jpg") , folder=True ) plugintools.set_view( plugintools.TV_SHOWS )
def mundoplus0(params): try: texto = ""; texto='strain' texto = plugintools.keyboard_input(texto) plugintools.set_setting("mundoplus_search",texto) params["plot"]=texto texto = texto.lower() if texto == "": errormsg = plugintools.message("PalcoTV","Por favor, introduzca serie a buscar");return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") url = 'http://www.mundoplus.tv/programacion/buscador.php?canal=g_todos&fecha=TODAS&buscar='+texto #url = 'http://www.alluc.com/stream/'+texto+'++lang:es' #url=baseurl+'stream/?q='+texto+'&stream=Streams' #url=baseurl+'stream/'+texto params["url"]=url url = params.get("url") referer = 'http://www.mundoplus.tv' plugintools.log("Texto a buscar: "+title) mundoplus1(params) except: pass
def movies_search(params): plugintools.log("ruyaiptv.movies_search "+repr(params)) token = plugintools.get_setting("token") if token=="": return current_page , next_page = get_current_and_next_page(params.get("page")) if params.get("url")=="": terms = plugintools.keyboard_input(default_text="", title="Enter search terms") else: terms = params.get("url") items = api.movie_search(token,terms=terms,num_page=current_page) for item in items: if item["title"].endswith("(3D)"): item["title"] = item["title"].replace("(3D)","[COLOR red](3D)[/COLOR]") plugintools.add_item( action="play_movie", title=item["title"] , url=item["url"] , plot=item["plot"], thumbnail=item["thumbnail"], fanart=item["fanart"], isPlayable=True, folder=False ) if len(items)>=MAX_ITEMS_PER_PAGE: plugintools.add_item( action="movies_search", title=">> Next page" , url=terms, page=next_page, fanart=os.path.join(THUMBNAIL_PATH,"fanart0.jpg") , folder=True ) plugintools.set_view( plugintools.MOVIES )
def get_next_items( item ): plugintools.log("navigation.get_next_items item="+item.tostring()) try: # ---------------------------------------------------------------- # Main menu # ---------------------------------------------------------------- if item.channel=="navigation": if item.action=="mainlist": plugintools.log("navigation.get_next_items Main menu") itemlist = channelselector.getmainlist("bannermenu") elif item.channel=="channelselector": if item.action=="channeltypes": plugintools.log("navigation.get_next_items Channel types menu") itemlist = channelselector.getchanneltypes("bannermenu") elif item.action=="listchannels": plugintools.log("navigation.get_next_items Channel list menu") itemlist = channelselector.filterchannels(item.category,"bannermenu") elif item.channel=="configuracion": plugintools.open_settings_dialog() return [] else: if item.action=="": item.action="mainlist" plugintools.log("navigation.get_next_items Channel code ("+item.channel+"."+item.action+")") try: exec "import channels."+item.channel+" as channel" except: exec "import core."+item.channel+" as channel" from platformcode import xbmctools if item.action=="play": plugintools.log("navigation.get_next_items play") # Si el canal tiene una acción "play" tiene prioridad if hasattr(channel, 'play'): plugintools.log("pelisalacarta.platformcode.launcher Channel has its own 'play' method") itemlist = channel.play(item) if len(itemlist)>0: item = itemlist[0] # FIXME: Este error ha que tratarlo de otra manera, al dar a volver sin ver el vídeo falla try: xbmctools.play_video(channel=item.channel, server=item.server, url=item.url, category=item.category, title=item.title, thumbnail=item.thumbnail, plot=item.plot, extra=item.extra, subtitle=item.subtitle, video_password = item.password, fulltitle=item.fulltitle, Serie=item.show) except: pass else: import xbmcgui ventana_error = xbmcgui.Dialog() ok = ventana_error.ok ("plugin", "No hay nada para reproducir") else: plugintools.log("pelisalacarta.platformcode.launcher No channel 'play' method, executing core method") # FIXME: Este error ha que tratarlo de otra manera, por al dar a volver sin ver el vídeo falla # Mejor hacer el play desde la ventana try: xbmctools.play_video(channel=item.channel, server=item.server, url=item.url, category=item.category, title=item.title, thumbnail=item.thumbnail, plot=item.plot, extra=item.extra, subtitle=item.subtitle, video_password = item.password, fulltitle=item.fulltitle, Serie=item.show) except: pass return [] elif item.action=="findvideos": plugintools.log("navigation.get_next_items findvideos") # Si el canal tiene una acción "findvideos" tiene prioridad if hasattr(channel, 'findvideos'): plugintools.log("pelisalacarta.platformcode.launcher Channel has its own 'findvideos' method") itemlist = channel.findvideos(item) else: itemlist = [] if len(itemlist)==0: from servers import servertools itemlist = servertools.find_video_items(item) if len(itemlist)==0: itemlist = [ Item(title="No se han encontrado vídeos", thumbnail=os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_error.png" )) ] else: if item.action=="search": tecleado = plugintools.keyboard_input() if tecleado!="": tecleado = tecleado.replace(" ", "+") itemlist = channel.search(item,tecleado) elif item.channel=="novedades" and item.action=="mainlist": itemlist = channel.mainlist(item,"bannermenu") elif item.channel=="buscador" and item.action=="mainlist": itemlist = channel.mainlist(item,"bannermenu") else: exec "itemlist = channel."+item.action+"(item)" for loaded_item in itemlist: if loaded_item.thumbnail=="": if loaded_item.folder: loaded_item.thumbnail = os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_folder.png" ) else: loaded_item.thumbnail = os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_nofolder.png" ) if len(itemlist)==0: itemlist = [ Item(title="No hay elementos para mostrar", thumbnail=os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_error.png" )) ] except: import traceback plugintools.log("navigation.get_next_items "+traceback.format_exc()) itemlist = [ Item(title="Se ha producido un error", thumbnail=os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_error.png" )) ] return itemlist
def kickass0_bum(params): plugintools.log('[%s %s] [BUM+] Kickass... %s' % (addonName, addonVersion, repr(params))) try: texto = "" #texto='riddick' texto = plugintools.keyboard_input( texto, "Buscador Unificado de Torrents (BUM+)") plugintools.set_setting("alluc_search", texto) params["plot"] = texto texto = texto.lower() if texto == "": errormsg = plugintools.message( "Arena+", "Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # https://kickass.to/usearch/birdman%20lang_id:14/ url = 'https://kickass.to/usearch/' + texto + '/' params["url"] = url url = params.get("url") referer = 'http://www.kickass.to' except: pass # Archivo de control de resultados (evita la recarga del cuadro de diálogo de búsqueda tras cierto tiempo) bumfile = tmp + 'bum.dat' if not os.path.isfile( bumfile ): # Si no existe el archivo de control, se crea y se registra la búsqueda controlbum = open(bumfile, "a") controlbum.close() ahora = datetime.now() print 'ahora', ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timestamp = str(ahora.year) + str(mes_actual) + str(hoy) + str( hora_actual) + str(min_actual) + str(seg_actual) controlbum = open(tmp + 'bum.dat', "wb") controlbum.seek(0) controlbum.write(timestamp + ":" + texto) controlbum.close() else: controlbum = open(tmp + 'bum.dat', "r") controlbum.seek(0) data = controlbum.readline() controlbum.close() plugintools.log("BUM+= " + data) plugintools.log("Control de BUM+ activado. Analizamos timestamp...") data = data.split(":") timestamp = data[0] term_search = data[1] ahora = datetime.now() print 'ahora', ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timenow = str(ahora.year) + str(mes_actual) + str(hoy) + str( hora_actual) + str(min_actual) + str(seg_actual) # Comparamos valores (hora actual y el timestamp del archivo de control) if term_search == texto: result = int(timenow) - int(timestamp) print 'result', result if result > 90: # Control fijado en 90 segundos; esto significa que una misma búsqueda no podremos realizarla en menos de 90 segundos, y en ese tiempo debe reproducirse el torrent # Borramos registro actual y guardamos el nuevo (crear una función que haga esto y no repetir!) ahora = datetime.now() print 'ahora', ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timestamp = str(ahora.year) + str(mes_actual) + str(hoy) + str( hora_actual) + str(min_actual) + str(seg_actual) controlbum = open(tmp + 'bum.dat', "wb") controlbum.seek(0) controlbum.write(timestamp + ":" + texto) controlbum.close() kickass_results(params) else: plugintools.log("Recarga de página") kickass_results(params) else: # Borramos registro actual y guardamos el nuevo (crear una función que haga esto y no repetir!) ahora = datetime.now() print 'ahora', ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timestamp = str(ahora.year) + str(mes_actual) + str(hoy) + str( hora_actual) + str(min_actual) + str(seg_actual) controlbum = open(tmp + 'bum.dat', "wb") controlbum.seek(0) controlbum.write(timestamp + ":" + texto) controlbum.close() kickass1_bum(params)
def get_next_items( item ): plugintools.log("navigation.get_next_items item="+item.tostring()) try: # ---------------------------------------------------------------- # Main menu # ---------------------------------------------------------------- if item.channel=="navigation": if item.action=="mainlist": plugintools.log("navigation.get_next_items Main menu") itemlist = channelselector.getmainlist("bannermenu") elif item.channel=="channelselector": if item.action=="channeltypes": plugintools.log("navigation.get_next_items Channel types menu") itemlist = channelselector.getchanneltypes("bannermenu") elif item.action=="listchannels": plugintools.log("navigation.get_next_items Channel list menu") itemlist = channelselector.filterchannels(item.category,"bannermenu") else: if item.action=="": item.action="mainlist" plugintools.log("navigation.get_next_items Channel code ("+item.channel+"."+item.action+")") try: exec "import channels."+item.channel+" as channel" except: exec "import core."+item.channel+" as channel" from platformcode import platformtools if item.action=="play": plugintools.log("navigation.get_next_items play") # Si el canal tiene una acción "play" tiene prioridad if hasattr(channel, 'play'): plugintools.log("navigation.get_next_items play Channel has its own 'play' method") itemlist = channel.play(item) if len(itemlist)>0: item = itemlist[0] # FIXME: Este error ha que tratarlo de otra manera, al dar a volver sin ver el vídeo falla try: platformtools.play_video(item) except: pass else: import xbmcgui ventana_error = xbmcgui.Dialog() ok = ventana_error.ok ("plugin", "No hay nada para reproducir") else: plugintools.log("navigation.get_next_items play No channel 'play' method, executing core method") # FIXME: Este error ha que tratarlo de otra manera, por al dar a volver sin ver el vídeo falla # Mejor hacer el play desde la ventana try: platformtools.play_video(item) except: import traceback plugintools.log(traceback.format_exc()) pass return [] elif item.action=="findvideos": plugintools.log("navigation.get_next_items findvideos") # Si el canal tiene una acción "findvideos" tiene prioridad if hasattr(channel, 'findvideos'): plugintools.log("navigation.get_next_items play Channel has its own 'findvideos' method") itemlist = channel.findvideos(item) else: itemlist = [] if len(itemlist)==0: from core import servertools itemlist = servertools.find_video_items(item) if len(itemlist)==0: itemlist = [ Item(title="No se han encontrado vídeos", thumbnail="http://media.tvalacarta.info/pelisalacarta/thumb_error.png") ] else: if item.action=="search": tecleado = plugintools.keyboard_input() if tecleado!="": tecleado = tecleado.replace(" ", "+") itemlist = channel.search(item,tecleado) elif item.channel=="novedades" and item.action=="mainlist": itemlist = channel.mainlist(item,"bannermenu") elif item.channel=="buscador" and item.action=="mainlist": itemlist = channel.mainlist(item,"bannermenu") else: exec "itemlist = channel."+item.action+"(item)" for loaded_item in itemlist: if loaded_item.thumbnail=="": if loaded_item.folder: loaded_item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_folder.png" else: loaded_item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_nofolder.png" if len(itemlist)==0: itemlist = [ Item(title="No hay elementos para mostrar", thumbnail="http://media.tvalacarta.info/pelisalacarta/thumb_error.png" ) ] except: import traceback plugintools.log("navigation.get_next_items "+traceback.format_exc()) itemlist = [ Item(title="Se ha producido un error", thumbnail="http://media.tvalacarta.info/pelisalacarta/thumb_error.png") ] return itemlist
def kickass0_bum(params): plugintools.log('[%s %s] [BUM+] Kickass... %s' % (addonName, addonVersion, repr(params))) try: texto = ""; #texto='riddick' texto = plugintools.keyboard_input(texto, "Buscador Unificado de Torrents (BUM+)") plugintools.set_setting("alluc_search",texto) params["plot"]=texto texto = texto.lower() if texto == "": errormsg = plugintools.message("Arena+","Por favor, introduzca el canal a buscar") #return errormsg else: texto = texto.lower().strip() texto = texto.replace(" ", "+") # https://kickass.to/usearch/birdman%20lang_id:14/ url = 'https://kickass.to/usearch/'+texto+'/' params["url"]=url url = params.get("url") referer = 'http://www.kickass.to' except: pass # Archivo de control de resultados (evita la recarga del cuadro de diálogo de búsqueda tras cierto tiempo) bumfile = tmp + 'bum.dat' if not os.path.isfile(bumfile): # Si no existe el archivo de control, se crea y se registra la búsqueda controlbum = open(bumfile, "a") controlbum.close() ahora = datetime.now() print 'ahora',ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timestamp = str(ahora.year) + str(mes_actual) + str(hoy) + str(hora_actual) + str(min_actual) + str(seg_actual) controlbum = open(tmp + 'bum.dat', "wb") controlbum.seek(0) controlbum.write(timestamp+":"+texto) controlbum.close() else: controlbum = open(tmp + 'bum.dat', "r") controlbum.seek(0) data = controlbum.readline() controlbum.close() plugintools.log("BUM+= "+data) plugintools.log("Control de BUM+ activado. Analizamos timestamp...") data = data.split(":") timestamp = data[0] term_search = data[1] ahora = datetime.now() print 'ahora',ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timenow = str(ahora.year) + str(mes_actual) + str(hoy) + str(hora_actual) + str(min_actual) + str(seg_actual) # Comparamos valores (hora actual y el timestamp del archivo de control) if term_search == texto: result = int(timenow) - int(timestamp) print 'result',result if result > 90: # Control fijado en 90 segundos; esto significa que una misma búsqueda no podremos realizarla en menos de 90 segundos, y en ese tiempo debe reproducirse el torrent # Borramos registro actual y guardamos el nuevo (crear una función que haga esto y no repetir!) ahora = datetime.now() print 'ahora',ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timestamp = str(ahora.year) + str(mes_actual) + str(hoy) + str(hora_actual) + str(min_actual) + str(seg_actual) controlbum = open(tmp + 'bum.dat', "wb") controlbum.seek(0) controlbum.write(timestamp+":"+texto) controlbum.close() kickass_results(params) else: plugintools.log("Recarga de página") kickass_results(params) else: # Borramos registro actual y guardamos el nuevo (crear una función que haga esto y no repetir!) ahora = datetime.now() print 'ahora',ahora anno_actual = ahora.year mes_actual = ahora.month hora_actual = ahora.hour min_actual = ahora.minute seg_actual = ahora.second hoy = ahora.day # Si el día o mes está entre el 1 y 9, nos devuelve un sólo dígito, así que añadimos un 0 (cero) delante: if hoy <= 9: hoy = "0" + str(hoy) if mes_actual <= 9: mes_actual = "0" + str(ahora.month) timestamp = str(ahora.year) + str(mes_actual) + str(hoy) + str(hora_actual) + str(min_actual) + str(seg_actual) controlbum = open(tmp + 'bum.dat', "wb") controlbum.seek(0) controlbum.write(timestamp+":"+texto) controlbum.close() kickass1_bum(params)
def get_next_items( item ): plugintools.log("navigation.get_next_items item="+item.tostring()) try: # ---------------------------------------------------------------- # Main menu # ---------------------------------------------------------------- if item.channel=="navigation": # --- Update channels list --------------------------------------- from core import config if item.action=="mainlist": plugintools.log("navigation.get_next_items Main menu") if config.get_setting("updatechannels")=="true": try: from core import updater actualizado = updater.updatechannel("channelselector") if actualizado: import xbmcgui advertencia = xbmcgui.Dialog() advertencia.ok("tvalacarta",config.get_localized_string(30064)) except: pass # ---------------------------------------------------------------- if item.action=="mainlist": plugintools.log("navigation.get_next_items Main menu") itemlist = channelselector.getmainlist("bannermenu") elif item.channel=="channelselector": if item.action=="channeltypes": plugintools.log("navigation.get_next_items Channel types menu") itemlist = channelselector.getchanneltypes("bannermenu") elif item.action=="listchannels": plugintools.log("navigation.get_next_items Channel list menu") itemlist = channelselector.filterchannels(item.category,"bannermenu") elif item.channel=="configuracion": plugintools.open_settings_dialog() return [] else: if item.action=="": item.action="mainlist" plugintools.log("navigation.get_next_items Channel code ("+item.channel+"."+item.action+")") # --- Update channels files -------------------------------------- if item.action=="mainlist": from core import config if config.get_setting("updatechannels")=="true": try: from core import updater actualizado = updater.updatechannel(item.channel) if actualizado: import xbmcgui advertencia = xbmcgui.Dialog() advertencia.ok("plugin",item.channel,config.get_localized_string(30063)) except: pass # ---------------------------------------------------------------- try: exec "import channels."+item.channel+" as channel" except: exec "import core."+item.channel+" as channel" from platformcode import xbmctools if item.action=="play": plugintools.log("navigation.get_next_items play") # Si el canal tiene una acción "play" tiene prioridad if hasattr(channel, 'play'): plugintools.log("streamondemand-pureita.navigation.py Channel has its own 'play' method") itemlist = channel.play(item) if len(itemlist)>0: item = itemlist[0] # FIXME: Este error ha que tratarlo de otra manera, al dar a volver sin ver el vídeo falla try: xbmctools.play_video(channel=item.channel, server=item.server, url=item.url, category=item.category, title=item.title, thumbnail=item.thumbnail, plot=item.plot, extra=item.extra, subtitle=item.subtitle, video_password = item.password, fulltitle=item.fulltitle, Serie=item.show) except: pass else: import xbmcgui ventana_error = xbmcgui.Dialog() ok = ventana_error.ok ("plugin", "No hay nada para reproducir") else: plugintools.log("streamondemand-pureita.navigation.py No channel 'play' method, executing core method") # FIXME: Este error ha que tratarlo de otra manera, por al dar a volver sin ver el vídeo falla # Mejor hacer el play desde la ventana try: xbmctools.play_video(channel=item.channel, server=item.server, url=item.url, category=item.category, title=item.title, thumbnail=item.thumbnail, plot=item.plot, extra=item.extra, subtitle=item.subtitle, video_password = item.password, fulltitle=item.fulltitle, Serie=item.show) except: pass return [] elif item.action=="findvideos": plugintools.log("navigation.get_next_items findvideos") # Si el canal tiene una acción "findvideos" tiene prioridad if hasattr(channel, 'findvideos'): plugintools.log("streamondemand-pureita.navigation.py Channel has its own 'findvideos' method") itemlist = channel.findvideos(item) else: itemlist = [] if len(itemlist)==0: from servers import servertools itemlist = servertools.find_video_items(item) if len(itemlist)==0: itemlist = [ Item(title="No se han encontrado vídeos", thumbnail=os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_error.png" )) ] # ---------------add_serie_to_library----------- elif item.action=="add_serie_to_library": plugintools.log("navigation.get_next_items add_serie_to_library") from platformcode import library import xbmcgui # Obtiene el listado desde el que se llamó action = item.extra # Esta marca es porque el item tiene algo más aparte en el atributo "extra" if "###" in item.extra: action = item.extra.split("###")[0] item.extra = item.extra.split("###")[1] exec "itemlist = channel."+action+"(item)" # Progreso pDialog = xbmcgui.DialogProgress() ret = pDialog.create('streamondemand-pureita', 'Añadiendo episodios...') pDialog.update(0, 'Añadiendo episodio...') totalepisodes = len(itemlist) plugintools.log ("navigation.get_next_items Total Episodios:"+str(totalepisodes)) i = 0 errores = 0 nuevos = 0 for item in itemlist: i = i + 1 pDialog.update(i*100/totalepisodes, 'Añadiendo episodio...',item.title) plugintools.log("streamondemand-pureita.navigation.py add_serie_to_library, title="+item.title) if (pDialog.iscanceled()): return try: #(titulo="",url="",thumbnail="",server="",plot="",canal="",category="Cine",Serie="",verbose=True,accion="strm",pedirnombre=True): # Añade todos menos el que dice "Añadir esta serie..." o "Descargar esta serie..." if item.action!="add_serie_to_library" and item.action!="download_all_episodes": nuevos = nuevos + library.savelibrary( titulo=item.title , url=item.url , thumbnail=item.thumbnail , server=item.server , plot=item.plot , canal=item.channel , category="Series" , Serie=item.show.strip() , verbose=False, accion="play_from_library", pedirnombre=False, subtitle=item.subtitle, extra=item.extra ) except IOError: import sys for line in sys.exc_info(): logger.error( "%s" % line ) plugintools.log("streamondemand-pureita.navigation.py Error al grabar el archivo "+item.title) errores = errores + 1 pDialog.close() # Actualizacion de la biblioteca itemlist=[] if errores > 0: itemlist.append(Item(title="ERRORE, la serie NON si è aggiunta alla biblioteca o la fatto in modo incompleto")) plugintools.log ("navigation.get_next_items No se pudo añadir "+str(errores)+" episodios") else: itemlist.append(Item(title="La serie è stata aggiunta alla biblioteca")) plugintools.log ("navigation.get_next_items Ningún error al añadir "+str(errores)+" episodios") # FIXME:jesus Comentado porque no funciona bien en todas las versiones de XBMC #library.update(totalepisodes,errores,nuevos) #xbmctools.renderItems(itemlist, params, url, category) #Lista con series para actualizar from core import config nombre_fichero_config_canal = os.path.join( config.get_library_path() , "series.xml" ) if not os.path.exists(nombre_fichero_config_canal): nombre_fichero_config_canal = os.path.join( config.get_data_path() , "series.xml" ) plugintools.log("nombre_fichero_config_canal="+nombre_fichero_config_canal) if not os.path.exists(nombre_fichero_config_canal): f = open( nombre_fichero_config_canal , "w" ) else: f = open( nombre_fichero_config_canal , "r" ) contenido = f.read() f.close() f = open( nombre_fichero_config_canal , "w" ) f.write(contenido) from platformcode import library f.write( library.title_to_folder_name(item.show)+","+item.url+","+item.channel+"\n") f.close(); return itemlist # -------------------------------------------------------------------- elif item.action=="download_all_episodes": plugintools.log("navigation.get_next_items download_all_episodes") download_all_episodes(item,channel) #--------------------------------------------------------------------- else: if item.action=="search": tecleado = plugintools.keyboard_input() if tecleado!="": tecleado = tecleado.replace(" ", "+") itemlist = channel.search(item,tecleado) elif item.channel=="novedades" and item.action=="mainlist": itemlist = channel.mainlist(item,"bannermenu") elif item.channel=="buscador" and item.action=="mainlist": itemlist = channel.mainlist(item,"bannermenu") else: exec "itemlist = channel."+item.action+"(item)" for loaded_item in itemlist: if loaded_item.thumbnail=="": if loaded_item.folder: loaded_item.thumbnail = os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_folder.png" ) else: loaded_item.thumbnail = os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_nofolder.png" ) if len(itemlist)==0: itemlist = [ Item(title="No hay elementos para mostrar", thumbnail=os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_error.png" )) ] except: import traceback plugintools.log("navigation.get_next_items "+traceback.format_exc()) itemlist = [ Item(title="Se ha producido un error", thumbnail=os.path.join( plugintools.get_runtime_path() , "resources" , "images" , "thumb_error.png" )) ] return itemlist
def series_search(params): q = plugintools.keyboard_input("", title="Text to search") itemlist = api.series_search(0,1000,q) add_items_to_xbmc(params,itemlist) plugintools.set_view(plugintools.TV_SHOWS)