Página 1 de 2

Sistema de Busqueda de WIIMC

Publicado: 07 Feb 2011, 19:26
por Chumy
Hola a tod@s,

He estado investigando en como funciona el sistema de busqueda de la wii.
Para que el wiimc interprete la url como cadena de busqueda, se le ha de pasar el parametro type con el valor search. En este caso nos aparece el teclado de la wii en la que introducimos un texto por ejemplo warf. Wiimc concatena lo que hayamos introducido en el teclado al final de la url.

Por ejemplo en cinetube

Código: Seleccionar todo

type=search
name=Buscar
URL=http://localhost:8080/cinetube/search/http%3A%2F%2Fwww.cinetube.es%2Fbuscar%2Fpeliculas%2F/none/playlist.plx
Al clicar sobre la opción buscar aparece el teclado antes de acceder a la url y nos desvuelve lo siguiente:

Código: Seleccionar todo

http://localhost:8080/cinetube/search/http%3A%2F%2Fwww.cinetube.es%2Fbuscar%2Fpeliculas%2F/none/playlist.plxwarf
He estado trasteando el cinetube (perdoname jesus, porque he pecado) y un par de archivos cruciales asi que no se si esta adaptación se podrá llevar a cabo en próximas versiones.
Los cambios que he realizado son los siguientes:

pelisalacarta.py
Hay que diferenciar el tipo search
he añadido una condición previa, si la acción es search modificamos la respuesta para que aparezca el type=search

Código: Seleccionar todo

for item in itemlist:
				if item.action=="search":
					if item.server=="": item.server="none"
					if item.url=="": item.url="none"
					url = "http://%s/%s/%s/%s/%s/playlist.plx" % ( host , channel , item.action , urllib.quote_plus(item.url) , item.server )					
					respuesta += "type=search\n"
					respuesta += "name=%s\n" % item.title
					if item.thumbnail != "":
						respuesta += "thumb=%s\n" % item.thumbnail
					respuesta += "URL=%s\n" % url 
					respuesta += "\n"
                    
				elif item.folder or item.action=="play":
					if item.server=="": item.server="none"
					if item.url=="": item.url="none"
De esta forma ya nos aparece el teclado antes de acceder a la url de la opción de la lista.

wiitools.py

Aqui hay que "desconcatenar" lo que hayamos introducido por teclado, así que añado una acción nueva exclusiva para el search. La palabra a buscar la meto en el atributo extra del item, así que no sé si es muy correcto.

Código: Seleccionar todo

if accion=="play":
			itemlist = play(senderitem)
			
		elif accion=="search":
			extra = requestpath.split("plx")[1]
			senderitem.extra = extra
			exec "itemlist = "+channel+"."+accion+"(senderitem)"

		elif accion=="findvideos":
cinetube.py

Aquí es donde creo que más toco la moral, ya que cambio todo el tema de parametros y no se si para xbmc se jode mucho.

Código: Seleccionar todo

def search(item):
	logger.info("[cinetube.py] search")
	 
	#import buscador
	#texto = buscador.teclado()
	#print item.extra

	itemlist = searchresults(item)

	return itemlist

# TODO: No compatible con canal genérico aún
def searchresults(item):
    logger.info("[cinetube.py] searchresults")
    
    #buscador.salvar_busquedas(params,tecleado,category)
    tecleado = item.extra.replace(" ", "+")
    item.url = "http://www.cinetube.es/buscar/peliculas/?palabra="+tecleado+"&categoria=&valoracion="
    itemlist = getsearchresults(item)
    #xbmctools.renderItems(itemlist, params, url, category)
    return itemlist

# TODO: No compatible con canal genérico aún
def getsearchresults(item):
    logger.info("[cinetube.py] getsearchresults")

    if (not item.url.startswith("http://")):
        item.url = "http://www.cinetube.es/buscar/peliculas/?palabra="+url+"&categoria=&valoracion="

    return peliculas(item)
Supongo que esto no es correcto por el tema de que no es un canal generico áun. Pero lo he probado y de momento funciona :D.

@jesus: Esto es solo una idea ya que no se las implicaciones que tendría sobre XBMC, y creo que estoy tirando demasiado a una versión específica para WiiMC, pero si se te ocurre alguna forma de aprovecharlo para los dos, sería genial.

Un saludo

Re: Sistema de Busqueda de WIIMC

Publicado: 08 Feb 2011, 20:32
por juancarlos_mad
Buenas,
he implementado tus cambios pero no me ha ido muy bien. Cada vez que entro en un canal sea CineTube u otro me sale este mensaje con el error correspondiente en pantalla: ¡Lista de reproducción sin nada compatible!

Generado
[servertools.py] init
[cinetube.py] getmainlist
--------------------------------------------
version=7
logo=http://www.mimediacenter.info/xbmc/peli ... a/icon.jpg
title=pelisalacarta prerelease


--------------------------------------------
c-76-20-0-14.hsd1.ca.comcast.net - - [08/Feb/2011 20:23:59] "GET /cinetube/mainlist/none/none/playlist.plx HTTP/1.1" 200 -

Re: Sistema de Busqueda de WIIMC

Publicado: 08 Feb 2011, 20:57
por Chumy
Hola juancarlos_mad,

Si te peta el mainlist en todos los canales, revisa el wiitols y el pelisalacarta.py que estén bien modificados. Aún así te recuerdo que esto es una idea de como hacer funcionar el sistema de busqueda de wiimc

Si quieres te envio los 3 archivos vaya a ser que me haya dejao algo :oops:

Un saludo

Re: Sistema de Busqueda de WIIMC

Publicado: 08 Feb 2011, 21:00
por Dalim
juancarlos_mad escribió:Buenas,
he implementado tus cambios pero no me ha ido muy bien. Cada vez que entro en un canal sea CineTube u otro me sale este mensaje con el error correspondiente en pantalla: ¡Lista de reproducción sin nada compatible!

Generado
[servertools.py] init
[cinetube.py] getmainlist
--------------------------------------------
version=7
logo=http://www.mimediacenter.info/xbmc/peli ... a/icon.jpg
title=pelisalacarta prerelease


--------------------------------------------
c-76-20-0-14.hsd1.ca.comcast.net - - [08/Feb/2011 20:23:59] "GET /cinetube/mainlist/none/none/playlist.plx HTTP/1.1" 200 -
Buenas si solo has introducido las modificaciones de Chumy no deberia darte error, si solo has introducido ese cambio apostaria que el error te lo da por los espacios en pelisalacarta.py python es muy suyo con la jerarquia o agrupacion de codigo.

Asi es como lo tengo yo ese trozo de pelisalacarta:

pelisalacarta.py

Código: Seleccionar todo

            import urllib
            for item in itemlist:
                if item.action=="search":
                   if item.server=="": item.server="none"
                   if item.url=="": item.url="none"
                   url = "http://%s/%s/%s/%s/%s/playlist.plx" % ( host , channel , item.action , urllib.quote_plus(item.url) , item.server )               
                   respuesta += "type=search\n"
                   respuesta += "name=%s\n" % item.title
                   if item.thumbnail != "":
                      respuesta += "thumb=%s\n" % item.thumbnail
                   respuesta += "URL=%s\n" % url 
                   respuesta += "\n"
                   
                elif item.folder or item.action=="play":
                    if item.server=="": item.server="none"
                    if item.url=="": item.url="none"
                    url = "http://%s/%s/%s/%s/%s/playlist.plx" % ( host , channel , item.action , urllib.quote_plus(item.url) , item.server )
                    respuesta += "type=playlist\n"
                    respuesta += "name=%s\n" % item.title
                    if item.thumbnail != "":
                        respuesta += "thumb=%s\n" % item.thumbnail
                    respuesta += "URL=%s\n" % url
                    respuesta += "\n"
                else:
                    respuesta += "type=video\n"
                    respuesta += "name=%s\n" % item.title
                    respuesta += "URL=%s\n" % item.url
                    respuesta += "\n"

Re: Sistema de Busqueda de WIIMC

Publicado: 08 Feb 2011, 21:18
por juancarlos_mad
Pues tras revisar todo, y poner el otro código del compañero, no hay nada que hacer.
Si es posible envíame los 3 ficheros así puedo compararlos con el mío, porque no lo veo.
juancarlos_mad@hotmail.com


Gracias Chumy

Re: Sistema de Busqueda de WIIMC

Publicado: 09 Feb 2011, 11:43
por juancarlos_mad
Gracias Chumy, con lo que me has enviado funciona correctamente.
Eres genial.

Re: Sistema de Busqueda de WIIMC

Publicado: 09 Feb 2011, 12:25
por Dalim
¿A vosotros no os pasa que al buscar palabras de tres o menos letras los resultados no aparece en el wiimc y si en el log?

me sucede con los dos canales en los que active la busqueda Cinetube y tupornotv.

En este post viewtopic.php?f=15&t=918&p=2894#p2894 ya comentaba ese problema con las cadenas cortas.

Probad Cinetube buscad "xxx" que solo deberian salir dos resultados y no funciona, en cambio al buscar "xxx2" si funciona.

Re: Sistema de Busqueda de WIIMC

Publicado: 09 Feb 2011, 13:28
por jesus
Gracias de nuevo :)

Re: Sistema de Busqueda de WIIMC

Publicado: 09 Feb 2011, 19:59
por Chumy
Jesus, esto se podría implementar en las proximas versiones o implica cambiar muchas para la compatibilidad con otros mediacenters? Lo digo para pensar en otra forma de obtener el resultado de la busqueda

Gracias a ti ;)

Re: Sistema de Busqueda de WIIMC

Publicado: 09 Feb 2011, 20:08
por jesus
La búsqueda en canales genéricos no la he terminado de madurar aún, aunque creo que más o menos había llegado a la misma conclusión que tú.

Necesito probarlo despacio, pero la idea desde luego es que sea un sistema de búsqueda similar en todos los canales.

En XBMC hay un canal a primer nivel que se llama "Buscador", y que básicamente invoca a los métodos "search" de cada canal. Fue un parche que ha acabado siendo algo muy útil :)