The branch, eden-pre has been updated
       via  1aa9584702dd74459202034ab6dee4a34181dd63 (commit)
       via  483e547819b543a3142bc8d1a6043fae085425fd (commit)
      from  ab649e604285cbfa91df60a87f04e19dec7556c7 (commit)

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

commit 1aa9584702dd74459202034ab6dee4a34181dd63
Author: amet <[email protected]>
Date:   Tue Jan 31 18:40:18 2012 +0400

    [script.tvguide] -v 1.2.2
    
    - Fixed compatibility problem with Python 2.6 and previous versions
      It caused problems on Windows, ATV, etc.

diff --git a/script.tvguide/addon.xml b/script.tvguide/addon.xml
index cd4f25e..7b8987a 100644
--- a/script.tvguide/addon.xml
+++ b/script.tvguide/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.tvguide" name="TV Guide" version="1.2.1" 
provider-name="twinther [[email protected]]">
+<addon id="script.tvguide" name="TV Guide" version="1.2.2" 
provider-name="twinther [[email protected]]">
     <requires>
         <import addon="xbmc.python" version="2.0"/>
         <import addon="script.module.simplejson" version="2.0.10"/>
diff --git a/script.tvguide/changelog.txt b/script.tvguide/changelog.txt
index 749c541..e7fecea 100644
--- a/script.tvguide/changelog.txt
+++ b/script.tvguide/changelog.txt
@@ -1,3 +1,7 @@
+[B]Version 1.2.2 - 2012-01-28[/B]
+- Fixed compatibility problem with Python 2.6 and previous versions
+  It caused problems on Windows, ATV, etc.
+
 [B]Version 1.2.1 - 2012-01-27[/B]
 - Added option to load channel icons from a folder when using XMLTV as source
   Logos must be png's and named <channel name>.png
diff --git a/script.tvguide/source.py b/script.tvguide/source.py
index 51b10d6..54cc8df 100644
--- a/script.tvguide/source.py
+++ b/script.tvguide/source.py
@@ -160,7 +160,7 @@ class Source(object):
 
     def getProgramList(self, channel, date):
         if type(channel.id) in [str, unicode]:
-            id = channel.id.encode('utf-8', errors='ignore')
+            id = channel.id.encode('utf-8', 'ignore')
         else:
             id = str(channel.id)
 

http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=483e547819b543a3142bc8d1a6043fae085425fd

commit 483e547819b543a3142bc8d1a6043fae085425fd
Author: amet <[email protected]>
Date:   Tue Jan 31 18:38:10 2012 +0400

    [script.mpdc] -v 2.0.6
    
    - fixed: queue does not get updated on MPD 16.x
    - added: simple caching of artist list
    - fixed: sorting of playlists,artists,files

diff --git a/script.mpdc/addon.xml b/script.mpdc/addon.xml
index a778afa..0414868 100644
--- a/script.mpdc/addon.xml
+++ b/script.mpdc/addon.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="script.mpdc"
        name="MPD Client"
-       version="2.0.5"
-       provider-name="lzoubek">
+       version="2.0.6"
+       provider-name="Libor Zoubek">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
+    <import addon="script.module.simplejson" version="2.0.10"/>
   </requires>
   <extension point="xbmc.python.script" library="default.py">
        <provides>audio</provides>
diff --git a/script.mpdc/changelog.txt b/script.mpdc/changelog.txt
index f375276..bd322e5 100644
--- a/script.mpdc/changelog.txt
+++ b/script.mpdc/changelog.txt
@@ -1,3 +1,7 @@
+[B]2.0.6[/B]
+- fixed: queue does not get updated on MPD 16.x
+- added: simple caching of artist list
+- fixed: sorting of playlists,artists,files
 [B]2.0.5[/B]
 - fixed: unable to start/connect on appletv boxes
 - fixed: handling backspace keys
diff --git a/script.mpdc/default.py b/script.mpdc/default.py
index c5a7e79..78d4eca 100644
--- a/script.mpdc/default.py
+++ b/script.mpdc/default.py
@@ -27,7 +27,7 @@ ACTION_CLOSE = [9,10,92]
 STATUS = 100
 SETTINGS = 101
 sys.path.append( os.path.join ( __addon__.getAddonInfo('path'), 
'resources','lib') )
-import gui,xbmpc
+import xbmpc
 import mpdcdialog as dialog
 STATUS_ON='on'
 STATUS_OFF='off'
@@ -122,6 +122,7 @@ class SelectMPDProfile ( xbmcgui.WindowXMLDialog ) :
                if controlId == SERVER_LIST:
                        seekid = self.getControl( SERVER_LIST 
).getSelectedItem().getProperty('id')
                        if self.getControl( SERVER_LIST 
).getSelectedItem().getProperty('stat') == STATUS_ON:
+                               import gui
                                ui = gui.GUI( 
'mpd-client-main.xml',__addon__.getAddonInfo('path'), self.skin,seekid)
                                ui.doModal()
                                del ui
@@ -134,6 +135,7 @@ current_skin=str(xbmc.getSkinDir().lower())
 #      skin = 'transparency'
 skip_selector = __addon__.getSetting('skip-selector')
 if 'true' == skip_selector:
+       import gui
        ui = gui.GUI( 'mpd-client-main.xml',__addon__.getAddonInfo('path'), 
skin,'0')
        ui.doModal()
        del ui
diff --git a/script.mpdc/resources/lib/gui.py b/script.mpdc/resources/lib/gui.py
index 26d3f7c..97beaa2 100644
--- a/script.mpdc/resources/lib/gui.py
+++ b/script.mpdc/resources/lib/gui.py
@@ -20,7 +20,7 @@
 # */
 import sys,os,time,re,traceback,threading
 import xbmc,xbmcaddon,xbmcgui,xbmcplugin
-import pmpd,xbmpc,albumart,playercontrols
+import pmpd,xbmpc,albumart,playercontrols,cache
 import mpdcdialog as dialog
 __scriptid__ = 'script.mpdc'
 __addon__ = xbmcaddon.Addon(id=__scriptid__)
@@ -157,6 +157,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
                self.mpd_pass = 
self.addon.getSetting(self.profile_id+'_mpd_pass')
                self.fb_indexes = []
                self.ab_indexes = []
+               self.cache = cache.MPDCache(__addon__)
                if self.mpd_pass == '':
                        self.mpd_pass = None
                self.is_play_stream = False
@@ -341,10 +342,12 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
                                
self.getControl(SONG_INFO_ATRIST).setLabel(current['file'])
                        else:
                                
self.getControl(SONG_INFO_ATRIST).setLabel(current['artist']+' - 
'+current['title'])
-                       if current['date']=='':
-                               
self.getControl(SONG_INFO_ALBUM).setLabel(current['album'])
-                       else:
+                       if isinstance(current['date'],str) and 
len(current['date']) > 3:
                                
self.getControl(SONG_INFO_ALBUM).setLabel(current['album']+' 
('+current['date'][:4]+')')
+                       elif isinstance(current['date'],list) and 
len(current['date']) > 0:
+                               
self.getControl(SONG_INFO_ALBUM).setLabel(current['album']+' 
('+current['date'][0][:4]+')')
+                       else:
+                               
self.getControl(SONG_INFO_ALBUM).setLabel(current['album'])
                if not self.album_fetch_enabled:
                        return
                album_image = 
self.art_fetcher.get_image_file_name(current['artist'],current['album'],current['file'])
@@ -367,13 +370,16 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
                        client = self.client
                if artist_item==None:
                        self.getControl(ARTIST_BROWSER).reset()
-                       #artists = self.client.list('artist')
-                       #artists.sort()
+                       artists = self.cache.getArtists()
+                       if [] == artists:
+                               artists = self.client.list('artist')
+                               artists.sort()
+                               self.cache.putArtists(artists)
                        listitem = xbmcgui.ListItem(label='..')
                        listitem.setIconImage('DefaultFolderBack.png')
                        listitem.setProperty('type','')
                        self.getControl(ARTIST_BROWSER).addItem(listitem)       
                
-                       for item in self.client.list('artist'):
+                       for item in artists:
                                if not item=='':
                                        listitem = xbmcgui.ListItem(label=item)
                                        listitem.setProperty('artist',item)
@@ -452,7 +458,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
                self.getControl(PLAYLIST_BROWSER).reset()
                self.playlists = []
                try:
-                       self.playlists = client.listplaylists()
+                       self.playlists = sorted(client.listplaylists(), 
key=lambda pls: pls['playlist'])
                except:
                        #in case server does not support this command
                        pass
@@ -515,6 +521,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
        def _update_file_browser(self,browser_item=None,client=None,back=False):
                select_index = 0
                index = self.getControl(FILE_BROWSER).getSelectedPosition()
+               firstitem= None
                if client==None:
                        client = self.client
                if browser_item == None:
@@ -523,7 +530,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
                        listitem = xbmcgui.ListItem( label='..')
                        listitem.setProperty('directory','')
                        listitem.setIconImage('DefaultFolderBack.png')
-                       self.getControl(FILE_BROWSER).addItem(listitem)
+                       firstitem = listitem
                elif browser_item.getProperty('type') == 'file':
                        return
                else:
@@ -538,21 +545,29 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
                        listitem = xbmcgui.ListItem( label='..')
                        listitem.setProperty('directory',os.path.dirname(uri))
                        listitem.setIconImage('DefaultFolderBack.png')
-                       self.getControl(FILE_BROWSER).addItem(listitem)
+                       firstitem = listitem
+               file_items = []
+               dir_items = []
                for item in dirs:
                        if 'directory' in item:
                                listitem = xbmcgui.ListItem( 
label=os.path.basename(item['directory']))
                                listitem.setProperty('type','directory')
                                
listitem.setProperty('directory',item['directory'])
                                listitem.setIconImage('DefaultFolder.png')
-                               self.getControl(FILE_BROWSER).addItem(listitem)
+                               dir_items.append(listitem)
                        elif 'file' in item:
                                listitem = xbmcgui.ListItem( 
label=os.path.basename(item['file']))
                                listitem.setProperty('type','file')
                                
listitem.setProperty('directory',os.path.dirname(item['file']))
                                listitem.setProperty('file',item['file'])
                                listitem.setIconImage('DefaultAudio.png')
-                               self.getControl(FILE_BROWSER).addItem(listitem)
+                               file_items.append(listitem)
+               dir_items = sorted(dir_items,key=lambda i:i.getLabel())
+               if not firstitem == None:
+                       dir_items.insert(0,firstitem)
+               for i in sorted(file_items,key=lambda i:i.getLabel()):
+                       dir_items.append(i)
+               self.getControl(FILE_BROWSER).addItems(dir_items)
                self.getControl(FILE_BROWSER).selectItem(select_index)
 
        def _handle_time_changes(self,poller_client,status):
@@ -603,6 +618,7 @@ class GUI ( xbmcgui.WindowXMLDialog ) :
                        if change == 'stored_playlist':
                                self._update_playlist_browser(poller_client)
                        if change == 'database':
+                               self.cache.clear()
                                self._update_file_browser(client=poller_client)
                                
self._update_artist_browser(client=poller_client)
                        if change == 'playlist':
diff --git a/script.mpdc/resources/lib/pmpd.py 
b/script.mpdc/resources/lib/pmpd.py
index 541bb8b..3163f15 100644
--- a/script.mpdc/resources/lib/pmpd.py
+++ b/script.mpdc/resources/lib/pmpd.py
@@ -94,8 +94,8 @@ class PMPDClient(object):
                                pass
                        try:
                                print 'waiting for time poller thread'
+                               self.time_event.set()
                                if self.time_thread.isAlive():
-                                       self.time_event.set()
                                        self.time_thread.join(3)
                                        self.time_event=None
                                print 'done'
@@ -128,6 +128,7 @@ class PMPDClient(object):
        def _poll(self):
                while 1:                        
                        try:
+#                              print 'polling IDLE'
                                self.poller.send_idle()
                                select.select([self.poller],[],[],1)
                                changes = self.poller.fetch_idle()
@@ -136,7 +137,7 @@ class PMPDClient(object):
 #                              traceback.print_exc()
                                return
                        try:
-                               if not self.callback == None:
+                               if not self.callback == None and not changes == 
None:
                                        self.callback(self.poller,changes)
                        except:
 #                              print "callback error"
diff --git a/script.mpdc/resources/lib/xbmpc.py 
b/script.mpdc/resources/lib/xbmpc.py
index 586a3af..81e723d 100644
--- a/script.mpdc/resources/lib/xbmpc.py
+++ b/script.mpdc/resources/lib/xbmpc.py
@@ -166,7 +166,8 @@ class MPDClient(object):
             raise IteratingError("Cannot use fetch_%s while iterating" %
                                  command)
         if not self._pending:
-            raise PendingCommandError("No pending commands to fetch")
+           return
+           #raise PendingCommandError("No pending commands to fetch")
         if self._pending[0] != command:
             raise PendingCommandError("%s is not the currently "
                                       "pending command" % command)

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

Summary of changes:
 script.mpdc/addon.xml              |    5 +-
 script.mpdc/changelog.txt          |    4 ++
 script.mpdc/default.py             |    4 +-
 script.mpdc/resources/lib/cache.py |   73 ++++++++++++++++++++++++++++++++++++
 script.mpdc/resources/lib/gui.py   |   40 ++++++++++++++------
 script.mpdc/resources/lib/pmpd.py  |    5 +-
 script.mpdc/resources/lib/xbmpc.py |    3 +-
 script.tvguide/addon.xml           |    2 +-
 script.tvguide/changelog.txt       |    4 ++
 script.tvguide/source.py           |    2 +-
 10 files changed, 122 insertions(+), 20 deletions(-)
 create mode 100644 script.mpdc/resources/lib/cache.py


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to