The branch, frodo has been updated
via 102f2f62dfb74d92fbc466efea3a81f3ada90c1a (commit)
from ef6bf5124f6e0ec1239b6f0ff076f92445b1c597 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=102f2f62dfb74d92fbc466efea3a81f3ada90c1a
commit 102f2f62dfb74d92fbc466efea3a81f3ada90c1a
Author: Martijn Kaijser <[email protected]>
Date: Thu Sep 19 20:48:15 2013 +0200
[script.module.buggalo] 1.1.5
diff --git a/script.module.buggalo/README.md b/script.module.buggalo/README.md
index 2a16a8f..02e3ff0 100644
--- a/script.module.buggalo/README.md
+++ b/script.module.buggalo/README.md
@@ -5,7 +5,8 @@ exception in a Python script as well as information about the
users system, such as XBMC and Python versions.
The collected information is then posted to the internet at a
-predefined URL where the addon author can investigate the exception.
+predefined URL or Gmail account where the addon author can
+investigate the exception.
The script is somewhat similar to posting the xbmc.log to pastebin,
but is more specialised and doesn't contain superfluous information.
@@ -15,13 +16,22 @@ has to decide if they want to submit the bug report or not.
The user will see a dialog as seen in this screenshot:
http://forum.xbmc.org/showthread.php?tid=121925&pid=1137307#pid1137307
+
HOW TO USE
==========
To use this script you must do these things besides importing it.
-1. Set buggalo.SUBMIT_URL to a full URL where the collected data is submitted.
+1. Choose whether to submit the collected data to a Gmail account or
+ a private website containing buggalo-web.
+
+ * To use a Gmail account set the buggalo.GMAIL_RECIPIENT to the full
+ gmail.com address of the recipient.
-2. Surround the code you want to be covered by this script in a try..except
block, such as:
+ * To use a website set buggalo.SUBMIT_URL to a full URL where the
+ collected data is submitted.
+
+2. Surround the code you want to be covered by this script in a
+ try..except block, such as:
```python
try
@@ -40,8 +50,9 @@ To use this script you must do these things besides importing
it.
See this link for an example:
https://github.com/twinther/script.tvguide/blob/master/gui.py#L140
- Optionally, instead of writing the try..except block yourself, you can
decorate the function
- with @buggalo_try_except(). Function specific may be provide in the
decorator:
+ Optionally, instead of writing the try..except block yourself, you
+ can decorate the function with @buggalo_try_except(). Function
+ specific extra data may be provide in the decorator:
```python
@buggalo_try_except({'class' : 'MyWindowXML', 'method' : 'onInit',
'other_key' : 'other_value'})
@@ -49,17 +60,25 @@ To use this script you must do these things besides
importing it.
pass
```
-3. Finally you must setup the website where the error report is submitted.
- A good starting point is my buggalo-web module on github:
+3. If you chose to use a private website in step 1, now is the time to
configure that
+ - otherwise there is no step 3...
+
+ A good starting point for the website is my buggalo-web module on github:
https://github.com/twinther/buggalo-web
If you want to roll your own custom setup then take a look at the
submit.php
file which store the error report in the database.
https://github.com/twinther/buggalo-web/blob/master/submit.php
- If you don't want to or can't setup your own website you can use the
shared site at:
- http://buggalo.xbmc.info/
- In this case buggalo.SUBMIT_URL must be set to:
- http://buggalo.xbmc.info/submit.php
+
+NOTES ABOUT GMAIL RECIPIENT
+===========================
+Gmail has pretty good spam filtering, but there's a good change the error
reports
+will end up in your spam folder. You will have to tweak your spam settings if
that
+is the case.
+
+Furthermore all emails are prefixed with [Buggalo] and [addon.id] in the
subject,
+so you can use that for making filters.
+
WHAT IS COLLECTED
=================
@@ -78,9 +97,11 @@ such as date and time.
Type of exception, message and full stack trace
* User flow information
For plugin-type addons each request is recorded with parameters and
timestamp
- For script-type addons the author must record relevant information by
invoking the trackUserFlow() method
+ For script-type addons the author must record relevant information by
invoking
+ the trackUserFlow() method
+
+For further details take a look at the code in buggalo_client.py
-For further details take a look at the code in buggalo.py
TRACKING USER FLOW
==================
@@ -109,4 +130,4 @@ The module is named after a creature in my favorite
animated show:
http://theinfosphere.org/Where_the_Buggalo_Roam
---------------------------------------------------------------------
-2012.09.19 - twinther
+2012.09.26 - twinther
diff --git a/script.module.buggalo/addon.xml b/script.module.buggalo/addon.xml
index 5d5ff1d..ef8f6ad 100644
--- a/script.module.buggalo/addon.xml
+++ b/script.module.buggalo/addon.xml
@@ -1,14 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.module.buggalo" name="Buggalo Exception Collector"
version="1.1.2" provider-name="twinther [[email protected]]">
+<addon id="script.module.buggalo" name="Buggalo Exception Collector"
version="1.1.5" provider-name="twinther">
<requires>
- <import addon="xbmc.python" version="2.0"/>
+ <import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.simplejson" version="2.0.10"/>
</requires>
<extension point="xbmc.python.module" library="lib"/>
<extension point="xbmc.addon.metadata">
- <summary>Automatic exception collector</summary>
- <description>This module can collect various information about an
exception and the users system such as XBMC and Python versions, etc. and
submit it to a url.</description>
+ <summary lang="be">Automatic exception collector</summary>
+ <summary lang="da">Automatisk indsamling af fejl</summary>
+ <summary lang="de">Automatische Fehlerberichterstattung</summary>
+ <summary lang="el">ÎÏ
ÏÏμαÏÎ¿Ï ÏÏ
λλÎκÏηÏ
εξαιÏÎÏεÏν</summary>
+ <summary lang="en">Automatic exception collector</summary>
+ <summary lang="es">Capturador automático de excepciones</summary>
+ <summary lang="es_MX">Recogedor de excepcion automatica</summary>
+ <summary lang="fr">Collecteur automatique d'exceptions</summary>
+ <summary lang="gl">Recolector automático de excepcións</summary>
+ <summary lang="he">××סף ×ר×××ת ×××××××</summary>
+ <summary lang="hu">Automatikus kivételgyűjtÅ</summary>
+ <summary lang="it">Raccoglitore automatico di eccezioni</summary>
+ <summary lang="nl">Automatische uitzondering verzamelaar</summary>
+ <summary lang="pl">Automatyczny kolekcjoner wyjÄ
tków.</summary>
+ <summary lang="pt">Recolector automático de excepções</summary>
+ <summary lang="pt_BR">Coletor exceção automática</summary>
+ <summary lang="sk">Automatický zberateľ výnimiek</summary>
+ <summary lang="sv">Automatisk undantagsfelsinsamlare</summary>
+ <summary lang="zh">å¼å¸¸èªå¨æ¶éå¨</summary>
+ <description lang="be">This module can collect various information
about an exception and the users system such as XBMC and Python versions, etc.
and submit it to a url.</description>
+ <description lang="da">Dette modul kan indsamle forskellige
informationer om en fejl og brugerens system såsom XBMC- og Pythonversioner
osv. og sende det til en webadresse.</description>
+ <description lang="de">Dieses Modul kann diverse Informationen über
einen Programm-Fehler sowie die Umgebung (XBMC- und Python-Versionen) sammeln
und zu einer URL senden.</description>
+ <description lang="el">ÎÏ
ÏÏ Ïο εÏγαλείο μÏοÏεί
να ÏÏ
λλÎγει διάÏοÏÎµÏ ÏληÏοÏοÏÎ¯ÎµÏ ÏÏεÏικά
με μία εξαίÏεÏη καθÏÏ ÎºÎ±Î¹ ÏÎ¹Ï XBMC και Python
εκδÏÏÎµÎ¹Ï ÏοÏ
ÏÏ
ÏÏήμαÏÎ¿Ï ÏοÏ
ÏÏήÏÏη, κÏλ.,
και να ÏÎ¹Ï Ï
Ïοβάλλει Ïε μία διεÏθÏ
νÏη
url.</description>
+ <description lang="en">This module can collect various information
about an exception and the users system such as XBMC and Python versions, etc.
and submit it to a url.</description>
+ <description lang="es">Este módulo recopila información acerca de
una excepción y el sistema de los usuarios (por ejemplo las versiones de XBMC
y Python, etc) y la envÃa a una URL.</description>
+ <description lang="es_MX">Este modulo puede recoger varia
informacionacerca de una excepcion y usuarios del sistema como XBMC y versiones
Python, etc. y enviarlo a una url.</description>
+ <description lang="fr">Ce module peut collecter différentes
informations sur une exception et le système comme les versions d'XBMC et de
Python, etc. et les soumettre sur une URL.</description>
+ <description lang="gl">Este módulo pode recoller diversa información
sobre unha excepción e o sistema dos usuarios , como o XBMC e as versións de
Python, etc, e envialo a un url.</description>
+ <description lang="he">××××× ×× ×××× ××ס××£ ××××¢
××××× ×¢× ×ר××× ××ער×ת ××שת×ש ××× ×רס××ת XBMC,
פ××ת×× ××××'. ××ש××× ××ת ××ת××ת.</description>
+ <description lang="hu">Ez a modul információkat szolgáltat a
kiváltott kivételekrÅl és a felhasználó rendszerérÅl(, mint pl. az XBMC
vagy Phyton verzió) és egy URL-be helyezi.</description>
+ <description lang="it">Questo modulo può raccogliere varie
informazioni circa un'eccezione ed il i sistemi degli utenti come le versioni
di XBMC e di Pyton, ecc.... ed inviarle ad un url</description>
+ <description lang="nl">Deze module kan diverse informatie verzamelen
over uitzonderingen en van het systeem van de gebruiker zoals XBMC en Python
versie, enz. en deze versturen naar een URL.</description>
+ <description lang="pl">ModóŠten potrafi zbieraÄ różne informacje
o wyjÄ
tkach, użytkownikach systemów takich jak XBMC oraz Python etc, i
przesÅaÄ je na podany adres url.</description>
+ <description lang="pt">Este módulo pode recolher diversas
informações sobre uma excepção e sobre o sistema dos utilizadores, como o
XBMC e as versões de Python, etc, e submetê-las para uma url.</description>
+ <description lang="pt_BR">Este módulo pode coletar diversas
informações sobre uma exceção no sistema dos usuários, tais como o XBMC e
versões de Python, etc, e submetê-lo para uma url</description>
+ <description lang="sk">Tento doplnok môže zbierať rôzne
informácie o vzniknutých výnimkách, užÃvateľskom systéme ako je XBMC, o
verzii Python a inom a odoslať ich na URL.</description>
+ <description lang="sv">Den här modulen kan samla in diverse
information om undantagsfel och användarens system, såsom XBMC och
Python-versioner, etc. och skicka in det till en url.</description>
+ <description
lang="zh">æ¤ç»ä»¶å¯ä»¥æ¶éä¸ä¸ªå¼å¸¸æç¨æ·ç³»ç»ç¸å
³ç夿¹é¢ä¿¡æ¯å¦XBMCåPythonççæ¬çãå¹¶å°æ¤ä¿¡æ¯åéå°ä¸ä¸ªç½å</description>
<license>GPLv2</license>
<platform>all</platform>
+ <email>[email protected]</email>
+ <website>http://tommy.winther.nu</website>
+ <forum>http://forum.xbmc.org/showthread.php?tid=121925</forum>
+ <source>https://github.com/twinther/script.module.buggalo</source>
+ <language></language>
</extension>
</addon>
diff --git a/script.module.buggalo/changelog.txt
b/script.module.buggalo/changelog.txt
index 6bb5216..c802185 100644
--- a/script.module.buggalo/changelog.txt
+++ b/script.module.buggalo/changelog.txt
@@ -1,3 +1,13 @@
+[B]Version 1.1.5 - 2013-09-16[/B]
+- Updated language files from Transifex
+
+[B]Version 1.1.4 - 2013-06-05[/B]
+- Improved logging in case of internal buggalo errors
+
+[B]Version 1.1.3 - 2013-05-18[/B]
+- Added support for sending error reports to a gmail account
+- Updated language files from Transifex
+
[B]Version 1.1.2 - 2012-09-09[/B]
- Improved UI compatibility with skins other than Confluence
- Updated movie quotes
diff --git a/script.module.buggalo/lib/buggalo.py
b/script.module.buggalo/lib/buggalo.py
index 49c65a9..450d3ae 100644
--- a/script.module.buggalo/lib/buggalo.py
+++ b/script.module.buggalo/lib/buggalo.py
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2012 Tommy Winther
+# Copyright (C) 2013 Tommy Winther
# http://tommy.winther.nu
#
# This Program is free software; you can redistribute it and/or modify
@@ -29,18 +29,27 @@ import buggalo_client as client
import buggalo_gui as gui
import buggalo_userflow as userflow
-# The full URL to where the gathered data should be posted.
+# You must provide either the SUBMIT_URL or GMAIL_RECIPIENT
+# via buggalo.SUBMIT_URL = '' or buggalo.GMAIL_RECIPIENT = ''
+
+# The full URL to where the gathered data should be posted.
SUBMIT_URL = None
+# The email address where the gathered data should be sent.
+GMAIL_RECIPIENT = None
+
EXTRA_DATA = dict()
+
SCRIPT_ADDON = len(sys.argv) == 1
if not SCRIPT_ADDON:
# Automatically track userflow for plugin type addons
userflow.trackUserFlow('%s%s' % (sys.argv[0], sys.argv[2]))
+
def addExtraData(key, value):
EXTRA_DATA[key] = value
+
def trackUserFlow(value):
"""
Registers an entry in the user's flow through the addon.
@@ -54,6 +63,7 @@ def trackUserFlow(value):
"""
userflow.trackUserFlow(value)
+
def getRandomHeading():
"""
Get a random heading for use in dialogs, etc.
@@ -66,7 +76,7 @@ def getLocalizedString(id):
"""
Same as Addon.getLocalizedString() but retrieves data from this module's
strings.xml
"""
- buggaloAddon = xbmcaddon.Addon(id = 'script.module.buggalo')
+ buggaloAddon = xbmcaddon.Addon(id='script.module.buggalo')
return buggaloAddon.getLocalizedString(id)
@@ -80,13 +90,14 @@ def buggalo_try_except(extraData = None):
def decorator(fn):
def wrap_in_try_except(*args, **kwargs):
try:
- fn(*args, **kwargs)
+ return fn(*args, **kwargs)
except Exception:
onExceptionRaised(extraData)
return wrap_in_try_except
return decorator
-def onExceptionRaised(extraData = None):
+
+def onExceptionRaised(extraData=None):
"""
Invoke this method in an except clause to allow the user to submit
a bug report with stacktrace, system information, etc.
@@ -97,8 +108,8 @@ def onExceptionRaised(extraData = None):
@param extraData: str or dict
"""
# start by logging the usual info to stderr
- (type, value, traceback) = sys.exc_info()
- tb.print_exception(type, value, traceback)
+ (etype, value, traceback) = sys.exc_info()
+ tb.print_exception(etype, value, traceback)
if not SCRIPT_ADDON:
try:
@@ -109,8 +120,8 @@ def onExceptionRaised(extraData = None):
pass
heading = getRandomHeading()
- data = client.gatherData(type, value, traceback, extraData, EXTRA_DATA)
+ data = client.gatherData(etype, value, traceback, extraData, EXTRA_DATA)
- d = gui.BuggaloDialog(SUBMIT_URL, heading, data)
+ d = gui.BuggaloDialog(SUBMIT_URL, GMAIL_RECIPIENT, heading, data)
d.doModal()
del d
diff --git a/script.module.buggalo/lib/buggalo_client.py
b/script.module.buggalo/lib/buggalo_client.py
index 2edee6c..52d3bae 100644
--- a/script.module.buggalo/lib/buggalo_client.py
+++ b/script.module.buggalo/lib/buggalo_client.py
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2012 Tommy Winther
+# Copyright (C) 2013 Tommy Winther
# http://tommy.winther.nu
#
# This Program is free software; you can redistribute it and/or modify
@@ -25,20 +25,22 @@ import simplejson
import sys
import traceback
import urllib2
-
+import smtplib
+from email.mime.text import MIMEText
import xbmc
import xbmcaddon
import buggalo_userflow as userflow
-def gatherData(type, value, tracebackInfo, extraData, globalExtraData):
+
+def gatherData(etype, value, tracebackInfo, extraData, globalExtraData):
data = dict()
data['version'] = 4
data['timestamp'] = datetime.datetime.now().isoformat()
exception = dict()
exception['stacktrace'] = traceback.format_tb(tracebackInfo)
- exception['type'] = str(type)
+ exception['type'] = str(etype)
exception['value'] = str(value)
data['exception'] = exception
@@ -106,8 +108,8 @@ def gatherData(type, value, tracebackInfo, extraData,
globalExtraData):
elif extraData is not None:
extraDataInfo[''] = str(extraData)
except Exception, ex:
- (type, value, tb) = sys.exc_info()
- traceback.print_exception(type, value, tb)
+ (etype, value, tb) = sys.exc_info()
+ traceback.print_exception(etype, value, tb)
extraDataInfo['exception'] = str(ex)
data['extraData'] = extraDataInfo
@@ -123,8 +125,49 @@ def submitData(serviceUrl, data):
u = urllib2.urlopen(req)
u.read()
u.close()
- break # success; no further attempts
+ break # success; no further attempts
except Exception:
pass # probably timeout; retry
+def emailData(recipient, data):
+ """
+
+ @param recipient:
+ @param data:
+ @return:
+ """
+
+ # build html table with data
+ body = '<table border="1">'
+ for group in sorted(data.keys()):
+ values = data[group]
+ if type(values) == dict:
+ body += '<tr><td colspan="2"><h2>%s</h2></td></tr>' %
group.capitalize()
+ keys = values.keys()
+ if group == 'userflow':
+ keys = sorted(keys)
+
+ for key in keys:
+ body += '<tr><td>%s</td>' % key
+ if key == 'stacktrace':
+ body += '<td><pre>'
+ for item in values[key]:
+ body += item + '\n'
+ body += '</pre></td>'
+ else:
+ body += '<td>%s</td>' % str(values[key])
+ body += '</tr>'
+ else:
+ body += '<tr><td><h2>%s</h2></td><td>%s</td></tr>' %
(group.capitalize(), str(values))
+ body += '</table>'
+
+ msg = MIMEText(body, 'html')
+ msg['Subject'] = '[Buggalo][%s] %s' % (data['addon']['id'],
data['exception']['value'])
+ msg['From'] = 'Buggalo'
+ msg['To'] = recipient
+ msg['X-Mailer'] = 'Buggalo Exception Collector'
+
+ smtp = smtplib.SMTP('gmail-smtp-in.l.google.com')
+ smtp.sendmail(msg['From'], msg['To'], msg.as_string(9))
+ smtp.quit()
diff --git a/script.module.buggalo/lib/buggalo_gui.py
b/script.module.buggalo/lib/buggalo_gui.py
index 819bc57..6a5797d 100644
--- a/script.module.buggalo/lib/buggalo_gui.py
+++ b/script.module.buggalo/lib/buggalo_gui.py
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2012 Tommy Winther
+# Copyright (C) 2013 Tommy Winther
# http://tommy.winther.nu
#
# This Program is free software; you can redistribute it and/or modify
@@ -18,19 +18,23 @@
# http://www.gnu.org/copyleft/gpl.html
#
#
+import sys
+import traceback
+
import buggalo_client as client
import xbmc
import xbmcaddon
import xbmcgui
-buggaloAddon = xbmcaddon.Addon(id = 'script.module.buggalo')
+buggaloAddon = xbmcaddon.Addon(id='script.module.buggalo')
ACTION_PARENT_DIR = 9
ACTION_PREVIOUS_MENU = 10
+
class BuggaloDialog(xbmcgui.WindowXMLDialog):
- THANKS_YOU_VISIBLE_LABEL = 98
+ THANK_YOU_VISIBLE_LABEL = 98
DETAILS_VISIBLE_LABEL = 99
CLOSE_BUTTON = 100
SUBMIT_BUTTON = 101
@@ -42,23 +46,24 @@ class BuggaloDialog(xbmcgui.WindowXMLDialog):
ERROR_MESSAGE_GROUP = 200
DETAILS_GROUP = 201
THANK_YOU_GROUP = 202
+ THANK_YOU_LABEL = 203
- def __new__(cls, serviceUrl, heading, data):
+ def __new__(cls, serviceUrl, gmailRecipient, heading, data):
return super(BuggaloDialog, cls).__new__(cls, 'buggalo-dialog.xml',
buggaloAddon.getAddonInfo('path'))
- def __init__(self, serviceUrl, heading, data):
+ def __init__(self, serviceUrl, gmailRecipient, heading, data):
super(BuggaloDialog, self).__init__()
self.serviceUrl = serviceUrl
+ self.gmailRecipient = gmailRecipient
self.heading = heading
self.data = data
self.detailsVisible = False
-
def onInit(self):
self.getControl(self.HEADING_LABEL).setLabel(self.heading)
self.getControl(self.DETAILS_VISIBLE_LABEL).setVisible(not
self.detailsVisible)
- self.getControl(self.THANKS_YOU_VISIBLE_LABEL).setVisible(True)
-
self.getControl(self.DETAILS_LINE1_LABEL).setLabel(buggaloAddon.getLocalizedString(91000)
% self.data['addon']['name'])
+ self.getControl(self.THANK_YOU_VISIBLE_LABEL).setVisible(True)
+
self.getControl(self.DETAILS_LINE1_LABEL).setLabel(buggaloAddon.getLocalizedString(91000)
% self.data['addon']['name'].decode('utf-8', 'replace'))
listControl = self.getControl(self.DETAILS_LIST)
try:
@@ -72,18 +77,16 @@ class BuggaloDialog(xbmcgui.WindowXMLDialog):
keys = sorted(keys)
for key in keys:
- item = xbmcgui.ListItem(label = ' %s' % key,
label2 = str(values[key]))
+ item = xbmcgui.ListItem(label=' %s' % key,
label2=str(values[key]))
listControl.addItem(item)
else:
- item = xbmcgui.ListItem(label = '[B]%s[/B]' % group,
label2 = str(values))
+ item = xbmcgui.ListItem(label='[B]%s[/B]' % group,
label2=str(values))
listControl.addItem(item)
except Exception:
- item = xbmcgui.ListItem(label2 =
buggaloAddon.getLocalizedString(91008))
+ item =
xbmcgui.ListItem(label2=buggaloAddon.getLocalizedString(91008))
listControl.addItem(item)
-
-
def onAction(self, action):
if action.getId() in [ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU]:
self.close()
@@ -94,9 +97,17 @@ class BuggaloDialog(xbmcgui.WindowXMLDialog):
elif controlId == self.SUBMIT_BUTTON:
self.getControl(self.DETAILS_VISIBLE_LABEL).setVisible(True)
- self.getControl(self.THANKS_YOU_VISIBLE_LABEL).setVisible(False)
-
- client.submitData(self.serviceUrl, self.data)
+ self.getControl(self.THANK_YOU_VISIBLE_LABEL).setVisible(False)
+
+ try:
+ if self.serviceUrl is not None:
+ client.submitData(self.serviceUrl, self.data)
+ elif self.gmailRecipient is not None:
+ client.emailData(self.gmailRecipient, self.data)
+ except Exception:
+
self.getControl(self.THANK_YOU_LABEL).setLabel(buggaloAddon.getLocalizedString(91009))
+ (etype, value, tb) = sys.exc_info()
+ traceback.print_exception(etype, value, tb)
xbmc.sleep(2000)
self.close()
@@ -109,6 +120,5 @@ class BuggaloDialog(xbmcgui.WindowXMLDialog):
else:
self.getControl(self.DETAILS_BUTTON).setLabel(buggaloAddon.getLocalizedString(91006))
-
def onFocus(self, control):
pass
\ No newline at end of file
diff --git a/script.module.buggalo/lib/buggalo_userflow.py
b/script.module.buggalo/lib/buggalo_userflow.py
index a22fe29..e195879 100644
--- a/script.module.buggalo/lib/buggalo_userflow.py
+++ b/script.module.buggalo/lib/buggalo_userflow.py
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2012 Tommy Winther
+# Copyright (C) 2013 Tommy Winther
# http://tommy.winther.nu
#
# This Program is free software; you can redistribute it and/or modify
@@ -30,6 +30,7 @@ ADDON = xbmcaddon.Addon()
# TODO always send userflow, ie. daily upload for usage statistics
+
def trackUserFlow(value):
"""
Registers an entry in the user's flow through the addon.
@@ -44,6 +45,7 @@ def trackUserFlow(value):
userFlow[key] = value
saveUserFlow(userFlow)
+
def loadUserFlow():
path = xbmc.translatePath(BUGGALO_ADDON.getAddonInfo('profile'))
file = os.path.join(path, '%s.json' % ADDON.getAddonInfo('id'))
@@ -57,6 +59,7 @@ def loadUserFlow():
userFlow = dict()
return userFlow
+
def saveUserFlow(userFlow):
path = xbmc.translatePath(BUGGALO_ADDON.getAddonInfo('profile'))
if not os.path.exists(path):
@@ -64,7 +67,7 @@ def saveUserFlow(userFlow):
os.makedirs(path)
except OSError:
print "unable to create directory for saving userflow; userflow
will not be saveds"
- return # ignore
+ return # ignore
try:
file = os.path.join(path, '%s.json' % ADDON.getAddonInfo('id'))
@@ -73,7 +76,7 @@ def saveUserFlow(userFlow):
# we compare strings rather the datetimes (a little hackish though)
# but datetime.datetime.strptime() often fail for no apparent reason
# see http://forum.xbmc.org/showthread.php?tid=112916
- oneDayAgo = datetime.datetime.now() - datetime.timedelta(days = 1)
+ oneDayAgo = datetime.datetime.now() - datetime.timedelta(days=1)
oneDayAgoStr = oneDayAgo.isoformat()
for dateStr in userFlow.keys():
if dateStr < oneDayAgoStr:
diff --git a/script.module.buggalo/resources/language/Danish/strings.xml
b/script.module.buggalo/resources/language/Danish/strings.xml
index ae41c51..ad5479d 100644
--- a/script.module.buggalo/resources/language/Danish/strings.xml
+++ b/script.module.buggalo/resources/language/Danish/strings.xml
@@ -1,7 +1,23 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Translated using Transifex web application. For support, or if you would
like to to help out, please visit your language team! -->
+<!-- Danish language-Team URL:
http://www.transifex.com/projects/p/xbmc-addons/language/da/ -->
+<!-- Report language file syntax bugs at: [email protected] -->
+
<strings>
- <string id="91000">Der er desværre opstået en fejl i [B]%s[/B]
addon'en.</string>
- <string id="91001">Du kan hjælpe med at løse fejlen ved at indsende en
fejlrapport.</string>
+ <string id="90000">[B]That's it man, game over man, [I]Game over![/I][/B]
~ Aliens (1986)</string>
+ <string id="90001">[B]You can't handle the truth![/B] ~ A Few Good Men
(1992)</string>
+ <string id="90002">[B]Danger Will Robinson[/B] ~ Lost in Space
(1998)</string>
+ <string id="90003">[B]Why does it cry, Sméagol?[/B] ~ The Two Towers
(2002)</string>
+ <string id="90004">[B]Houston, we have a problem...[/B] ~ Apollo 13
(1995)</string>
+ <string id="90005">[B]E.T. phone home[/B] ~ E.T. (1982)</string>
+ <string id="90006">[B]Frankly, my dear, I don't give a damn[/B] ~ Gone
with the Wind (1939)</string>
+ <string id="90007">[B]Go ahead, make my day[/B] ~ Sudden Impact
(1983)</string>
+ <string id="90008">[B]May the Force be with you[/B] ~ Star Wars
(1977)</string>
+ <string id="90009">[B]You talkin' to me?[/B] ~ Taxi Driver (1976)</string>
+ <string id="90010">[B]Round up the usual suspects[/B] ~ Casablanca
(1942)</string>
+ <string id="90011">[B]You're gonna need a bigger boat[/B] ~ Jaws
(1975)</string>
+ <string id="91000">Der er desværre opstået en fejl i [B]%s[/B]
addon.</string>
+ <string id="91001">Du kan hjælpe med at løse fejlen ved at indsende en
fejlrapport. </string>
<string id="91002">Klik [I]Vis fejlrapport[/I] for detaljer. Der sendes
ikke personlige oplysninger.</string>
<string id="91003">Indsend fejlrapport</string>
<string id="91004">Indsend ikke</string>
@@ -9,4 +25,5 @@
<string id="91006">Vis fejlrapport</string>
<string id="91007">Skjul fejlrapport</string>
<string id="91008">Der opstod desværre et problem med at vise
detaljerne...</string>
+ <string id="91009">Fejlrapporten kunne desværre ikke sendes!</string>
</strings>
diff --git a/script.module.buggalo/resources/language/English/strings.xml
b/script.module.buggalo/resources/language/English/strings.xml
index 04cd3e0..bda27b0 100644
--- a/script.module.buggalo/resources/language/English/strings.xml
+++ b/script.module.buggalo/resources/language/English/strings.xml
@@ -1,4 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Translated using Transifex web application. For support, or if you would
like to to help out, please visit your language team! -->
+<!-- English language-Team URL:
http://www.transifex.com/projects/p/xbmc-addons/language/en/ -->
+<!-- Report language file syntax bugs at: [email protected] -->
+
<strings>
<string id="90000">[B]That's it man, game over man, [I]Game over![/I][/B]
~ Aliens (1986)</string>
<string id="90001">[B]You can't handle the truth![/B] ~ A Few Good Men
(1992)</string>
@@ -12,7 +16,6 @@
<string id="90009">[B]You talkin' to me?[/B] ~ Taxi Driver (1976)</string>
<string id="90010">[B]Round up the usual suspects[/B] ~ Casablanca
(1942)</string>
<string id="90011">[B]You're gonna need a bigger boat[/B] ~ Jaws
(1975)</string>
-
<string id="91000">Unfortunately an error occurred in the [B]%s[/B]
addon.</string>
<string id="91001">You can help with fixing the problem by submitting an
error report. </string>
<string id="91002">Click [I]Show error report[/I] for details. No personal
information is sent.</string>
@@ -22,5 +25,5 @@
<string id="91006">Show error report</string>
<string id="91007">Hide error report</string>
<string id="91008">Unfortunately a problem occurred while showing the
details...</string>
-
+ <string id="91009">Unable to send error report!</string>
</strings>
diff --git a/script.module.buggalo/resources/language/French/strings.xml
b/script.module.buggalo/resources/language/French/strings.xml
index 573f740..69a66e5 100644
--- a/script.module.buggalo/resources/language/French/strings.xml
+++ b/script.module.buggalo/resources/language/French/strings.xml
@@ -1,9 +1,29 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Translated using Transifex web application. For support, or if you would
like to to help out, please visit your language team! -->
+<!-- French language-Team URL:
http://www.transifex.com/projects/p/xbmc-addons/language/fr/ -->
+<!-- Report language file syntax bugs at: [email protected] -->
+
<strings>
- <string id="91000">Une erreur s'est produite. Vous pouvez aider Ã
corriger</string>
+ <string id="90000">[B]That's it man, game over man, [I]Game over![/I][/B]
~ Alien (1986)</string>
+ <string id="90001">[B]Vous ne pouvez pas détenir la vérité ![/B] ~ Des
hommes d'honneur (1992)</string>
+ <string id="90002">[B]Danger Will Robinson[/B] ~ Perdu dans l'espace
(1998)</string>
+ <string id="90003">[B]Qui l'a fait pleuré, Sméagol ?[/B] ~ Les deux
tours (2002)</string>
+ <string id="90004">[B]Houston, on a un problème ...[/B] ~ Apollo 13
(1995)</string>
+ <string id="90005">[B]E.T. téléphone maison[/B] ~ E.T. (1982)</string>
+ <string id="90006">[B]Franchement, mon cher, j'en ai rien à foutre[/B] ~
Autant en emporte le vent (1939)</string>
+ <string id="90007">[B]Vas-y, fais moi plaisir[/B] ~ Le Retour de
l'inspecteur Harry (1983)</string>
+ <string id="90008">[B]Que la Force vois avec toi[/B] ~ Star wars
(1977)</string>
+ <string id="90009">[C'est à moi qu'tu parles ?[/B] ~ Taxi driver
(1976)</string>
+ <string id="90010">[B]Ramassez les suspects habituels[/B] ~ Casablanca
(1942)</string>
+ <string id="90011">[B]Vous aurez besoin d'un plus gros bateau[/B] ~ Les
dents de la mer (1975)</string>
+ <string id="91000">Malheureusement une erreur est survenue dans l'addon
[B]%s[/B].</string>
<string id="91001">le problème en envoyant un rapport d'erreur.</string>
<string id="91002">Aucune information personnel n'est transmise.</string>
<string id="91003">Envoyer un rapport</string>
<string id="91004">Ne pas envoyer</string>
<string id="91005">Merci!</string>
-</strings>
\ No newline at end of file
+ <string id="91006">Afficher le rapport d'erreur</string>
+ <string id="91007">Cacher le rapport d'erreur</string>
+ <string id="91008">Malheureusement un problème est survenu durant
l'affichage des détails...</string>
+ <string id="91009">Impossible t'envoyer le rapport d'erreur !</string>
+</strings>
diff --git a/script.module.buggalo/resources/language/German/strings.xml
b/script.module.buggalo/resources/language/German/strings.xml
index fd9ac46..dbf2f3c 100644
--- a/script.module.buggalo/resources/language/German/strings.xml
+++ b/script.module.buggalo/resources/language/German/strings.xml
@@ -1,9 +1,29 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Translated using Transifex web application. For support, or if you would
like to to help out, please visit your language team! -->
+<!-- German language-Team URL:
http://www.transifex.com/projects/p/xbmc-addons/language/de/ -->
+<!-- Report language file syntax bugs at: [email protected] -->
+
<strings>
- <string id="91000">Es ist leider ein Fehler im Addon aufgetreten.</string>
+ <string id="90000">[B]Die Show ist gelaufen, das Spiel ist aus, Freunde!
[I]Das Spiel ist aus![/I][/B] ~ Aliens (1986)</string>
+ <string id="90001">[B]Sie können die Wahrheit doch gar nicht
vertragen![/B] ~ Eine Frage der Ehre (1992)</string>
+ <string id="90002">[B]Danger Will Robinson[/B] ~ Lost in Space
(1998)</string>
+ <string id="90003">[B]Sméagol, warum weint Sméagol?[/B] ~ Die Zwei
Türme (2002)</string>
+ <string id="90004">[B]Houston, wir haben ein Problem...[/B] ~ Apollo 13
(1995)</string>
+ <string id="90005">[B]E.T. nach Hause telefonieren[/B] ~ E.T.
(1982)</string>
+ <string id="90006">[B]Ehrlich gesagt, meine Liebe, das ist mir egal[/B] ~
Vom Winde verweht (1939)</string>
+ <string id="90007">[B]Mach schon, make my day[/B] ~ Dirty Harry kommt
zurück (1983)</string>
+ <string id="90008">[B]Möge die Macht mit dir sein[/B] ~ Krieg der Sterne
(1977)</string>
+ <string id="90009">[B]Redest du mit mir?[/B] ~ Taxi Driver (1976)</string>
+ <string id="90010">[B]Verhaftet die üblichen Verdächtigen[/B] ~
Casablanca (1942)</string>
+ <string id="90011">[B]Sie werden ein gröÃeres Boot brauchen[/B] ~ Der
weiÃe Hai (1975)</string>
+ <string id="91000">Es ist ein Fehler in der Erweiterung [B]%s[/B]
aufgetreten.</string>
<string id="91001">Du kannst helfen indem du einen Report sendest.</string>
- <string id="91002">Keine Persönlichen Informationen werden
gesendet!</string>
+ <string id="91002">Klicke auf [I]Fehlerbericht anzeigen[/I] für Details.
Keine Persönlichen Informationen werden gesendet.</string>
<string id="91003">Report senden</string>
<string id="91004">Nicht senden</string>
<string id="91005">Danke für die Mithilfe!</string>
+ <string id="91006">Fehlerbericht anzeigen</string>
+ <string id="91007">Fehlerbericht ausblenden</string>
+ <string id="91008">Leider ist ein Problem beim Anzeigen der Details
aufgetreten...</string>
+ <string id="91009">Der Fehlerbericht konnte nicht gesendet werden!</string>
</strings>
diff --git
a/script.module.buggalo/resources/skins/Default/720p/buggalo-dialog.xml
b/script.module.buggalo/resources/skins/Default/720p/buggalo-dialog.xml
index fa3cd77..cfaa037 100644
--- a/script.module.buggalo/resources/skins/Default/720p/buggalo-dialog.xml
+++ b/script.module.buggalo/resources/skins/Default/720p/buggalo-dialog.xml
@@ -195,6 +195,7 @@
<height>40</height>
<font>font13</font>
<textcolor>ffffffff</textcolor>
+ <focusedcolor>ffffffff</focusedcolor>
<label>$ADDON[script.module.buggalo 91004]</label>
<align>center</align>
<aligny>center</aligny>
@@ -210,6 +211,7 @@
<height>40</height>
<font>font13</font>
<textcolor>ffffffff</textcolor>
+ <focusedcolor>ffffffff</focusedcolor>
<label>$ADDON[script.module.buggalo 91003]</label>
<align>center</align>
<texturefocus>buggalo-button-focus.png</texturefocus>
@@ -226,6 +228,7 @@
<height>40</height>
<font>font13</font>
<textcolor>ffffffff</textcolor>
+ <focusedcolor>ffffffff</focusedcolor>
<label>$ADDON[script.module.buggalo 91006]</label>
<align>center</align>
<aligny>center</aligny>
@@ -245,7 +248,7 @@
<visible>!Control.IsVisible(98)</visible>
<animation effect="fade" start="0" end="100"
time="500">Visible</animation>
- <control type="label">
+ <control type="label" id="203">
<posx>0</posx>
<posy>76</posy>
<width>740</width>
-----------------------------------------------------------------------
Summary of changes:
script.module.buggalo/README.md | 49 ++++++++++++-----
script.module.buggalo/addon.xml | 49 +++++++++++++++--
script.module.buggalo/changelog.txt | 10 ++++
script.module.buggalo/lib/buggalo.py | 29 +++++++---
script.module.buggalo/lib/buggalo_client.py | 57 +++++++++++++++++---
script.module.buggalo/lib/buggalo_gui.py | 44 +++++++++------
script.module.buggalo/lib/buggalo_userflow.py | 9 ++-
.../resources/language/Belarusian/strings.xml | 29 ++++++++++
.../resources/language/Catalan/strings.xml | 11 ++++
.../language/Chinese (Simple)/strings.xml | 29 ++++++++++
.../resources/language/Danish/strings.xml | 23 +++++++-
.../resources/language/Dutch/strings.xml | 29 ++++++++++
.../resources/language/English/strings.xml | 9 ++-
.../resources/language/French/strings.xml | 26 ++++++++-
.../resources/language/Galician/strings.xml | 29 ++++++++++
.../resources/language/German/strings.xml | 26 ++++++++-
.../resources/language/Greek/strings.xml | 29 ++++++++++
.../resources/language/Hebrew/strings.xml | 29 ++++++++++
.../resources/language/Hungarian/strings.xml | 18 ++++++
.../resources/language/Italian/strings.xml | 29 ++++++++++
.../resources/language/Polish/strings.xml | 29 ++++++++++
.../language/Portuguese (Brazil)/strings.xml | 29 ++++++++++
.../resources/language/Portuguese/strings.xml | 29 ++++++++++
.../resources/language/Slovak/strings.xml | 29 ++++++++++
.../resources/language/Spanish/strings.xml | 29 ++++++++++
.../resources/language/Swedish/strings.xml | 29 ++++++++++
.../skins/Default/720p/buggalo-dialog.xml | 5 ++-
27 files changed, 675 insertions(+), 67 deletions(-)
create mode 100644
script.module.buggalo/resources/language/Belarusian/strings.xml
create mode 100644 script.module.buggalo/resources/language/Catalan/strings.xml
create mode 100644 script.module.buggalo/resources/language/Chinese
(Simple)/strings.xml
create mode 100644 script.module.buggalo/resources/language/Dutch/strings.xml
create mode 100644
script.module.buggalo/resources/language/Galician/strings.xml
create mode 100644 script.module.buggalo/resources/language/Greek/strings.xml
create mode 100644 script.module.buggalo/resources/language/Hebrew/strings.xml
create mode 100644
script.module.buggalo/resources/language/Hungarian/strings.xml
create mode 100644 script.module.buggalo/resources/language/Italian/strings.xml
create mode 100644 script.module.buggalo/resources/language/Polish/strings.xml
create mode 100644 script.module.buggalo/resources/language/Portuguese
(Brazil)/strings.xml
create mode 100644
script.module.buggalo/resources/language/Portuguese/strings.xml
create mode 100644 script.module.buggalo/resources/language/Slovak/strings.xml
create mode 100644 script.module.buggalo/resources/language/Spanish/strings.xml
create mode 100644 script.module.buggalo/resources/language/Swedish/strings.xml
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons