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