The branch, eden has been updated
       via  ad0f526b0335c8c452be8e7c3fee303e6154656d (commit)
       via  5f26c658ed9b89ca72de3f2836c4fbff0839c364 (commit)
       via  0df90f2458d05583b6f81337f54e213912ee7e23 (commit)
       via  a2d75189c3e6518db93991fa85d71eb07a7224e0 (commit)
       via  c6db61ff0bacf59ce3372f909982bef85b886ce6 (commit)
      from  95807bb70bee7be55b32d724c458555295c459fc (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=ad0f526b0335c8c452be8e7c3fee303e6154656d

commit ad0f526b0335c8c452be8e7c3fee303e6154656d
Author: beenje <[email protected]>
Date:   Mon Nov 26 22:19:12 2012 +0100

    [plugin.video.revision3] updated to version 2.0.11

diff --git a/plugin.video.revision3/addon.xml b/plugin.video.revision3/addon.xml
index fcba953..e29bd8a 100644
--- a/plugin.video.revision3/addon.xml
+++ b/plugin.video.revision3/addon.xml
@@ -1,21 +1,21 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.revision3"
        name="Revision3"
-       version="2.0.10" 
+       version="2.0.11" 
        provider-name="stacked">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
-       <import addon="script.module.parsedom" version="1.2.0"/>
+       <import addon="script.module.parsedom" version="1.3.0"/>
        <import addon="script.module.simple.downloader" version="0.9.3"/>
-       <import addon="script.module.buggalo" version="1.0.1"/>
+       <import addon="script.module.buggalo" version="1.1.2"/>
   </requires>
   <extension point="xbmc.python.pluginsource"
             library="default.py">
         <provides>video</provides>
   </extension>
   <extension point="xbmc.addon.metadata">
-    <summary>Revision3: The Best TV Shows on the Internet</summary>
-    <description>The leading television network for the internet 
generation.</description>
+    <summary lang="en">Revision3: The Best TV Shows on the Internet</summary>
+    <description lang="en">The leading television network for the internet 
generation.</description>
     <platform>all</platform>
        <language>en</language>
   </extension>
diff --git a/plugin.video.revision3/changelog.txt 
b/plugin.video.revision3/changelog.txt
index add6453..cdbee9b 100644
--- a/plugin.video.revision3/changelog.txt
+++ b/plugin.video.revision3/changelog.txt
@@ -1,18 +1,28 @@
+[B]Version 2.0.11[/B]
+
+- Fixed index error caused by getParameters
+- Updated open_url and retry functions
+
+
 [B]Version 2.0.10[/B]
+
 - Added better support for HTTP Errors
 - Fixed reported 'UnicodeDecodeError' errors
 - Fixed reported 'IndexError' errors
 
 [B]Version 2.0.9[/B]
+
 - Fixed error when loading shows
 
 [B]Version 2.0.8[/B]
+
 - Added support for connection timeout errors
 - Fixed loop when switching between download settings
 - Fixed 'img' referenced before assignment error
 - Fixed error when a "Unknown File Type" is played
 
 [B]Version 2.0.7[/B]
+
 - Fixed infoLabels for "Other Episodes"
 
 [B]Version 2.0.6[/B]
diff --git a/plugin.video.revision3/default.py 
b/plugin.video.revision3/default.py
index c0902d3..d3baaad 100644
--- a/plugin.video.revision3/default.py
+++ b/plugin.video.revision3/default.py
@@ -4,8 +4,8 @@ import xbmc, xbmcgui, xbmcplugin, xbmcaddon, urllib, re, 
string, sys, os, time,
 plugin =  'Revision3'
 __author__ = 'stacked <[email protected]>'
 __url__ = 'http://code.google.com/p/plugin/'
-__date__ = '09-30-2012'
-__version__ = '2.0.10'
+__date__ = '11-25-2012'
+__version__ = '2.0.11'
 settings = xbmcaddon.Addon(id='plugin.video.revision3')
 buggalo.SUBMIT_URL = 'http://www.xbmc.byethost17.com/submit.php'
 dbg = False
@@ -25,50 +25,41 @@ common.plugin = plugin + ' ' + __version__
 import SimpleDownloader as downloader
 downloader = downloader.SimpleDownloader()
 
-def retry(ExceptionToCheck, tries=4, delay=3, backoff=2, logger=None):
-    """Retry calling the decorated function using an exponential backoff.
-
-    http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
-    original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry
-
-    :param ExceptionToCheck: the exception to check. may be a tuple of
-        excpetions to check
-    :type ExceptionToCheck: Exception or tuple
-    :param tries: number of times to try (not retry) before giving up
-    :type tries: int
-    :param delay: initial delay between retries in seconds
-    :type delay: int
-    :param backoff: backoff multiplier e.g. value of 2 will double the delay
-        each retry
-    :type backoff: int
-    :param logger: logger to use. If None, print
-    :type logger: logging.Logger instance
-    """
+def retry(ExceptionToCheck, tries=11, delay=3, backoff=1, logger=None):
     def deco_retry(f):
         def f_retry(*args, **kwargs):
             mtries, mdelay = tries, delay
             try_one_last_time = True
-            while mtries > 1:
-                try:
-                    return f(*args, **kwargs)
-                    try_one_last_time = False
-                    break
-                except ExceptionToCheck, e:
-                    msg = "%s, Retrying in %d seconds..." % (str(e), mdelay)
-                    if logger:
-                        logger.warning(msg)
-                    else:
-                        print msg
-                    time.sleep(mdelay)
-                    mtries -= 1
-                    mdelay *= backoff
+            while mtries >= 0:
+                               if mtries == 0:
+                                       dialog = xbmcgui.Dialog()
+                                       ret = dialog.yesno(plugin, 
settings.getLocalizedString( 30054 ), '', '', settings.getLocalizedString( 
30052 ), settings.getLocalizedString( 30053 ))
+                                       if ret == False:
+                                               mtries, mdelay = tries, delay
+                                       else:
+                                               ok = dialog.ok(plugin, 
settings.getLocalizedString( 30051 ))
+                                               raise Exception("retry ERROR")
+                               try:
+                                       return f(*args, **kwargs)
+                                       try_one_last_time = False
+                                       break
+                               except ExceptionToCheck, e:
+                                       if mtries > 1:
+                                               msg = "%s, Retrying in %d 
seconds..." % (str(e), mdelay)
+                                               if logger:
+                                                       logger.warning(msg)
+                                               else:
+                                                       print msg
+                                               time.sleep(mdelay)
+                                               mdelay *= backoff
+                                       mtries -= 1
             if try_one_last_time:
                 return f(*args, **kwargs)
             return
-        return f_retry  # true decorator
+        return f_retry 
     return deco_retry
 
-@retry(IndexError, tries=4)
+@retry(IndexError)
 def build_main_directory(url):
        path = url
        html = open_url(url)
@@ -102,7 +93,7 @@ def build_main_directory(url):
        setViewMode("515")
        xbmcplugin.endOfDirectory(int(sys.argv[1]))
 
-@retry(IndexError, tries=4)
+@retry(IndexError)
 def build_sub_directory(url, name):
        saveurl = url
        studio = name
@@ -192,7 +183,7 @@ def build_sub_directory(url, name):
        setViewMode("503")
        xbmcplugin.endOfDirectory(int(sys.argv[1]))
        
-@retry(IndexError, tries=4)
+@retry(IndexError)
 def get_video(url, name, plot, studio, episode, thumb, date):
        result = open_url(url)
        video_id = 
re.compile('player\.loadRevision3Item\(\'video_id\',(.+?)\);').findall(result)[0].replace('
 ','')
@@ -258,7 +249,7 @@ def get_video(url, name, plot, studio, episode, thumb, 
date):
                        listitem.setInfo( type = "Video", infoLabels={ "Title": 
name, "Studio": studio, "Plot": plot, "Episode": int(episode), "Aired": date  } 
)
                        xbmcplugin.setResolvedUrl( handle = int( sys.argv[1] ), 
succeeded = True, listitem = listitem )
 
-@retry(IndexError, tries=4)
+@retry(IndexError)
 def build_search_directory(url):
        if url == 'search':
                try:
@@ -327,35 +318,44 @@ def ListItem(label, image, url, mode, isFolder, 
infoLabels = False, fanart = Fal
        
 def open_url(url):
        retries = 0
-       while retries < 4:
+       while retries < 11:
+               data = {'content': None, 'error': None}
                try:
-                       time.sleep(5*retries)
+                       if retries != 0:
+                               time.sleep(3)
                        data = get_page(url)
-                       if len(data) > 0 and data != 'error':
-                               return data
-                       else:
-                               retries += 1
-               except:
-                       retries += 1
-       buggalo.addExtraData('url', url)
+                       if data['content'] != None and data['error'] == None:
+                               return data['content']
+               except Exception, e:
+                       data['error'] = str(e)
+               retries += 1
        dialog = xbmcgui.Dialog()
-       ok = dialog.ok(plugin, settings.getLocalizedString( 30023 ) + '\n' + 
settings.getLocalizedString( 30024 ))
-       raise Exception("open_url ERROR")
-       
+       ret = dialog.yesno(plugin, settings.getLocalizedString( 30050 ), 
data['error'], '', settings.getLocalizedString( 30052 ), 
settings.getLocalizedString( 30053 ))
+       if ret == False:
+               open_url(url)
+       else:
+               ok = dialog.ok(plugin, settings.getLocalizedString( 30051 ))
+               buggalo.addExtraData('url', url)
+               buggalo.addExtraData('error', data['error'])
+               raise Exception("open_url ERROR")
+               
 def get_page(url):
+       data = {'content': None, 'error': None}
        try:
                req = urllib2.Request(url)
                req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; 
WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1')
                content = urllib2.urlopen(req)
-               data = content.read()
+               html = content.read()
                content.close()
                try:
-                       return data.decode("utf-8")
+                       data['content'] = html.decode("utf-8")
+                       return data
                except:
+                       data['content'] = html
                        return data
        except Exception, e:
-               buggalo.addExtraData('error', str(e))
-               return 'error'
+               data['error'] = str(e)
+               return data
        
 def setViewMode(id):
        if xbmc.getSkinDir() == "skin.confluence" and 
settings.getSetting('view') == 'true':
@@ -373,7 +373,18 @@ def clean_file(name):
         name=name.replace(old,new)
     return name
 
-params = common.getParameters(sys.argv[2])
+def getParameters(parameterString):
+    commands = {}
+    splitCommands = parameterString[parameterString.find('?') + 1:].split('&')
+    for command in splitCommands:
+        if (len(command) > 0):
+            splitCommand = command.split('=')
+            key = splitCommand[0]
+            value = splitCommand[1]
+            commands[key] = value
+    return commands
+
+params = getParameters(sys.argv[2])
 url = None
 name = None
 mode = None
diff --git a/plugin.video.revision3/resources/language/English/strings.xml 
b/plugin.video.revision3/resources/language/English/strings.xml
index 46742a2..927f645 100644
--- a/plugin.video.revision3/resources/language/English/strings.xml
+++ b/plugin.video.revision3/resources/language/English/strings.xml
@@ -21,6 +21,9 @@
        <string id="30020">Enter search term.</string>
        <string id="30021">Enable default view for Confluence skin</string>
        <string id="30022">Play downloaded shows.</string>
-       <string id="30023">There was a problem connecting to the web 
page.</string>
-       <string id="30024">If this problem persists, please submit the error 
report.</string>
+       <string id="30050">There was a connection error:</string>
+       <string id="30051">If this problem persists, please submit the error 
report.</string>
+       <string id="30052">Retry</string>
+       <string id="30053">Quit</string>
+       <string id="30054">There was an index error.</string>
 </strings>

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=5f26c658ed9b89ca72de3f2836c4fbff0839c364

commit 5f26c658ed9b89ca72de3f2836c4fbff0839c364
Author: beenje <[email protected]>
Date:   Mon Nov 26 22:19:05 2012 +0100

    [plugin.video.pbs] updated to version 2.0.3

diff --git a/plugin.video.pbs/addon.xml b/plugin.video.pbs/addon.xml
index 87892b5..ebfc5e2 100644
--- a/plugin.video.pbs/addon.xml
+++ b/plugin.video.pbs/addon.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.pbs"
        name="PBS"
-       version="2.0.2"
+       version="2.0.3"
        provider-name="stacked">
   <requires>
        <import addon="xbmc.python" version="2.0"/>
        <import addon="script.module.simplejson" version="2.0.10"/>
        <import addon="script.module.buggalo" version="1.1.2"/>
-       <import addon="script.module.parsedom" version="1.2.0"/>
+       <import addon="script.module.parsedom" version="1.3.0"/>
   </requires>
   <extension point="xbmc.python.pluginsource"
             library="default.py">
diff --git a/plugin.video.pbs/changelog.txt b/plugin.video.pbs/changelog.txt
index cff213e..756a949 100644
--- a/plugin.video.pbs/changelog.txt
+++ b/plugin.video.pbs/changelog.txt
@@ -1,4 +1,13 @@
+[B]Version 2.0.3[/B]
+
+- Replaced get_params with getParameters
+- Fixed "No JSON object could be decoded" error
+- Fixed "exceptions.TypeError" error
+- Fixed retry on timeout bug
+- Fixed play back issue with new PBS Kids videos
+
 [B]Version 2.0.2[/B]
+
 - Added separate directory for PBS Kids programs
 - Fixed issue with missing videos on some programs
 - Added function to select the highest video quality available (640x360 SD)
diff --git a/plugin.video.pbs/coveapi/connection.py 
b/plugin.video.pbs/coveapi/connection.py
index d2e6ad2..f72bd7f 100644
--- a/plugin.video.pbs/coveapi/connection.py
+++ b/plugin.video.pbs/coveapi/connection.py
@@ -177,9 +177,10 @@ class Requestor(object):
                        query = '%s?%s' % (query, urllib.urlencode(params))
                
                retries = 0
-               error = None
-               while retries < 4:
-                       time.sleep(5*retries)
+               while retries < 11:
+                       error = None
+                       if retries != 0:
+                               time.sleep(3)
                        try:
                                request = urllib2.Request(query)
                                auth = PBSAuthorization(self.api_app_id, 
self.api_app_secret)
@@ -188,9 +189,11 @@ class Requestor(object):
                        except Exception, e:
                                error = str(e)
                        if error == None:
-                               return json.loads(response.read())
-                       else:
-                               retries += 1
+                               try:
+                                       return 
json.loads(response.read())['results']
+                               except Exception, e:
+                                       error = str(e)
+                       retries += 1
                dialog = xbmcgui.Dialog()
                ret = dialog.yesno(plugin, settings.getLocalizedString( 30050 
), error, '', settings.getLocalizedString( 30052 ), 
settings.getLocalizedString( 30053 ))
                if ret == False:
diff --git a/plugin.video.pbs/default.py b/plugin.video.pbs/default.py
index d86af1f..240c83a 100644
--- a/plugin.video.pbs/default.py
+++ b/plugin.video.pbs/default.py
@@ -5,8 +5,8 @@ from urllib2 import Request, urlopen, URLError, HTTPError
 plugin = "PBS"
 __author__ = 'stacked <[email protected]>'
 __url__ = 'http://code.google.com/p/plugin/'
-__date__ = '11-18-2012'
-__version__ = '2.0.2'
+__date__ = '11-25-2012'
+__version__ = '2.0.3'
 settings = xbmcaddon.Addon( id = 'plugin.video.pbs' )
 buggalo.SUBMIT_URL = 'http://www.xbmc.byethost17.com/submit.php'
 dbg = False
@@ -54,7 +54,7 @@ def build_main_directory():
        
 def build_most_watched_directory():
        url = 'http://video.pbs.org/'
-       data = open_url( url )['content']
+       data = open_url( url )
        list = common.parseDOM(data, "ul", attrs = { "class": "video-list clear 
clearfix" })
        videos = common.parseDOM(list, "span", attrs = { "class": "title clear 
clearfix" })
        img = common.parseDOM(list, "img", ret = "src")
@@ -73,11 +73,11 @@ def build_programs_directory( name, page ):
        checking = True
        while checking:
                start = str( 200 * page )
-               #data = 
cove.programs.filter(fields='associated_images,mediafiles,categories',filter_categories__namespace__name='COVE
 Taxonomy',order_by='title',limit_start=start)['results']
+               #data = 
cove.programs.filter(fields='associated_images,mediafiles,categories',filter_categories__namespace__name='COVE
 Taxonomy',order_by='title',limit_start=start)
                if name != settings.getLocalizedString( 30014 ) and name != 
settings.getLocalizedString( 30000 ):
-                       data = 
cove.programs.filter(fields='associated_images',order_by='title',limit_start=start,filter_title=name)['results']
+                       data = 
cove.programs.filter(fields='associated_images',order_by='title',limit_start=start,filter_title=name)
                else:
-                       data = 
cove.programs.filter(fields='associated_images',order_by='title',limit_start=start)['results']
+                       data = 
cove.programs.filter(fields='associated_images',order_by='title',limit_start=start)
                if ( len(data) ) == 200:
                        page = page + 1
                else:
@@ -115,7 +115,7 @@ def build_programs_directory( name, page ):
        xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
                
 def build_topics_directory():
-       data = 
cove.categories.filter(order_by='name',filter_namespace__name='COVE 
Taxonomy')['results']
+       data = 
cove.categories.filter(order_by='name',filter_namespace__name='COVE Taxonomy')
        item = None
        for results in data:
                if item != results['name']:
@@ -141,7 +141,7 @@ def build_search_keyboard():
 def build_search_directory( url, page ):
        save_url = url.replace( ' ', '%20' )
        url = 'http://www.pbs.org/search/?q=' + url.replace( ' ', '%20' ) + 
'&ss=pbs&mediatype=Video&start=' + str( page * 10 )
-       data = open_url( url )['content']
+       data = open_url( url )
        title_id_thumb = re.compile('<a title="(.*?)" target="" rel="nofollow" 
onclick="EZDATA\.trackGaEvent\(\'search\', \'navigation\', \'external\'\);" 
href="(.*?)"><img src="(.*?)" class="ez-primaryThumb"').findall(data)
        program = re.compile('<p class="ez-metaextra1 
ez-icon">(.*?)</p>').findall(data)
        plot = re.compile('<p class="ez-desc">(.*?)<div 
class="(ez-snippets|ez-itemUrl)">', re.DOTALL).findall(data)
@@ -175,23 +175,23 @@ def find_videos( name, program_id, topic, page ):
        backup_url = None
        if topic == 'True':
                program_id = 'program_id'
-               data = 
cove.videos.filter(fields='associated_images,mediafiles,categories',filter_categories__name=name,order_by='-airdate',filter_availability_status='Available',limit_start=start,exclude_type__in='Chapter,Promotion')['results']
+               data = 
cove.videos.filter(fields='associated_images,mediafiles,categories',filter_categories__name=name,order_by='-airdate',filter_availability_status='Available',limit_start=start,exclude_type__in='Chapter,Promotion')
        elif topic == 'False':
-               data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_tp_media_object_id=program_id,limit_start=start)['results']
+               data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_tp_media_object_id=program_id,limit_start=start)
                print "PBS - Video ID: " + program_id
                if len(data) == 0:
                        dialog = xbmcgui.Dialog()
                        ok = dialog.ok( plugin , settings.getLocalizedString( 
30009 ) + '\n' + 'http://video.pbs.org/video/' + program_id )
                        return
        elif topic == 'search':
-               data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_title__contains=name,order_by='-airdate',filter_availability_status='Available',limit_start=start)['results']
+               data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_title__contains=name,order_by='-airdate',filter_availability_status='Available',limit_start=start)
                if len(data) == 0:
-                       data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_title__contains=string.capwords(name),order_by='-airdate',filter_availability_status='Available',limit_start=start)['results']
+                       data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_title__contains=string.capwords(name),order_by='-airdate',filter_availability_status='Available',limit_start=start)
        else:
                topic = 'topic'
-               data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start,exclude_type__in='Chapter,Promotion')['results']
+               data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start,exclude_type__in='Chapter,Promotion')
                if len(data) <= 1:
-                       data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start)['results']
+                       data = 
cove.videos.filter(fields='associated_images,mediafiles',filter_program=program_id,order_by='-airdate',filter_availability_status='Available',limit_start=start)
        for results in data:
                playable = None
                if results['associated_images'] != None and 
len(results['associated_images']) > 0:
@@ -246,7 +246,7 @@ def play_video( name, url, thumb, plot, studio, starttime, 
backup_url ):
                dialog = xbmcgui.Dialog()
                ok = dialog.ok( plugin , settings.getLocalizedString( 30008 ) )
                return
-       data = open_url( url + '&format=SMIL' )['content']
+       data = open_url( url + '&format=SMIL' )
        print 'PBS - ' + studio + ' - ' + name
        try:
                print data
@@ -277,10 +277,10 @@ def play_video( name, url, thumb, plot, studio, 
starttime, backup_url ):
                        ok = dialog.ok( plugin , settings.getLocalizedString( 
30008 ) )
                        return
        src = re.compile( '<ref src="(.+?)" title="(.+?)" (author)?' ).findall( 
data )[0][0]
-       if src.find('m3u8') != -1:
-               dialog = xbmcgui.Dialog()
-               ok = dialog.ok( plugin , settings.getLocalizedString( 30008 ) )
-               return
+       # if src.find('m3u8') != -1:
+               # dialog = xbmcgui.Dialog()
+               # ok = dialog.ok( plugin , settings.getLocalizedString( 30008 ) 
)
+               # return
        playpath = None
        if base == 'http://ad.doubleclick.net/adx/':
                src_data = src.split( "&lt;break&gt;" )
@@ -319,16 +319,17 @@ def ListItem(label, image, url, isFolder, infoLabels = 
False):
 
 def open_url(url):
        retries = 0
-       while retries < 4:
+       while retries < 11:
+               data = {'content': None, 'error': None}
                try:
-                       time.sleep(5*retries)
+                       if retries != 0:
+                               time.sleep(3)
                        data = get_page(url)
                        if data['content'] != None and data['error'] == None:
-                               return data
-                       else:
-                               retries += 1
-               except:
-                       retries += 1
+                               return data['content']
+               except Exception, e:
+                       data['error'] = str(e)
+               retries += 1
        dialog = xbmcgui.Dialog()
        ret = dialog.yesno(plugin, settings.getLocalizedString( 30050 ), 
data['error'], '', settings.getLocalizedString( 30052 ), 
settings.getLocalizedString( 30053 ))
        if ret == False:
@@ -361,24 +362,18 @@ def setViewMode(id):
        if xbmc.getSkinDir() == "skin.confluence":
                xbmc.executebuiltin("Container.SetViewMode(" + id + ")")
 
-def get_params():
-       param = []
-       paramstring = sys.argv[2]
-       if len( paramstring ) >= 2:
-               params = sys.argv[2]
-               cleanedparams = params.replace( '?', '' )
-               if ( params[len( params ) - 1] == '/' ):
-                       params = params[0:len( params ) - 2]
-               pairsofparams = cleanedparams.split( '&' )
-               param = {}
-               for i in range( len( pairsofparams ) ):
-                       splitparams = {}
-                       splitparams = pairsofparams[i].split( '=' )
-                       if ( len( splitparams ) ) == 2:
-                               param[splitparams[0]] = splitparams[1]          
                        
-       return param
+def getParameters(parameterString):
+    commands = {}
+    splitCommands = parameterString[parameterString.find('?') + 1:].split('&')
+    for command in splitCommands:
+        if (len(command) > 0):
+            splitCommand = command.split('=')
+            key = splitCommand[0]
+            value = splitCommand[1]
+            commands[key] = value
+    return commands
 
-params = get_params()
+params = getParameters(sys.argv[2])
 starttime = None
 mode = None
 name = None

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=0df90f2458d05583b6f81337f54e213912ee7e23

commit 0df90f2458d05583b6f81337f54e213912ee7e23
Author: beenje <[email protected]>
Date:   Mon Nov 26 22:19:00 2012 +0100

    [plugin.video.documentary.net] updated to version 1.1.1

diff --git a/plugin.video.documentary.net/addon.xml 
b/plugin.video.documentary.net/addon.xml
index d662e91..b484b28 100644
--- a/plugin.video.documentary.net/addon.xml
+++ b/plugin.video.documentary.net/addon.xml
@@ -1,10 +1,10 @@
-<addon id="plugin.video.documentary.net" name="Documentary.net" 
provider-name="Jonathan Beluch (jbel)" version="1.1">
+<addon id="plugin.video.documentary.net" name="Documentary.net" 
provider-name="Jonathan Beluch (jbel)" version="1.1.1">
   <requires>
     <import addon="xbmc.python" version="2.0" />
-    <import addon="script.module.beautifulsoup" version="3.0.8" />
-    <import addon="script.module.xbmcswift2" version="1.1.1" />
-    <import addon="plugin.video.youtube" version="3.1.0" />
-    <import addon="plugin.video.vimeo" version="2.3.0" />
+    <import addon="script.module.beautifulsoup" version="3.2.0" />
+    <import addon="script.module.xbmcswift2" version="1.2.0" />
+    <import addon="plugin.video.youtube" version="3.3.0" />
+    <import addon="plugin.video.vimeo" version="2.4.0" />
   </requires>
   <extension library="addon.py" point="xbmc.python.pluginsource">
     <provides>video</provides>
diff --git a/plugin.video.documentary.net/changelog.txt 
b/plugin.video.documentary.net/changelog.txt
index 45bf476..b0096ec 100644
--- a/plugin.video.documentary.net/changelog.txt
+++ b/plugin.video.documentary.net/changelog.txt
@@ -1,2 +1,5 @@
+Version 1.1.1
+* Update addon to reflect API changes.
+
 Version 1.1
 * Initial version
diff --git a/plugin.video.documentary.net/resources/lib/api.py 
b/plugin.video.documentary.net/resources/lib/api.py
index 01a0d0e..7052c39 100644
--- a/plugin.video.documentary.net/resources/lib/api.py
+++ b/plugin.video.documentary.net/resources/lib/api.py
@@ -27,7 +27,13 @@ def _unescape(text):
 
 def _json(url):
     '''Returns a decoded JSON response for the given url'''
-    return json.load(urllib2.urlopen(url))
+    # Their API is returning some weird characters at the beginning of the
+    # response which breaks the JSON parser, so we need to strip them first.
+    conn = urllib2.urlopen(url)
+    raw = conn.read()
+    conn.close()
+    start, end = raw.find('{'), raw.rfind('}') + 1
+    return json.loads(raw[start:end])
 
 
 def get_categories():
@@ -70,7 +76,7 @@ def _build_item(post):
     # Some posts will have a direct link to a video resource such as an ogg
     # or mp4 file. It is found in the custom_fields dict, with a key of
     # either 'ogg' or 'mp4'.
-    try: 
+    try:
         item['video_url'] = (key for key in post['custom_fields']
                               if key in resources).next()
     except StopIteration:

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=a2d75189c3e6518db93991fa85d71eb07a7224e0


http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=c6db61ff0bacf59ce3372f909982bef85b886ce6

commit c6db61ff0bacf59ce3372f909982bef85b886ce6
Author: beenje <[email protected]>
Date:   Mon Nov 26 22:18:34 2012 +0100

    [plugin.image.cheezburger_network] updated to version 0.0.2

diff --git a/plugin.image.cheezburger_network/addon.py 
b/plugin.image.cheezburger_network/addon.py
index 9fba81e..6adcee3 100644
--- a/plugin.image.cheezburger_network/addon.py
+++ b/plugin.image.cheezburger_network/addon.py
@@ -34,6 +34,7 @@ plugin = Plugin(__addon_name__, __addon_id__, __file__)
 

 api = cheez_api.CheezburgerApi(

     developer_key='df1b9bff-ce69-46e7-8732-1035272f3ee7',

+    client_id=2117,

     default_count=int(plugin.get_setting('per_page'))

 )

 

diff --git a/plugin.image.cheezburger_network/addon.xml 
b/plugin.image.cheezburger_network/addon.xml
index e962422..45e1f9c 100644
--- a/plugin.image.cheezburger_network/addon.xml
+++ b/plugin.image.cheezburger_network/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.image.cheezburger_network" name="Cheezburger Network" 
version="0.0.1" provider-name="Tristan Fischer ([email protected])">
+<addon id="plugin.image.cheezburger_network" name="Cheezburger Network" 
version="0.0.2" provider-name="Tristan Fischer ([email protected])">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
     <import addon="script.module.xmltodict" version="0.2.0"/>
@@ -11,7 +11,22 @@
   <extension point="xbmc.addon.metadata">
     <language></language>
     <platform>all</platform>
+    <!-- translation commit: 84113ddafdde2c18eac5fd9b9b8144abff06ccf9 -->
+    <summary lang="be">funny pictures</summary>
+    <summary lang="de">Lustige Bilder</summary>
+    <summary lang="el">Αστείες εικόνες</summary>
     <summary lang="en">funny pictures</summary>
+    <summary lang="lt">Linksmieji paveikslėliai</summary>
+    <summary lang="pl">Śmieszne zdjęcia</summary>
+    <summary lang="pt_BR">Imagens Divertidas</summary>
+    <summary lang="sv">roliga bilder</summary>
+    <description lang="be">Cheezburger: All your funny in one 
place</description>
+    <description lang="de">Cheezburger: Alles Lustige an einem 
Ort</description>
+    <description lang="el">Cheezburger: Όλα τα αστεία σας σε 
ένα μέρος</description>
     <description lang="en">Cheezburger: All your funny in one 
place</description>
+    <description lang="lt">Cheezburger: Visi jūsų Linksmieji paveikslėliai 
vienoje vietoje</description>
+    <description lang="pl">Cheezburger: Wszystkie Twoje śmieszności w jednym 
miejscu</description>
+    <description lang="pt_BR">Cheezburger: Toda sua diversão em um único 
local</description>
+    <description lang="sv">Cheezburger: Alla dina roliga saker på ett 
ställe</description>
   </extension>
 </addon>
diff --git a/plugin.image.cheezburger_network/changelog.txt 
b/plugin.image.cheezburger_network/changelog.txt
index 7029713..a6fc5d1 100644
--- a/plugin.image.cheezburger_network/changelog.txt
+++ b/plugin.image.cheezburger_network/changelog.txt
@@ -1,2 +1,6 @@
-0.0.1 (unreleased)

+0.0.2 (25.11.2012)

+ - fixed Plugin (add clientID)

+ - updated translations

+

+0.0.1 (11.11.2012)

  - Initial Release

diff --git 
a/plugin.image.cheezburger_network/resources/language/English/strings.xml 
b/plugin.image.cheezburger_network/resources/language/English/strings.xml
index 82e76fd..e66c261 100644
--- a/plugin.image.cheezburger_network/resources/language/English/strings.xml
+++ b/plugin.image.cheezburger_network/resources/language/English/strings.xml
@@ -1,10 +1,15 @@
 <?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>
     <!-- Menu entries -->
     <string id="30000">Page</string>
     <string id="30001">Browse by Site</string>
     <string id="30002">Random by Category</string>
     <string id="30003">Get New Random</string>
+
     <!-- Settings -->
     <string id="30100">Images per Site</string>
     <string id="30101">Force Thumbnail-View</string>
diff --git 
a/plugin.image.cheezburger_network/resources/language/German/strings.xml 
b/plugin.image.cheezburger_network/resources/language/German/strings.xml
index 06e5dcd..d8d9446 100644
--- a/plugin.image.cheezburger_network/resources/language/German/strings.xml
+++ b/plugin.image.cheezburger_network/resources/language/German/strings.xml
@@ -1,11 +1,16 @@
 <?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>
     <!-- Menu entries -->
     <string id="30000">Seite</string>
     <string id="30001">Nach Webseite</string>
     <string id="30002">Zufällige nach Kategorie</string>
     <string id="30003">Neuer Zufall</string>
+
     <!-- Settings -->
     <string id="30100">Bilder pro Seite</string>
-    <string id="30101"Thumbnail-View erzwingen</string>
+    <string id="30101">Thumbnail-View erzwingen</string>
 </strings>
diff --git a/plugin.image.cheezburger_network/resources/lib/cheez_api.py 
b/plugin.image.cheezburger_network/resources/lib/cheez_api.py
index 383aaa9..b1fbfe4 100644
--- a/plugin.image.cheezburger_network/resources/lib/cheez_api.py
+++ b/plugin.image.cheezburger_network/resources/lib/cheez_api.py
@@ -33,7 +33,8 @@ class CheezburgerApi():
 

     API_URL = 'http://api.cheezburger.com/xml/'

 

-    def __init__(self, developer_key, default_count=None):

+    def __init__(self, developer_key, client_id, default_count=None):

+        self.client_id = client_id

         self.developer_key = developer_key

         self.default_count = default_count or 25

 

@@ -94,6 +95,7 @@ class CheezburgerApi():
         self.log('opening url: %s' % url)

         req = Request(url)

         req.add_header('DeveloperKey', self.developer_key)

+        req.add_header('ClientID', self.client_id)

         req.add_header('User-Agent', 'Python CheezburgerApi')

         try:

             response = urlopen(req).read()


-----------------------------------------------------------------------

Summary of changes:
 plugin.image.cheezburger_network/addon.py          |    1 +
 plugin.image.cheezburger_network/addon.xml         |   17 +++-
 plugin.image.cheezburger_network/changelog.txt     |    6 +-
 .../resources/language/Afrikaans/strings.xml       |    9 ++
 .../resources/language/Albanian/strings.xml        |    9 ++
 .../resources/language/Arabic/strings.xml          |    9 ++
 .../resources/language/Belarusian/strings.xml      |   16 +++
 .../resources/language/Bulgarian/strings.xml       |    9 ++
 .../resources/language/Catalan/strings.xml         |    9 ++
 .../language/Chinese (Simple)/strings.xml          |    9 ++
 .../language/Chinese (Traditional)/strings.xml     |    9 ++
 .../resources/language/Croatian/strings.xml        |    9 ++
 .../resources/language/Czech/strings.xml           |    9 ++
 .../resources/language/Danish/strings.xml          |    9 ++
 .../resources/language/Dutch/strings.xml           |    9 ++
 .../resources/language/English/strings.xml         |    5 +
 .../resources/language/Estonian/strings.xml        |    9 ++
 .../resources/language/Finnish/strings.xml         |    9 ++
 .../resources/language/French/strings.xml          |    9 ++
 .../resources/language/Galician/strings.xml        |    9 ++
 .../resources/language/German/strings.xml          |    7 +-
 .../resources/language/Greek/strings.xml           |   16 +++
 .../resources/language/Hebrew/strings.xml          |    9 ++
 .../resources/language/Hungarian/strings.xml       |    9 ++
 .../resources/language/Icelandic/strings.xml       |    9 ++
 .../resources/language/Italian/strings.xml         |    9 ++
 .../resources/language/Japanese/strings.xml        |    9 ++
 .../resources/language/Korean/strings.xml          |    9 ++
 .../resources/language/Lithuanian/strings.xml      |   16 +++
 .../resources/language/Norwegian/strings.xml       |    9 ++
 .../resources/language/Polish/strings.xml          |   16 +++
 .../language/Portuguese (Brazil)/strings.xml       |   16 +++
 .../resources/language/Portuguese/strings.xml      |    9 ++
 .../resources/language/Romanian/strings.xml        |    9 ++
 .../resources/language/Russian/strings.xml         |    9 ++
 .../language/Serbian (Cyrillic)/strings.xml        |    9 ++
 .../resources/language/Serbian/strings.xml         |    9 ++
 .../resources/language/Slovak/strings.xml          |    9 ++
 .../resources/language/Slovenian/strings.xml       |    9 ++
 .../language/Spanish (Mexico)/strings.xml          |    9 ++
 .../resources/language/Spanish/strings.xml         |    9 ++
 .../resources/language/Swedish/strings.xml         |   16 +++
 .../resources/language/Thai/strings.xml            |    9 ++
 .../resources/language/Turkish/strings.xml         |    9 ++
 .../resources/language/Ukrainian/strings.xml       |    9 ++
 .../resources/language/Vietnamese/strings.xml      |    9 ++
 .../resources/lib/cheez_api.py                     |    4 +-
 plugin.video.documentary.net/addon.xml             |   10 +-
 plugin.video.documentary.net/changelog.txt         |    3 +
 plugin.video.documentary.net/resources/lib/api.py  |   10 +-
 .../LICENSE.txt                                    |    0
 plugin.video.netzkino_de/addon.py                  |   79 +++++++++++
 plugin.video.netzkino_de/addon.xml                 |   36 +++++
 plugin.video.netzkino_de/changelog.txt             |    6 +
 plugin.video.netzkino_de/icon.png                  |  Bin 0 -> 48282 bytes
 .../resources/__init__.py                          |    0
 .../resources/language/Belarusian/strings.xml      |   13 ++
 .../resources/language/English/strings.xml         |   13 ++
 .../resources/language/French/strings.xml          |   12 ++
 .../resources/language/German/strings.xml          |   13 ++
 .../resources/language/Greek/strings.xml           |   13 ++
 .../resources/language/Korean/strings.xml          |   13 ++
 .../resources/language/Lithuanian/strings.xml      |   13 ++
 .../resources/language/Polish/strings.xml          |   13 ++
 .../language/Portuguese (Brazil)/strings.xml       |   13 ++
 .../resources/language/Spanish/strings.xml         |   13 ++
 .../resources/language/Swedish/strings.xml         |   13 ++
 .../resources/lib}/__init__.py                     |    0
 plugin.video.netzkino_de/resources/lib/api.py      |  142 ++++++++++++++++++++
 plugin.video.netzkino_de/resources/settings.xml    |    5 +
 plugin.video.pbs/addon.xml                         |    4 +-
 plugin.video.pbs/changelog.txt                     |    9 ++
 plugin.video.pbs/coveapi/connection.py             |   15 ++-
 plugin.video.pbs/default.py                        |   81 +++++------
 plugin.video.revision3/addon.xml                   |   10 +-
 plugin.video.revision3/changelog.txt               |   10 ++
 plugin.video.revision3/default.py                  |  125 ++++++++++--------
 .../resources/language/English/strings.xml         |    7 +-
 78 files changed, 1019 insertions(+), 126 deletions(-)
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Afrikaans/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Albanian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Arabic/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Belarusian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Bulgarian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Catalan/strings.xml
 create mode 100644 plugin.image.cheezburger_network/resources/language/Chinese 
(Simple)/strings.xml
 create mode 100644 plugin.image.cheezburger_network/resources/language/Chinese 
(Traditional)/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Croatian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Czech/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Danish/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Dutch/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Estonian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Finnish/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/French/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Galician/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Greek/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Hebrew/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Hungarian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Icelandic/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Italian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Japanese/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Korean/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Lithuanian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Norwegian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Polish/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Portuguese 
(Brazil)/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Portuguese/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Romanian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Russian/strings.xml
 create mode 100644 plugin.image.cheezburger_network/resources/language/Serbian 
(Cyrillic)/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Serbian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Slovak/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Slovenian/strings.xml
 create mode 100644 plugin.image.cheezburger_network/resources/language/Spanish 
(Mexico)/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Spanish/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Swedish/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Thai/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Turkish/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Ukrainian/strings.xml
 create mode 100644 
plugin.image.cheezburger_network/resources/language/Vietnamese/strings.xml
 copy {plugin.audio.hvsc => plugin.video.netzkino_de}/LICENSE.txt (100%)
 create mode 100644 plugin.video.netzkino_de/addon.py
 create mode 100644 plugin.video.netzkino_de/addon.xml
 create mode 100644 plugin.video.netzkino_de/changelog.txt
 create mode 100644 plugin.video.netzkino_de/icon.png
 copy {plugin.audio.radio_de => plugin.video.netzkino_de}/resources/__init__.py 
(100%)
 create mode 100644 
plugin.video.netzkino_de/resources/language/Belarusian/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/English/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/French/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/German/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/Greek/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/Korean/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/Lithuanian/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/Polish/strings.xml
 create mode 100644 plugin.video.netzkino_de/resources/language/Portuguese 
(Brazil)/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/Spanish/strings.xml
 create mode 100644 
plugin.video.netzkino_de/resources/language/Swedish/strings.xml
 copy {plugin.audio.radio_de/resources => 
plugin.video.netzkino_de/resources/lib}/__init__.py (100%)
 create mode 100644 plugin.video.netzkino_de/resources/lib/api.py
 create mode 100644 plugin.video.netzkino_de/resources/settings.xml


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to