The branch, frodo has been updated
       via  4bd84d8f81d5e2e5598dd95958247dc2843cd5aa (commit)
      from  1a56f06b9fa64e077b712c493a6fc05344b74cea (commit)

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

commit 4bd84d8f81d5e2e5598dd95958247dc2843cd5aa
Author: sphere <[email protected]>
Date:   Tue Apr 29 10:12:15 2014 +0200

    [script.module.xbmcutil] updated to version 2.0.4

diff --git a/script.module.xbmcutil/addon.xml b/script.module.xbmcutil/addon.xml
index 1355a25..98ff9b3 100644
--- a/script.module.xbmcutil/addon.xml
+++ b/script.module.xbmcutil/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.module.xbmcutil" name="XBMC Utility Pack" 
provider-name="willforde" version="2.0.2">
+<addon id="script.module.xbmcutil" name="XBMC Utility Pack" 
provider-name="willforde" version="2.0.4">
        <requires>
                <import addon="xbmc.python" version="2.1.0"/>
                <import addon="script.module.parsedom" version="2.5.1"/>
diff --git a/script.module.xbmcutil/changelog.txt 
b/script.module.xbmcutil/changelog.txt
index 58200e3..d17ebd3 100644
--- a/script.module.xbmcutil/changelog.txt
+++ b/script.module.xbmcutil/changelog.txt
@@ -1,3 +1,13 @@
+[B]Version 2.0.4[/B]
+- Changed the Video Context menu to not replace items
+- Fixed bug with XBMC unexpectedly returning unicode instead of a string
+- General unicode fixes
+
+[B]Version 2.0.3[/B]
+- Added getLabel method to custom listitem that returns unicode Label
+- Fixed very small bug with youtube channel video scraper sudio name
+- Fixed small bug where addons whould crash if profile path don't exist
+
 [B]Version 2.0.2[/B]
 - Added Full Unicode Support
 - Added Search with Save Searches Support
diff --git a/script.module.xbmcutil/lib/xbmcutil/__init__.py 
b/script.module.xbmcutil/lib/xbmcutil/__init__.py
index f8b13ed..ee5e7b0 100644
--- a/script.module.xbmcutil/lib/xbmcutil/__init__.py
+++ b/script.module.xbmcutil/lib/xbmcutil/__init__.py
@@ -61,31 +61,31 @@ class Addon(object):
                # Shortcuts
                self.openSettings = self._addonData.openSettings
                self.setSetting = self._addonData.setSetting
-               self.getstr = self.getLocalizedString
+               self.getuni = self.getLocalizedString
        
        def getLocalizedString(self, id):
-               """ Return localized string for selected id """
-               if   id >= 30000 and id <= 30899: return 
self._addonData.getLocalizedString(id).decode("utf8")
-               elif id >= 32900 and id <= 32999: return 
self._scriptData.getLocalizedString(id).decode("utf8")
+               """ Return localized unicode string for selected id """
+               if   id >= 30000 and id <= 30899: return 
self._addonData.getLocalizedString(id)
+               elif id >= 32900 and id <= 32999: return 
self._scriptData.getLocalizedString(id)
                else: return self.xbmc.getLocalizedString(id)
        
-       def getuni(self, id):
-               """ Return localized unicode string for selected id """
-               return self.getLocalizedString(id).decode("utf8")
+       def getstr(self, id):
+               """ Return localized string for selected id """
+               return self.getLocalizedString(id).encode("utf8")
        
        def getAddonSetting(self, id, key):
                """ Return setting for selected addon """
                try: addonData = self._addonObj(id)
                except: return u""
-               else: return addonData.getSetting(key).decode("utf8")
+               else: return addonData.getSetting(key)
        
        def getQuality(self):
                """ Return unicode for quality setting """
-               return self._addonData.getSetting("quality").decode("utf8")
+               return self._addonData.getSetting("quality")
        
        def getSetting(self, id):
                """ Return unicode for setting """
-               return self._addonData.getSetting(id).decode("utf8")
+               return self._addonData.getSetting(id)
        
        def getSettingInt(self, id):
                """ Return Integer for settings """
@@ -93,7 +93,7 @@ class Addon(object):
        
        def getSettingBool(self, id):
                """ Return boolean for setting """
-               return self._addonData.getSetting(id) == "true"
+               return self._addonData.getSetting(id) == u"true"
        
        def translatePath(self, path):
                """ Return translated special paths as unicode """
@@ -151,6 +151,7 @@ class Addon(object):
                if self._profile: return self._profile
                else:
                        self._profile = 
self.translatePath(self._addonData.getAddonInfo("profile"))
+                       if not self.os.path.exists(self._profile): 
self.os.makedirs(self._profile)
                        return self._profile
        
        def getLibPath(self):
diff --git a/script.module.xbmcutil/lib/xbmcutil/listitem.py 
b/script.module.xbmcutil/lib/xbmcutil/listitem.py
index d6a395f..fe2b3b2 100644
--- a/script.module.xbmcutil/lib/xbmcutil/listitem.py
+++ b/script.module.xbmcutil/lib/xbmcutil/listitem.py
@@ -40,9 +40,6 @@ class Playlist(plugin.xbmc.PlayList):
                # Initiate Overriding, in obj Classs Method
                super(Playlist, self).__init__()
                self.clear()
-               
-               # Create Dummy Item to fix XBMC Playlist Bug
-               self.add("V V V V V V V V V V V V V")
        
        def add_iter(self, listitems):
                """ Accepts a iterable of (url, listitem, isfolder) """
@@ -94,16 +91,13 @@ class ListItem(plugin.xbmcgui.ListItem):
        _fanartImage = _plugin.getFanartImage()
        _imageGlobal = _plugin.getImageLocation(local=False)
        _imageLocal = _plugin.getImageLocation(local=True)
-       _stringDownload = _plugin.getstr(33003)
-       _strRelated = _plugin.getstr(32966)
-       _staticMenu = ([(_plugin.getstr(20159), "XBMC.Action(Info)"),
-                                       (_plugin.getstr(1045), 
"XBMC.RunPlugin(%s?action=system.opensettings)" % _handleZero),
-                                       (_plugin.getstr(13347), 
"XBMC.Action(Queue)"),
-                                       (_plugin.getstr(32962), 
"XBMC.ActivateWindow(videoplaylist)"),
-                                       (_plugin.getstr(22083), 
"XBMC.RunPlugin(%splayall=true)" % _handelThree),
-                                       (_plugin.getstr(184), 
"XBMC.Container.Update(%srefresh=true)" % _handelThree)],
-                                  [(_plugin.getstr(1045), 
"XBMC.RunPlugin(%s?action=system.opensettings)" % _handleZero),
-                                       (_plugin.getstr(184), 
"XBMC.Container.Update(%srefresh=true)" % _handelThree)])
+       _stringDownload = _plugin.getuni(33003)
+       _strRelated = _plugin.getuni(32966)
+       _staticMenu = ([(_plugin.getuni(20159), "XBMC.Action(Info)"),
+                                       (_plugin.getuni(13347), 
"XBMC.Action(Queue)"),
+                                       (_plugin.getuni(184), 
"XBMC.Container.Update(%srefresh=true)" % _handelThree)],
+                                  [(_plugin.getuni(1045), 
"XBMC.RunPlugin(%s?action=system.opensettings)" % _handleZero),
+                                       (_plugin.getuni(184), 
"XBMC.Container.Update(%srefresh=true)" % _handelThree)])
        
        def __init__(self):
                """ Initialize XBMC ListItem Object """
@@ -130,6 +124,10 @@ class ListItem(plugin.xbmcgui.ListItem):
                self.infoLabels["title"] = label
                self._selfObject.setLabel(self, label)
        
+       def getLabel(self):
+               """ Returns the listitem label as a unicode string"""
+               return self._selfObject.getLabel(self).decode("utf8")
+       
        def setIconImage(self, icon=None):
                """ Sets ListItem's Icon Image
                        
@@ -249,8 +247,8 @@ class ListItem(plugin.xbmcgui.ListItem):
        def addContextMenuItem(self, label, command, **params):
                """ Adds context menu item to XBMC
                        
-                       label: string - Name of contect item
-                       command: string - XBMC build in function
+                       label: string or unicode - Name of contect item
+                       command: string or unicode - XBMC build in function
                        params: dict - Command options
                """
                if params: command += "(%s?%s)" % (self._handleZero, 
self._urlencode(params))
@@ -288,7 +286,7 @@ class ListItem(plugin.xbmcgui.ListItem):
                        self.path = self.getPath()
                        # Add context menu items
                        if not self.isFolder and not "live" in self.urlParams: 
self.addContextMenuItem(self._stringDownload, 
"XBMC.RunPlugin(%s&download=true)" % (self.path))
-                       self.addContextMenuItems(self.contextMenu + 
self._staticMenu[self.isFolder], replaceItems=True)
+                       self.addContextMenuItems(self.contextMenu + 
self._staticMenu[self.isFolder], replaceItems=not isPlayable)
                        # Call Decorated Function ad return it response
                        return function(self)
                return wrapped
@@ -442,14 +440,7 @@ class VirtualFS(object):
        
        def add_dir_items(self, listitems):
                """ Add Directory List Items to XBMC """
-               if "playall" in self._plugin:
-                       # Create a Playlist of all Items
-                       playlist = Playlist(1)
-                       playlist.add_iter(listitems)
-                       self._plugin.xbmc.Player().play(playlist)
-               
-               # Else List all Items
-               else: 
self._plugin.xbmcplugin.addDirectoryItems(self._handleOne, listitems, 
len(listitems))
+               self._plugin.xbmcplugin.addDirectoryItems(self._handleOne, 
listitems, len(listitems))
        
        def set_sort_methods(self, *sortMethods):
                """ Set XBMC Sort Methods """
@@ -517,18 +508,24 @@ class PlayMedia(object):
                except:
                        # Resolve Video Url using Plugin Resolver
                        resolvedData = self.resolve()
-                       if resolvedData and "url" in resolvedData:
+                       if resolvedData and isinstance(resolvedData, dict):
                                self._videoData.update(resolvedData)
                                return True
+                       elif resolvedData:
+                               self._videoData["url"] = resolvedData
+                               return True
                else:
                        # Resolve Video Url using Video Hosts sources
                        if subaction == u"direct":
                                return True
                        elif subaction == u"source":
                                resolvedData = 
self._plugin.error_handler(self.sources)()
-                               if resolvedData and "url" in resolvedData:
+                               if resolvedData and isinstance(resolvedData, 
dict):
                                        self._videoData.update(resolvedData)
                                        return True
+                               elif resolvedData:
+                                       self._videoData["url"] = resolvedData
+                                       return True
        
        def sources(self, url=None, urls=None):
                # Import Video Resolver
@@ -584,17 +581,23 @@ class PlayMedia(object):
                                        if listitem is None:
                                                listitem = listitemObj()
                                                listitem.setLabel(videoTitle % 
count)
-                                       prepappend((url, listitem))
+                                       
+                                       # Add Content Type and urlpath to 
listitem
+                                       if "type" in self._videoData: 
listitem.setMimeType(self._videoData["type"])
+                                       url = self.add_header_pips(url, 
self._videoData.get("useragent"), self._videoData.get("referer"))
+                                       listitem.setPath(url)
+                                       prepappend((url, listitem, False))
                        
                        if downloadRequested:
                                downloader = DownloadMGR(downloadPath)
                                downloader.add_batch_job(prepList)
                        else:
+                               # Create Playlist and add items
                                playlist = Playlist(1)
-                               for url, listitem in prepList:
-                                       # Add Content Type and listitem to 
Playlist
-                                       if "type" in self._videoData: 
listitem.setMimeType(self._videoData["type"])
-                                       playlist.add(self.add_header_pips(url, 
self._videoData.get("useragent"), self._videoData.get("referer")), listitem)
+                               playlist.add_iter(prepList)
+                               
+                               # Resolve to first element of playlist
+                               self.set_resolved_url(prepList[0][1])
                
                # Add Single Video to XBMC
                else:
diff --git a/script.module.xbmcutil/lib/xbmcutil/storageDB.py 
b/script.module.xbmcutil/lib/xbmcutil/storageDB.py
index f8864fd..f8f3312 100644
--- a/script.module.xbmcutil/lib/xbmcutil/storageDB.py
+++ b/script.module.xbmcutil/lib/xbmcutil/storageDB.py
@@ -163,7 +163,7 @@ class SavedSearches(listitem.VirtualFS):
                baseAction = plugin["forwarding"]
                
                # Create Context Menu item Params
-               strRemove = plugin.getstr(1210)
+               strRemove = plugin.getuni(1210)
                params = plugin._Params.copy()
                params["updatelisting"] = "true"
                
diff --git a/script.module.xbmcutil/lib/xbmcutil/videohostsAPI.py 
b/script.module.xbmcutil/lib/xbmcutil/videohostsAPI.py
index 0fe53da..f3f8e50 100644
--- a/script.module.xbmcutil/lib/xbmcutil/videohostsAPI.py
+++ b/script.module.xbmcutil/lib/xbmcutil/videohostsAPI.py
@@ -179,7 +179,7 @@ class YoutubeAPI:
                                item.setLabel(mediaGroup[u"media$title"][u"$t"])
                                
                                # Fetch Studio & Category
-                               
item.setInfoDict(studio=mediaGroup[u"media$credit"][0][u"$t"].title(), 
genre=mediaGroup[u"media$category"][0][u"label"])
+                               
item.setInfoDict(studio=mediaGroup[u"media$credit"][0][u"yt$display"], 
genre=mediaGroup[u"media$category"][0][u"label"])
                                
                                # Fetch Duration
                                if u"yt$duration" in node: 
item.setDurationInfo(mediaGroup[u"yt$duration"][u"seconds"])
diff --git a/script.module.xbmcutil/resources/language/English/strings.xml 
b/script.module.xbmcutil/resources/language/English/strings.xml
index 6eb0183..6d25d13 100644
--- a/script.module.xbmcutil/resources/language/English/strings.xml
+++ b/script.module.xbmcutil/resources/language/English/strings.xml
@@ -24,7 +24,6 @@
        
        <!-- Context Menu Codes: 32960 - 32969 -->
        <string id="32960">Audio information</string>
-       <string id="32962">View Queue</string>
        <string id="32963">Youtube Channel</string>
        <string id="32964">Youtube Playlist</string>
        <string id="32965">Youtube Playlists</string>

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

Summary of changes:
 script.module.xbmcutil/addon.xml                   |    2 +-
 script.module.xbmcutil/changelog.txt               |   10 +++
 script.module.xbmcutil/lib/xbmcutil/__init__.py    |   23 ++++---
 script.module.xbmcutil/lib/xbmcutil/listitem.py    |   65 ++++++++++---------
 script.module.xbmcutil/lib/xbmcutil/storageDB.py   |    2 +-
 .../lib/xbmcutil/videohostsAPI.py                  |    2 +-
 .../resources/language/English/strings.xml         |    1 -
 7 files changed, 59 insertions(+), 46 deletions(-)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.  Get 
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to