The branch, eden has been updated
       via  4cb5349c24de822d418ed1210587f21de9d28d5c (commit)
       via  c43761a2d95491974c78b63430aa419b90e0f230 (commit)
       via  83f3ccf0d6a3005b9404fb72963b94be1361337b (commit)
       via  698476394cf765ee6836f20678282d2912f6658e (commit)
      from  86e09c257c8faf8068674de19141b12b64b2a7dc (commit)

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

commit 4cb5349c24de822d418ed1210587f21de9d28d5c
Author: spiff <[email protected]>
Date:   Mon Oct 8 09:16:32 2012 +0200

    [plugin.video.tmz] updated to version 2.0.5

diff --git a/plugin.video.tmz/addon.xml b/plugin.video.tmz/addon.xml
index 6d7a36e..db54458 100644
--- a/plugin.video.tmz/addon.xml
+++ b/plugin.video.tmz/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.tmz"
        name="TMZ"
-       version="2.0.4"
+       version="2.0.5"
        provider-name="stacked">
   <requires>
        <import addon="xbmc.python" version="2.0"/>
diff --git a/plugin.video.tmz/changelog.txt b/plugin.video.tmz/changelog.txt
index b00c860..44bbd79 100644
--- a/plugin.video.tmz/changelog.txt
+++ b/plugin.video.tmz/changelog.txt
@@ -1,3 +1,6 @@
+[B]Version 2.0.5[/B]
+- Added retry function for HTTP and Index errors
+
 [B]Version 2.0.4[/B]
 
 - Updated addon to support recent website changes.
diff --git a/plugin.video.tmz/default.py b/plugin.video.tmz/default.py
index ae003c8..d0ad812 100644
--- a/plugin.video.tmz/default.py
+++ b/plugin.video.tmz/default.py
@@ -1,35 +1,80 @@
 
 import xbmc, xbmcaddon, xbmcgui, xbmcplugin, urllib2, urllib, re, string, sys, 
os, traceback, time, datetime, buggalo
 
-__plugin__ = 'TMZ'
+plugin = 'TMZ'
 __author__ = 'stacked <[email protected]>'
 __url__ = 'http://code.google.com/p/plugin/'
-__date__ = '09-11-2012'
-__version__ = '2.0.4'
-__settings__ = xbmcaddon.Addon( id = 'plugin.video.tmz' )
-icon = os.path.join( __settings__.getAddonInfo( 'path' ), 'icon.png' )
+__date__ = '10-07-2012'
+__version__ = '2.0.5'
+settings = xbmcaddon.Addon( id = 'plugin.video.tmz' )
+icon = os.path.join( settings.getAddonInfo( 'path' ), 'icon.png' )
 buggalo.SUBMIT_URL = 'http://www.xbmc.byethost17.com/submit.php'
 
-def open_url(url):
-       req = urllib2.Request(url)
-       req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; 
rv:12.0) Gecko/20100101 Firefox/12.0')
-       content = urllib2.urlopen(req)
-       data = content.read()
-       content.close()
-       return data
+def retry(ExceptionToCheck, tries=4, delay=5, 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 deco_retry(f):
+        def f_retry(*args, **kwargs):
+            mtries, mdelay = tries, delay
+            try_one_last_time = True
+            while mtries >= 0:
+                               if mtries == 0:
+                                       dialog = xbmcgui.Dialog()
+                                       ret = dialog.yesno(plugin, 
settings.getLocalizedString( 30054 ), nolabel = settings.getLocalizedString( 
30052 ), yeslabel = 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 deco_retry
 
 def clean( name ):
        remove = [ ('&amp;','&'), ('&quot;','"'), ('&#39;','\''), 
('u2013','-'), ('u201c','\"'), ('u201d','\"'), ('u2019','\''), ('u2026','...') ]
        for trash, crap in remove:
                name = name.replace( trash, crap )
        return name
-       
+
+@retry(IndexError)     
 def build_main_directory():
        main=[
-               ( __settings__.getLocalizedString( 30000 ) ),
-               ( __settings__.getLocalizedString( 30001 ) ),
-               ( __settings__.getLocalizedString( 30002 ) ),
-               ( __settings__.getLocalizedString( 30003 ) )
+               ( settings.getLocalizedString( 30000 ) ),
+               ( settings.getLocalizedString( 30001 ) ),
+               ( settings.getLocalizedString( 30002 ) ),
+               ( settings.getLocalizedString( 30003 ) )
                ]
        for name in main:
                listitem = xbmcgui.ListItem( label = name, iconImage = icon, 
thumbnailImage = icon )
@@ -38,8 +83,9 @@ def build_main_directory():
        xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod = 
xbmcplugin.SORT_METHOD_NONE )
        xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
 
+@retry(IndexError)
 def build_video_directory( name ):
-       data = open_url( 'http://www.tmz.com/videos/' )
+       data = open_url( 'http://www.tmz.com/videos/' )['content']
        content = re.compile('{ name: \'' + name.upper() + '\',( )?\n         
allInitialJson: \[(.+?)\],\n', re.DOTALL).findall( data )
        match = re.compile('\n{\n  (.+?)\n}', re.DOTALL).findall( content[0][1] 
)
        for videos in match:
@@ -49,7 +95,7 @@ def build_video_directory( name ):
                videoUrl = epsdata[0][3].replace("\\", "")
                thumb = epsdata[0][5].replace("\\", "") + 
'/width/490/height/266/type/3'
                if videoUrl.find('http://cdnbakmi.kaltura.com') == -1:
-                       if __settings__.getSetting("quality") == 
__settings__.getLocalizedString( 30005 ):
+                       if settings.getSetting("quality") == 
settings.getLocalizedString( 30005 ):
                                url = 'http://cdnapi.kaltura.com/p/' + 
thumb.split('/')[4] + '/sp/' + thumb.split('/')[6] + '/playManifest/entryId/0_' 
+ videoUrl.split('_')[1]
                        else:
                                url = 'http://cdnapi.kaltura.com/p/' + 
thumb.split('/')[4] + '/sp/' + thumb.split('/')[6] + '/playManifest/entryId/0_' 
+ videoUrl.split('_')[1] + '/flavorId/0_' + videoUrl.split('_')[3]
@@ -60,13 +106,54 @@ def build_video_directory( name ):
                        ok = xbmcplugin.addDirectoryItem( handle = int( 
sys.argv[1] ), url = u, listitem = listitem, isFolder = False )
        xbmcplugin.addSortMethod( handle = int(sys.argv[1]), sortMethod = 
xbmcplugin.SORT_METHOD_NONE )
        xbmcplugin.endOfDirectory( int( sys.argv[1] ) )
-               
+
+@retry(IndexError)     
 def play_video( name, url, thumb, studio ):
-       data = open_url( url )
+       data = open_url( url )['content']
        url = re.compile('<media url=\"(.+?)\"').findall(data)[0]
        listitem = xbmcgui.ListItem( label = name, iconImage = 
"DefaultVideo.png", thumbnailImage = thumb, path = url )
        listitem.setInfo( type="Video", infoLabels={ "Title": name , 
"Director": "TMZ", "Studio": studio } )
        xbmcplugin.setResolvedUrl( handle = int( sys.argv[1] ), succeeded = 
True, listitem = listitem )
+       
+def open_url(url):
+       retries = 0
+       while retries < 4:
+               try:
+                       time.sleep(5*retries)
+                       data = get_page(url)
+                       if data['content'] != None and data['error'] == None:
+                               return data
+                       else:
+                               retries += 1
+               except:
+                       retries += 1
+       dialog = xbmcgui.Dialog()
+       ret = dialog.yesno(plugin, settings.getLocalizedString( 30050 ), 
data['error'], nolabel = settings.getLocalizedString( 30052 ), yeslabel = 
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)
+               html = content.read()
+               content.close()
+               try:
+                       data['content'] = html.decode("utf-8")
+                       return data
+               except:
+                       data['content'] = html
+                       return data
+       except Exception, e:
+               data['error'] = str(e)
+               return data
 
 def get_params():
        param = []
diff --git a/plugin.video.tmz/resources/language/English/strings.xml 
b/plugin.video.tmz/resources/language/English/strings.xml
index a59bf55..4460cd1 100644
--- a/plugin.video.tmz/resources/language/English/strings.xml
+++ b/plugin.video.tmz/resources/language/English/strings.xml
@@ -7,4 +7,9 @@
        <string id="30004">Video quality (Requires restart)</string>
        <string id="30005">Low</string>
        <string id="30006">High</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=c43761a2d95491974c78b63430aa419b90e0f230

commit c43761a2d95491974c78b63430aa419b90e0f230
Author: spiff <[email protected]>
Date:   Mon Oct 8 09:14:16 2012 +0200

    [plugin.video.collegehumor] updated to version 2.0.0

diff --git a/plugin.video.collegehumor/addon.py 
b/plugin.video.collegehumor/addon.py
index 94445a1..ad2363d 100644
--- a/plugin.video.collegehumor/addon.py
+++ b/plugin.video.collegehumor/addon.py
@@ -7,37 +7,60 @@ plugin = Plugin('CollegeHumor', 'plugin.video.collegehumor', 
__file__)
 @plugin.route('/', default=True)
 def show_categories():
     categories = scraper.getCategories()
-    items = [{'label': category['title'],
-              'url': plugin.url_for('show_videos', category=category['link'],
-                                    page='1')} for category in categories]
+    items = [{
+        'label': category['title'],
+        'url': plugin.url_for(
+            'show_videos',
+            category=category['link'],
+            page='1',
+        ),
+    } for category in categories]
     return plugin.add_items(items)
 
 
 @plugin.route('/category/<category>/<page>/')
 def show_videos(category, page):
     videos, has_next_page = scraper.getVideos(category, page)
-    items = [{'label': video['title'],
-              'thumbnail': video['image'],
-              'info': {'originaltitle': video['title'],
-                       'tagline': video['tagline']},
-              'url': plugin.url_for('watch_video', url=video['link']),
-              'is_folder': False,
-              'is_playable': True,
-             } for video in videos]
+    items = [{
+        'label': video['title'],
+        'thumbnail': video['image'],
+        'info': {
+            'originaltitle': video['title'],
+            #'tagline': video['tagline']
+        },
+        'url': plugin.url_for(
+            'watch_video',
+            url=video['link']
+        ),
+        'is_folder': False,
+        'is_playable': True,
+    } for video in videos]
     if has_next_page:
         next_page = str(int(page) + 1)
-        items.append({'label': '>> %s %s >>' % (plugin.get_string(30001),
-                                                next_page),
-                      'url': plugin.url_for('show_videos',
-                                            category=category,
-                                            page=next_page)})
+        items.append({
+            'label': '>> %s %s >>' % (
+                plugin.get_string(30001),
+                next_page
+            ),
+            'url': plugin.url_for(
+                'show_videos',
+                category=category,
+                page=next_page
+            ),
+        })
     if int(page) > 1:
         prev_page = str(int(page) - 1)
-        items.insert(0, {'label': '<< %s %s <<' % (plugin.get_string(30001),
-                                                   prev_page),
-                         'url': plugin.url_for('show_videos',
-                                               category=category,
-                                               page=prev_page)})
+        items.insert(0, {
+            'label': '<< %s %s <<' % (
+                plugin.get_string(30001),
+                prev_page
+            ),
+            'url': plugin.url_for(
+                'show_videos',
+                category=category,
+                page=prev_page
+            ),
+        })
     return plugin.add_items(items)
 
 
diff --git a/plugin.video.collegehumor/addon.xml 
b/plugin.video.collegehumor/addon.xml
index 447cc5d..972dc7c 100644
--- a/plugin.video.collegehumor/addon.xml
+++ b/plugin.video.collegehumor/addon.xml
@@ -1,14 +1,16 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.collegehumor" name="CollegeHumor" version="1.0.2" 
provider-name="Tristan Fischer (sphere)">
+<addon id="plugin.video.collegehumor" name="CollegeHumor" version="2.0.0" 
provider-name="Tristan Fischer ([email protected])">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
     <import addon="script.module.beautifulsoup" version="3.0.8"/>
     <import addon="script.module.xbmcswift" version="0.2.0"/>
+    <import addon="plugin.video.youtube" version="3.1.0" />
   </requires>
   <extension point="xbmc.python.pluginsource" library="addon.py">
     <provides>video</provides>
   </extension>
   <extension point="xbmc.addon.metadata">
+    <language>en</language>
     <platform>all</platform>
     <summary lang="en">Watch videos from www.collegehumor.com</summary>
     <description lang="en">CollegeHumor finds funny videos from all over the 
internet plus some original videos that they made themself.</description>
diff --git a/plugin.video.collegehumor/changelog.txt 
b/plugin.video.collegehumor/changelog.txt
index bc3e593..ebd4d5f 100644
--- a/plugin.video.collegehumor/changelog.txt
+++ b/plugin.video.collegehumor/changelog.txt
@@ -1,3 +1,8 @@
+2.0.0
+ Rewrite of most code
+ Fix all playback URLs
+ New Icon
+
 1.0.2
  changes for eden
 
diff --git a/plugin.video.collegehumor/icon.png 
b/plugin.video.collegehumor/icon.png
index 3b9911c..4ffc5d6 100644
Binary files a/plugin.video.collegehumor/icon.png and 
b/plugin.video.collegehumor/icon.png differ
diff --git a/plugin.video.collegehumor/resources/lib/scraper.py 
b/plugin.video.collegehumor/resources/lib/scraper.py
index 5c6b7bc..904b668 100644
--- a/plugin.video.collegehumor/resources/lib/scraper.py
+++ b/plugin.video.collegehumor/resources/lib/scraper.py
@@ -3,54 +3,114 @@ import re
 from BeautifulSoup import BeautifulSoup
 from urllib import urlencode
 
-IPAD_USERAGENT = ('Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; '
-                  'en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Versi'
-                  'on/4.0.4 Mobile/7B314 Safari/531.21.10')
+IPAD_USERAGENT = (
+    'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) '
+    'AppleWebKit/531.21.10 (KHTML, like Gecko) '
+    'Version/4.0.4 Mobile/7B334b Safari/531.21.10'
+)
 
-MAIN_URL = 'http://m.collegehumor.com/'
+MOBILE_URL = 'http://m.collegehumor.com/'
+MAIN_URL = 'http://www.collegehumor.com/'
 
 
 def getCategories():
-    url = MAIN_URL + 'videos/browse'
+    url = MOBILE_URL + 'videos/browse'
     tree = __getTree(url)
-    categories = list()
-    for element in tree.find('ul', {'data-role': 'listview'}).findAll('a'):
-        categories.append({'title': element.string,
-                           'link': element['href'][1:]})
+    categories = []
+    for a in tree.find('ul', {'data-role': 'listview'}).findAll('a'):
+        if 'playlist' in a['href']:
+            print 'Skipping Playlist'
+            continue
+        categories.append({
+            'title': a.string,
+            'link': a['href'][1:]
+        })
     return categories
 
 
 def getVideos(category, page=1):
     post = {'render_mode': 'ajax'}
-    url = MAIN_URL + '%s/page:%s' % (category, page)
+    url = MOBILE_URL + '%s/page:%s' % (category, page)
     tree = __getTree(url, post)
-    videos = list()
-    elements = tree.find('ul', {'data-role': 'listview'}).findAll('li')
-    for element in elements:
-        if element.a and re.search(re.compile('/video/'), element.a['href']):
-            videos.append({'title': element.a.h3.string,
-                           'link': element.a['href'][1:],
-                           'image': element.a.img['src'],
-                           'tagline': element.p.string})
-    has_next_page = (len(elements) >= 20)
+    videos = []
+    elements = tree.find('ul', {'data-role': 'listview'}).findAll('a')
+    for a in elements:
+        if 'playlist' in a['href']:
+            print 'Skipping Playlist'
+            continue
+        videos.append({
+            'title': a.h3.string,
+            'link': a['href'][1:],
+            'image': a.img['src']
+        })
+    has_next_page = len(elements) == 24
     return videos, has_next_page
 
 
 def getVideoFile(link):
     url = MAIN_URL + link
     tree = __getTree(url)
-    return tree.find('video')['src']
+
+    print 'Simple, we used IPAD UA - so maybe we have luck'
+    video_object = tree.find('video')
+    if video_object and video_object.get('src'):
+        return video_object['src']
+
+    print 'No luck. Ok, maybe it\'s youtube?'
+    re_youtube = re.compile('http://www.youtube.com/embed/(\w+)')
+    youtube_iframe = tree.find('iframe', {'src': re_youtube})
+    if youtube_iframe:
+        yotube_id = re.search(re_youtube, youtube_iframe['src']).group(1)
+        return ('plugin://plugin.video.youtube/'
+                '?action=play_video&videoid=%s' % yotube_id)
+
+    print 'Still no luck. But there could also be some ugly JS HTML5'
+    re_flv = re.compile("flvSourceUrl: '([^']+)',")
+    js_code = tree.find('script', {'type': 'text/javascript'},
+                        text=re_flv)
+    if js_code:
+        flv_url = re.search(re_flv, js_code).group(1)
+        return flv_url
+
+    print 'Nope. We don\'t like multiple HTTP request, but...'
+    url = MAIN_URL + 'moogaloop/video/%s' % link.split('/')[1]
+    moogaloop_tree = __getTree(url)
+    video_file = moogaloop_tree.video.file.string
+    if 'manifest' not in video_file:
+        return video_file
+
+    print 'Noooo. OK, now we like HTTP requests, take another one!'
+    re_content = re.compile("content: '([^']+)',")
+    re_video_id = re.compile("videoId: '([^']+)',")
+    re_video_url = re.compile('"adUrl":"([^"]+)"')
+    js_code = tree.find('script', {'type': 'text/javascript'},
+                        text=re_content)
+    if js_code:
+        content = re.search(re_content, js_code).group(1)
+        video_id = re.search(re_video_id, js_code).group(1)
+        url = (
+            'http://ads.rnmd.net/getAds?delivery=jsonp&adType=videosrc'
+            '&adDiv=%s&url=%s&appId=college_humor_web&v=1'
+        ) % (video_id, content)
+        tree = __getTree(url)
+        json_code = tree.contents[0]
+        video_url = re.search(re_video_url, json_code)
+        if video_url:
+            return video_url.group(1).replace('\/', '/')
+
+    print 'Game Over - nothing to see here, move along...'
+    raise NotImplementedError
 
 
 def __getTree(url, data_dict=None):
+    print 'Opening url: %s' % url
     if data_dict:
         post_data = urlencode(data_dict)
     else:
         post_data = ' '
     req = urllib2.Request(url, post_data)
     req.add_header('User-Agent', IPAD_USERAGENT)
-    req.add_header('Accept', ('text/html,application/xhtml+xml,'
-                              'application/xml;q=0.9,*/*;q=0.8'))
+    req.add_header('X-Requested-With', 'XMLHttpRequest')
     response = urllib2.urlopen(req).read()
     tree = BeautifulSoup(response, convertEntities=BeautifulSoup.HTML_ENTITIES)
     return tree

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


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

commit 698476394cf765ee6836f20678282d2912f6658e
Author: spiff <[email protected]>
Date:   Mon Oct 8 09:12:03 2012 +0200

    [plugin.image.mypicsdb] updated to version 1.1.1

diff --git a/plugin.image.mypicsdb/addon.xml b/plugin.image.mypicsdb/addon.xml
index c01b9de..df937e2 100644
--- a/plugin.image.mypicsdb/addon.xml
+++ b/plugin.image.mypicsdb/addon.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon
-  id="plugin.image.mypicsdb" version="1.1.0" name="My Pictures Database" 
provider-name="Alexsolex, Xycl, MikeBZH44">
+  id="plugin.image.mypicsdb" version="1.1.1" name="My Pictures Database" 
provider-name="Alexsolex, Xycl, MikeBZH44">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
     <import addon="script.module.dialogaddonscan" version="1.1.0"/>
diff --git a/plugin.image.mypicsdb/changelog.txt 
b/plugin.image.mypicsdb/changelog.txt
index a4b5fb3..e90d0c3 100644
--- a/plugin.image.mypicsdb/changelog.txt
+++ b/plugin.image.mypicsdb/changelog.txt
@@ -1,3 +1,6 @@
+2012/10/06 --> v 1.1.1
+Fix:    Two UTF-8 / Unicode conversion errors fixed.
+
 2012/09/10 --> v 1.1.0
 Update: Filter wizard now has a "not" function. 
         Green checkbox -> picture must contain the tag
diff --git a/plugin.image.mypicsdb/default.py b/plugin.image.mypicsdb/default.py
index 90c94dd..c5e3f06 100644
--- a/plugin.image.mypicsdb/default.py
+++ b/plugin.image.mypicsdb/default.py
@@ -858,7 +858,7 @@ class Main:
                     if 
dialog.yesno(__language__(30000),__language__(30206)):#do a scan now ?
                         xbmc.executebuiltin( "RunScript(%s,%s--rootpath=%s)"%( 
join( home, "scanpath.py"),
                                                                                
recursive and "-r, " or "",
-                                                                               
quote_plus(newroot.encode('utf-8'))
+                                                                               
quote_plus(newroot)
                                                                               )
                                            )
 
@@ -966,7 +966,7 @@ class Main:
 
             #Show excluded folders
             for path,recursive,update in excludefolders:
-                self.addAction(name      = "[COLOR=FFFF0000][B][ - 
][/B][/COLOR] "+path.decode("utf8"),
+                self.addAction(name      = "[COLOR=FFFF0000][B][ - 
][/B][/COLOR] "+path,
                             params    = 
[("do","rootclic"),("rootpath",path),("viewmode","view"),("exclude","1")],#paramètres
                             action    = "rootfolders",#action
                             iconimage = join(PIC_PATH,"settings.png"),#icone

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

Summary of changes:
 plugin.image.mypicsdb/addon.xml                    |    2 +-
 plugin.image.mypicsdb/changelog.txt                |    3 +
 plugin.image.mypicsdb/default.py                   |    4 +-
 plugin.video.collegehumor/addon.py                 |   65 ++++++---
 plugin.video.collegehumor/addon.xml                |    4 +-
 plugin.video.collegehumor/changelog.txt            |    5 +
 plugin.video.collegehumor/icon.png                 |  Bin 35964 -> 84361 bytes
 plugin.video.collegehumor/resources/lib/scraper.py |  104 +++++++++++---
 .../LICENSE.txt                                    |    2 +-
 plugin.video.offene_kanaele/addon.py               |  148 ++++++++++++++++++++
 plugin.video.offene_kanaele/addon.xml              |   19 +++
 plugin.video.offene_kanaele/icon.png               |  Bin 0 -> 13729 bytes
 .../resources/__init__.py                          |    0
 .../resources/language/English/strings.xml         |    6 +
 .../resources/language/German/strings.xml          |    6 +
 .../resources/lib}/__init__.py                     |    0
 plugin.video.tmz/addon.xml                         |    2 +-
 plugin.video.tmz/changelog.txt                     |    3 +
 plugin.video.tmz/default.py                        |  129 ++++++++++++++---
 .../resources/language/English/strings.xml         |    5 +
 20 files changed, 437 insertions(+), 70 deletions(-)
 copy {plugin.video.nrk => plugin.video.offene_kanaele}/LICENSE.txt (100%)
 create mode 100644 plugin.video.offene_kanaele/addon.py
 create mode 100644 plugin.video.offene_kanaele/addon.xml
 create mode 100644 plugin.video.offene_kanaele/icon.png
 copy {plugin.audio.radio_de => 
plugin.video.offene_kanaele}/resources/__init__.py (100%)
 create mode 100644 
plugin.video.offene_kanaele/resources/language/English/strings.xml
 create mode 100644 
plugin.video.offene_kanaele/resources/language/German/strings.xml
 copy {plugin.audio.radio_de/resources => 
plugin.video.offene_kanaele/resources/lib}/__init__.py (100%)


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to