XBMC - O teu primeiro addon - Repositório com updates automáticos com google code e subversion

Olá a todos,

Já lá vai algum tempo desde que escrevi o último post desta série de tutoriais. Ainda assim, é bom ver que foram úteis a alguns leitores que começaram a criar o seus primeiros addons. Neste post, pretende-se explicar uma das possíveis formas de criar um repositório para o vosso addon para permitir que os vossos utilizadores recebam automaticamente as alterações que introduzam no addon. Qualquer servidor web ou plataforma de alojamento serve perfeitamente para alojar o vosso addon. A dropbox ou outra cloud com alojamento público pode ser uma alternativa mas...não a sugiro devido às limitações de tráfego. As melhores alternativas gratuitas são respectivamente: o google code (suporta git ou svn), o github (apenas git) ou o sourceforge.

Sendo assim, ilustra-se neste post a criação de um repositório utilizando como alojamento o google code recorrendo ao subversion (svn) para envio dos ficheiros.

O que é um repositório?

Um repositório é em última análise, um simples ficheiro xml que aponta para dois ficheiros principais: o addons.xml (listagem de todos os addon.xml dos vossos addons) e o addons.xml.md5 (que não é mais do que uma checksum do ficheiro addons.xml). Uma checksum, é uma hash do conteúdo do ficheiro addons.xml que serve para uma comparação rápida entre dois ficheiros.
Para compreenderem melhor visitem este site: http://www.adamek.biz/md5-generator.php e gerem hashs para as palavras "aminhacasadigital.com" e "forum.aminhacasadigital.com". Verificam facilmente que as hashs geradas são diferentes. Agora pensem que em vez de uma palavra curta como "aminhacasadigital" se utilizava um texto com dezenas de linhas. O tempo de comparação entre dois textos seria muito mais curto, uma vez que apenas se comparavam as hash's dos textos que resultam em strings com apenas algumas dezenas de letras.
Na realidade, esta é a forma que o xbmc utiliza para verificar se existem alterações (nova versão) no addon. Se acederem ao menu de contexto de um repositório encontrarão 2 opções:  "Procurar actualizações" e "forçar actualização". A primeira, limita-se a comparar a hash do addon.xml que têm instalado com a hash do addon.xml alojada no servidor. Já a segunda, lê todo o texto do addon.xml que têm instalado e compara-o com o ficheiro alojado no servidor.
A primeira opção é portanto uma forma rápida de procurar actualizações...

Mas deixemo-nos de conversa e ilustremos a construção do repositório...

Criação do google code project

Antes de mais, necessitam de criar uma conta google (se ainda não tiverem) e criar um novo projecto no google code (http://code.google.com) preenchendo os dados como na imagem abaixo (atenção ao "subversion").

Uma vez criado o projecto, toda a informação importante que necessitam para o operar encontra-se na divisão "source" (ver imagem abaixo).


Controlo do projecto

Windows:

Ferramentas que precisam:
Após instalação de ambas as ferramentas, abram o explorador do windows e criem uma pasta num local à vossa escolha para o repositório. No meu caso C:\repositorio. Uma vez dentro da pasta, cliquem com o botão direito do rato num espaço vazio e façam "SVN checkout"


No endereço coloquem o endereço do projecto (obtido na parte source do google code - ver 2ª imagem). No meu caso (atenção ao https):

https://plugin-xbmc-maisfutebol.googlecode.com/svn/trunk/ plugin-xbmc-maisfutebol

Serão pedidos o username (vosso email google) e a password (obtida na secção source do projecto - ver segunda imagem). Após finalizado, ficarão com uma cópia da pasta com o nome do repositório (plugin-xbmc-maisfutebol no meu caso) dentro da pasta c:\repositorio.

Coloquem a pasta do addon dentro da pasta criada, juntamente com um script em python (addons_xml_generator.py) que gera automaticamente o addons.xml e o addons.xml.md5 para o repositório. Podem fazer download desse ficheiro python aqui.
A pasta deverá ficar como na imagem abaixo:


Agora executem o ficheiro python (deverão ter o python 2.7.5 instalado) para serem criados o addons.xml e o addons.xml.md5. Se tudo correr bem, após execução do script, a pasta ficará como na imagem abaixo.


Carreguem novamente com o botão direito do rato num local vazio da pasta e escolham: TurtoiseSVN -> Commit de forma a fazerem upload do conteúdo da pasta para o google code. Selecionem todos os ficheiros e confirmem a operação. Deverão ser pedidas novamente, as credenciais (utilizador e password).


Se tudo correr bem e se no final da operação consultarem o endereço onde são alojados os ficheiros do vosso plugin, deverão constar os ficheiros que adicionaram.



Mac OS:

O procedimento é idêntico, apenas não é necessário instalar o python (podem executar o ficheiro no terminal) e o programa para o subversion é também diferente. Recomendo que utilizem o Versions (http://www.versionsapp.com/).

Linux (Debian-based):

O subversion não vem instalado de origem:

sudo apt-get install subversion

O controlo do repositório é feito no terminal:

svn co --> checkout
svn add --> adicionar ficheiros
svn ci --> commit das revisões


Criar o repositório

Como referi no inicio do post, o repositório é um simples ficheiro xml que aponta para o addons.xml e addons.xml.md5 alojados num determinado local da web. Em baixo fica o exemplo do ficheiro addon.xml para este repositório do tutorial utilizando os endereços dos ficheiros enviados para o google code.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="repository.maisfutebol.xbmc" name="Repositorio tutorial" version="1.0.0" provider-name="Miguel BF">
<extension point="xbmc.addon.repository" name="Maisfutebol Add-on Repository">
<info compressed="false">http://plugin-xbmc-maisfutebol.googlecode.com/svn/trunk/plugin-xbmc-maisfutebol/addons.xml</info>
<checksum>http://plugin-xbmc-maisfutebol.googlecode.com/svn/trunk/plugin-xbmc-maisfutebol/addons.xml.md5</checksum>
<datadir zip="false">http://plugin-xbmc-maisfutebol.googlecode.com/svn/trunk/plugin-xbmc-maisfutebol/</datadir>
</extension>
<extension point="xbmc.addon.metadata">
<summary>Repositório Maisfutebol</summary>
<description>Repositorio para o tutorial do blog</description>
<disclaimer></disclaimer>
<platform>all</platform>
</extension>
</addon>


Basta portanto criar um zip contendo o addon.xml com o codigo acima, juntamente com o logo.png e a fanart.jpg(opcionais) e distribuir. Até podem colocar o ficheiro na pasta que utilizaram para o repositório e fazer commit. Têm um exemplo de um repositório aqui.

Como actualizar o addon e permitir que os utilizadores recebam a actualização?

É muito simples. Basta que substituam na pasta do repositório os ficheiros que foram alterados e alterem a versão do addon no ficheiro addon.xml que está na pasta do addon.py. Corram novamente o ficheiro python (addons_xml_generator.py) e façam commit das alterações, como indicado mais acima.

Bom trabalho.

Alguma dúvida, coloquem por favor no fórum.

Miguel Borges de Freitas

0 Comments: