Sistema de Busqueda de WIIMC
Publicado: 07 Feb 2011, 19:26
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
Al clicar sobre la opción buscar aparece el teclado antes de acceder a la url y nos desvuelve lo siguiente:
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
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.
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.
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
.
@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
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
Código: Seleccionar todo
http://localhost:8080/cinetube/search/http%3A%2F%2Fwww.cinetube.es%2Fbuscar%2Fpeliculas%2F/none/playlist.plxwarf
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"
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":
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)

@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