XBMC - O teu primeiro addon - 4 - (resposta aos 2ºs desafios)
Olá,
O último post desta secção terminou com mais dois desafios.
O último post desta secção terminou com mais dois desafios.
- Coloquem uma imagem personalizada nos menus do addon
- Alterem o tipo de vista da listagem de vídeos para thumbnails
Aqui ficam as resoluções
1 - Coloquem uma imagem vossa nos menus do addon
Quando criei o ficheiro addon.py reservei um espaço no topo do ficheiro para as bibliotecas de python a importar e para escrever algumas definições. Nessa secção encontram isto:
Pretendia simplificar a identificação do nome do addon, do caminho para o addon no vosso computador e a localização da pasta de imagens.
Se abrirem a pasta /resources/img/ verificarão igualmente que lá deixei propositadamente uma imagem (tv.png)
Desta forma, se quiserem adicionar as vossas thumbnails personalizadas aos menus do addon devem colocar as imagens na pasta /resources/img e chamar a imagem da seguinte forma:
addonfolder + artfolder + 'nome_do_ficheiro_de_imagem'
Por exemplo, imaginem que queremos colocar esta imagem (tv.png) no menu 'VÍDEOS' (função CATEGORIES()). É só modificar a função deste modo:
E voilá:
2 - Alterar o tipo de vista de um menu
O tipo de vista depende do tema e tem um id associado. Para a skin confluence (padrão do XBMC), podem consultar os tipos de vista disponíveis aqui:
http://gitorious.org/xbmc/xbmc/blobs/ce9e2ac15a78dc87a49aa17c6d251b3524d2cac2/addons/skin.confluence/720p/MyVideoNav.xml
Temos disponíveis estes id's de tipo de vista:
<views>50,51,500,550,560,501,508,504,503,504,511</views>
Resta-nos perceber qual é o tipo de vista que pretendemos. Neste caso, queremos a vista de thumbnails. Nesse documento xml, temos o significado dos vários id's.
A vista de thumbnails é portanto, o id 500.
Adicionemos o seguinte no final da função listar_videos(url). Iremos adicionar à última linha da função para que o XBMC apenas altere o tipo de vista após listar todos os vídeos e a directoria de "página seguinte"!
Onde o 500 é o ID do tipo de vista que pretendemos. A função final fica assim:
Simples certo?
Podem fazer o download do addon.py actualizado aqui:
http://enen92.aminhacasadigital.com/addon3.py
Próximo desafio:
-Coloca uma imagem personalizada na directoria de "próxima página"
-Adiciona um novo menu onde podes pesquisar vídeos (e listar) os resultados da pesquisa.
Até breve,
Miguel
Aqui ficam as resoluções
1 - Coloquem uma imagem vossa nos menus do addon
Quando criei o ficheiro addon.py reservei um espaço no topo do ficheiro para as bibliotecas de python a importar e para escrever algumas definições. Nessa secção encontram isto:
addon_id = 'plugin.video.maisfutebol' selfAddon = xbmcaddon.Addon(id=addon_id) addonfolder = selfAddon.getAddonInfo('path') artfolder = '/resources/img/'
Pretendia simplificar a identificação do nome do addon, do caminho para o addon no vosso computador e a localização da pasta de imagens.
Se abrirem a pasta /resources/img/ verificarão igualmente que lá deixei propositadamente uma imagem (tv.png)
Desta forma, se quiserem adicionar as vossas thumbnails personalizadas aos menus do addon devem colocar as imagens na pasta /resources/img e chamar a imagem da seguinte forma:
addonfolder + artfolder + 'nome_do_ficheiro_de_imagem'
Por exemplo, imaginem que queremos colocar esta imagem (tv.png) no menu 'VÍDEOS' (função CATEGORIES()). É só modificar a função deste modo:
def CATEGORIES(): addDir('VIDEOS','http://www.maisfutebol.iol.pt/videos',1,addonfolder + artfolder + 'tv.png')
E voilá:
2 - Alterar o tipo de vista de um menu
O tipo de vista depende do tema e tem um id associado. Para a skin confluence (padrão do XBMC), podem consultar os tipos de vista disponíveis aqui:
http://gitorious.org/xbmc/xbmc/blobs/ce9e2ac15a78dc87a49aa17c6d251b3524d2cac2/addons/skin.confluence/720p/MyVideoNav.xml
Temos disponíveis estes id's de tipo de vista:
<views>50,51,500,550,560,501,508,504,503,504,511</views>
Resta-nos perceber qual é o tipo de vista que pretendemos. Neste caso, queremos a vista de thumbnails. Nesse documento xml, temos o significado dos vários id's.
Window_OpenClose_Animation CommonRootView FullWidthList ThumbnailView PosterWrapView PosterWrapView2_Fanart MediaListView3 MediaListView2 WideIconView MusicVideoInfoListView AddonInfoListView1 LiveTVView1
A vista de thumbnails é portanto, o id 500.
Adicionemos o seguinte no final da função listar_videos(url). Iremos adicionar à última linha da função para que o XBMC apenas altere o tipo de vista após listar todos os vídeos e a directoria de "página seguinte"!
xbmc.executebuiltin("Container.SetViewMode(500)")
Onde o 500 é o ID do tipo de vista que pretendemos. A função final fica assim:
def listar_videos(url): codigo_fonte = abrir_url(url) match=re.compile('<li><a class="" href="(.+?)"><span class="player"></span><img src="(.+?)"\n alt=".+?" />(.+?)<br /><em>(.+?)</em></a></li>').findall(codigo_fonte) for url, img, titulo, data in match: codigo_fonte_pagina_de_video = abrir_url('http://www.maisfutebol.iol.pt' + url) match = re.compile('.*file=(.+?)&streamer=(.+?)amp;config.+?\n.+?<meta http-equiv="X-UA-Compatible"').findall(codigo_fonte_pagina_de_video) for ficheiro, streamer in match: ficheiro = ficheiro.replace('%3A',':') streamer = streamer.replace('%3A',':') streamer = streamer.replace('%2F','/') #nesta altura streamer = rtmp://video1.iol.pt/vod& match = re.compile('rtmp://(.+?)/(.+?)&').findall(streamer) for rtmp,app in match: addLink(titulo,'rtmp://' + rtmp + ':80/' + app + '/' + ficheiro,img) # Parte do codigo para o botao da pagina seguinte match = re.compile('.*.+?href="(.+?)">Página Seguinte ></a></div>\n.+?<div class="pub-iol"').findall(codigo_fonte) for url_proxima_pagina in match: addDir('Proximo >>','http://www.maisfutebol.iol.pt' + url_proxima_pagina,1,'') xbmc.executebuiltin("Container.SetViewMode(500)")
Simples certo?
Podem fazer o download do addon.py actualizado aqui:
http://enen92.aminhacasadigital.com/addon3.py
Próximo desafio:
-Coloca uma imagem personalizada na directoria de "próxima página"
-Adiciona um novo menu onde podes pesquisar vídeos (e listar) os resultados da pesquisa.
Até breve,
Miguel
0 Comments: