XBMC - O teu primeiro addon - 2 - (Ficheiros de log)
Durante a fase de desenvolvimento de
um addon cometerão vários erros. Erros de script, incompatibilidades com alguma definição do XBMC, bugs do próprio software etc etc. Seria impossível resolver alguns desses erros sem dispor de alguma "ajuda" ou de uma ferramenta que nos dê alguma informação sobre o erro que ocorreu.
Felizmente, o XBMC escreve para os ficheiros de log muita da informação relevante acerca daquilo que "está a acontecer". Por outro lado, podem utilizar o próprio addon para escrever informação para o Log de forma a determinar com exactidão em que parte do código ocorreu um determinado problema.
Por exemplo, se ocorrer um erro de script no vosso addon e um determinado utilizador vos disser: "Não consegui fazer a tarefa x, obtive um erro de script". A resposta imediata é "posso ver o log?" ou "podes-me enviar o log?".
Esses ficheiros de log localizam-se em:
Windows:
-Windows XP: Documents and Settings\user\Application Data\XBMC\xbmc.log
-WIndows 7: Users\user\AppData\Roaming\XBMC\xbmc.log
Mac OS:
/Users/user/Library/Logs/XBMC.log
Linux/Linux based:
/home/user/.xbmc/temp/xbmc.log
Será neste ficheiro que deverão procurar a resposta aos vossos problemas.
Um exemplo simples:
-Imaginem que me enganei a adicionar o menu "VIDEOS" na função CATEGORIES(). Em vez de 'VIDEOS' escrevi apenas VIDEOS. Assim:
def CATEGORIES(): addDir(VIDEOS,'http://www.maisfutebol.iol.pt/videos',1,'http://digitalsherpa.com/wp-content/uploads/2013/04/social-media-marketing-tool.png')
Em vez de:
def CATEGORIES(): addDir('VIDEOS','http://www.maisfutebol.iol.pt/videos',1,'http://digitalsherpa.com/wp-content/uploads/2013/04/social-media-marketing-tool.png')
Notarão que ocorreu um determinado erro quando iniciarem o addon:
Se consultarem o ficheiro de log:
Encontrarão facilmente o motivo do erro:
22:10:08 T:2860514112 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<-- - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS! Error Type: <type 'exceptions.NameError'> Error Contents: global name 'VIDEOS' is not defined Traceback (most recent call last): File "/home/toshiba/.xbmc/addons/plugin.video.maisfutebol/addon.py", line 141, in <module> CATEGORIES() File "/home/toshiba/.xbmc/addons/plugin.video.maisfutebol/addon.py", line 33, in CATEGORIES addDir(VIDEOS,'http://www.maisfutebol.iol.pt/videos',1,'http://digitalsherpa.com/wp-content/uploads/2013/04/social-media-marketing-tool.png') NameError: global name 'VIDEOS' is not defined -->End of Python script error report<--
"Global name VIDEOS is not defined" na linha 33. O que significa isto?
Significa que como não utilizaram "" na palavra VIDEOS, o Python assumiu que se referiam a uma determinada variável chamada VIDEOS que...vocês não definiram. Se utilizarem as "" o Python interpreta a expressão como uma string (uma sequência de caracteres) e não uma variável.
Vamos fazer outra experiência. Corrijam o erro e adicionem print 'Estou no menu inicial' ao fim da função:
def CATEGORIES(): addDir('VIDEOS','http://www.maisfutebol.iol.pt/videos',1,'http://digitalsherpa.com/wp-content/uploads/2013/04/social-media-marketing-tool.png') print 'Estou no menu inicial'
Salvem o ficheiro, iniciem o XBMC, entrem no addon e posteriormente no menu 'VIDEOS'. Finalmente, olhem para o ficheiro de log:
22:17:38 T:2940054336 NOTICE: -->Python Interpreter Initialized<-- 22:17:38 T:2940054336 NOTICE: Mode: None 22:17:38 T:2940054336 NOTICE: URL: None 22:17:38 T:2940054336 NOTICE: Name: None 22:17:38 T:2940054336 NOTICE: Iconimage: None 22:17:38 T:2940054336 NOTICE: Estou no menu inicial 22:17:38 T:2896526144 NOTICE: Thread Background Loader start, auto delete: false
Dá jeito certo?
Se utilizarem Windows podem instalar a ferramenta XBMC log analiser (download) que vos permitirá seguir o log em tempo real (e apresentar as entradas de erro/aviso de forma colorida para fácil identificação).
Bom trabalho.
Decidi dar continuação ao primeiro tutorial "o teu primeiro addon" e fazer dele o início de uma série de tutoriais. No fim do primeiro post encontram alguns desafios. Esses desafios serão respondidos num post do blog amanhã as 18h. Esse post conterá novos desafios, que serão respondidos num novo post que sairá sábado às 17h e assim sucessivamente...
Até breve,
Miguel Borges de Freitas
0 Comments: