The branch, frodo has been updated
       via  546c84844a7f1c5d59263ed869d446bd3a825439 (commit)
      from  b79cca449ca0955ac5365cc058baf06a16c127d9 (commit)

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

commit 546c84844a7f1c5d59263ed869d446bd3a825439
Author: unknown <[email protected]>
Date:   Sat Mar 23 12:12:27 2013 +0100

    [script.videolanguage] 0.0.9

diff --git a/script.videolanguage/README.txt b/script.videolanguage/README.txt
index ada220f..762b65c 100644
--- a/script.videolanguage/README.txt
+++ b/script.videolanguage/README.txt
@@ -1,7 +1,10 @@
 This script is designed to use in the video info dialog and sets properties 
for all audio and subtitle languages of a video file.
 
 Add this to DialogVideoInfo.xml
-<onload condition="System.HasAddon(script.videolanguage) + 
[Container.Content(movies) | 
Container.Content(episodes)]">RunScript(script.videolanguage,movieid=$INFO[ListItem.DBID])</onload>
+<onload condition="System.HasAddon(script.videolanguage) + 
[Container.Content(movies) | Container.Content(episodes) | 
Container.Content(musicvideos)]">RunScript(script.videolanguage,movieid=$INFO[ListItem.DBID])</onload>
+
+or run it in background by adding the following line to MyVideoNav.xml. If the 
script runs in background, you don't need to run it in DialogVideoInfo.xml.
+<onload 
condition="System.HasAddon(script.videolanguage)">RunScript(script.videolanguage,background=True)</onload>
 
 The following properties are available
 Window(movieinformation).Property(AudioLanguage.%d)
@@ -9,3 +12,4 @@ Window(movieinformation).Property(AudioCodec.%d)
 Window(movieinformation).Property(AudioChannels.%d)
 Window(movieinformation).Property(SubtitleLanguage.%d)
 
+Force the content type by adding type=movie, type=episode or type=musicvideo
\ No newline at end of file
diff --git a/script.videolanguage/addon.xml b/script.videolanguage/addon.xml
index 8de94bc..ee7df89 100644
--- a/script.videolanguage/addon.xml
+++ b/script.videolanguage/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.videolanguage" name="Video Language Script" version="0.0.6" 
provider-name="`Black">
+<addon id="script.videolanguage" name="Video Language Script" version="0.0.9" 
provider-name="`Black|phil65">
        <requires>
                <import addon="xbmc.python" version="2.1.0"/>
                <import addon="script.module.simplejson" version="2.0.10"/>
diff --git a/script.videolanguage/changelog.txt 
b/script.videolanguage/changelog.txt
index 6f119ff..6ae987c 100644
--- a/script.videolanguage/changelog.txt
+++ b/script.videolanguage/changelog.txt
@@ -1,3 +1,14 @@
+v 0.0.9
+- music video support
+- exception handling
+- optimization
+
+v 0.0.8
+- added option to force type
+
+v 0.0.7
+- added backend mode
+
 v 0.0.6
 - fixed script error if dbid is -1 (e.g. in the trailers add-on)
 
diff --git a/script.videolanguage/default.py b/script.videolanguage/default.py
index 443bc36..f5fdfac 100644
--- a/script.videolanguage/default.py
+++ b/script.videolanguage/default.py
@@ -10,51 +10,93 @@ __addonid__      = __addon__.getAddonInfo('id')
 __addonversion__ = __addon__.getAddonInfo('version')
 
 def log(txt):
-    if isinstance (txt,str):
+    if isinstance(txt, str):
         txt = txt.decode("utf-8")
     message = u'%s: %s' % (__addonid__, txt)
     xbmc.log(msg=message.encode("utf-8"), level=xbmc.LOGDEBUG)
 
 class Main:
     def __init__( self ):
-        log('version %s started' % __addonversion__ )
+        log("version %s started" % __addonversion__ )
+        self._init_vars()
         self._parse_argv()
-        self.window = xbmcgui.Window(12003) # Video info dialog
-        if self.movieid:
-            # clear old properties
-            self._clear_properties()
+        # run in backend if parameter was set
+        if 
xbmc.getCondVisibility("IsEmpty(Window(home).Property(videolanguage_backend_running))"):
+            if self.backend:
+                
xbmc.executebuiltin('SetProperty(videolanguage_backend_running,true,home)')
+                self.run_backend()
             # only set new properties if movieid is not smaller than 0, e.g. -1
-            if self.movieid > -1:
-                # set new properties
-                self._set_languages()
+            elif self.movieid and self.movieid > -1:
+                self._set_languages(self.movieid)
+            # else clear old properties
+            else:
+                self._clear_properties()
+            
+    def _init_vars(self):
+        self.window = xbmcgui.Window(12003) # Video info dialog
+        self.cleared = False
 
-    def _parse_argv( self ):
+    def _parse_argv(self):
         try:
-            params = dict( arg.split( '=' ) for arg in sys.argv[ 1 ].split( 
'&' ) )
+            params = dict( arg.split("=") for arg in sys.argv[1].split("&"))
         except:
             params = {}
-        self.movieid = int(params.get( 'movieid', False ))
+        log("params: %s" % params)
+        self.movieid = int(params.get("movieid", "-1"))
+        self.backend = params.get("backend", False)
+        self.type = str(params.get("type", False))
+
+    def run_backend(self):
+        self._stop = False
+        self.previousitem = ""
+        while not self._stop:
+            if not xbmc.getCondVisibility("Container.Scrolling"):
+                self.selecteditem = xbmc.getInfoLabel("ListItem.DBID")
+                if (self.selecteditem != self.previousitem):
+                    self.previousitem = self.selecteditem
+                    if xbmc.getInfoLabel("ListItem.DBID") > -1 and not 
xbmc.getCondVisibility("ListItem.IsFolder"):
+                        self._set_languages(xbmc.getInfoLabel("ListItem.DBID"))
+                    else:
+                        self._clear_properties()
+            else:
+                self._clear_properties()
+            xbmc.sleep(100)
+            if not xbmc.getCondVisibility("Window.IsVisible(videolibrary)"):
+                self._clear_properties()
+                
xbmc.executebuiltin('ClearProperty(videolanguage_backend_running,home)')
+                self._stop = True
 
-    def _set_languages( self ):
-        json_query = ''
-        if xbmc.getCondVisibility('Container.Content(movies)'):
-            json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMovieDetails", "params": {"properties": ["streamdetails"], 
"movieid":%s }, "id": 1}' % self.movieid)
-            json_query = unicode(json_query, 'utf-8', errors='ignore')
-            log(json_query)
-            json_response = simplejson.loads(json_query)
-            if (json_response['result'] != None) and 
(json_response['result'].has_key('moviedetails')):
-                self._set_properties( 
json_response['result']['moviedetails']['streamdetails']['audio'], 
json_response['result']['moviedetails']['streamdetails']['subtitle'])
-        elif xbmc.getCondVisibility('Container.Content(episodes)'):
-            json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetEpisodeDetails", "params": {"properties": ["streamdetails"], 
"episodeid":%s }, "id": 1}' % self.movieid)
-            json_query = unicode(json_query, 'utf-8', errors='ignore')
-            log(json_query)
-            json_response = simplejson.loads(json_query)
-            if (json_response['result'] != None) and 
(json_response['result'].has_key('episodedetails')):
-                self._set_properties( 
json_response['result']['episodedetails']['streamdetails']['audio'], 
json_response['result']['episodedetails']['streamdetails']['subtitle'])
-     
+    def _set_languages( self, dbid ):
+        try:
+            if xbmc.getCondVisibility('Container.Content(movies)') or 
self.type == "movie":
+                json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMovieDetails", "params": {"properties": ["streamdetails"], 
"movieid":%s }, "id": 1}' % dbid)
+                json_query = unicode(json_query, 'utf-8', errors='ignore')
+                log(json_query)
+                json_response = simplejson.loads(json_query)
+                if json_response['result'].has_key('moviedetails'):
+                    
self._set_properties(json_response['result']['moviedetails']['streamdetails']['audio'],
 json_response['result']['moviedetails']['streamdetails']['subtitle'])
+            elif xbmc.getCondVisibility('Container.Content(episodes)') or 
self.type == "episode":
+                json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetEpisodeDetails", "params": {"properties": ["streamdetails"], 
"episodeid":%s }, "id": 1}' % dbid)
+                json_query = unicode(json_query, 'utf-8', errors='ignore')
+                log(json_query)
+                json_response = simplejson.loads(json_query)
+                if json_response['result'].has_key('episodedetails'):
+                    
self._set_properties(json_response['result']['episodedetails']['streamdetails']['audio'],
 json_response['result']['episodedetails']['streamdetails']['subtitle'])
+            elif xbmc.getCondVisibility('Container.Content(musicvideos)') or 
self.type == "musicvideo":
+                json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMusicVideoDetails", "params": {"properties": 
["streamdetails"], "musicvideoid":%s }, "id": 1}' % dbid)
+                json_query = unicode(json_query, 'utf-8', errors='ignore')
+                log(json_query)
+                json_response = simplejson.loads(json_query)
+                if json_response['result'].has_key('musicvideodetails'):
+                    
self._set_properties(json_response['result']['musicvideodetails']['streamdetails']['audio'],
 json_response['result']['musicvideodetails']['streamdetails']['subtitle'])
+        except:
+            pass
+            
     def _set_properties( self, audio, subtitles ):
         # Set language properties
         count = 1
+        # Clear properties before setting new ones
+        self._clear_properties()
         for item in audio:
             self.window.setProperty('AudioLanguage.%d' % count, 
item['language'])
             self.window.setProperty('AudioCodec.%d' % count, item['codec'])
@@ -64,14 +106,17 @@ class Main:
         for item in subtitles:
             self.window.setProperty('SubtitleLanguage.%d' % count, 
item['language'])     
             count += 1
+        self.cleared = False
                 
     def _clear_properties( self ):
-        # 1 to 99 should really be enough
-        for i in range(1,100):
-            self.window.clearProperty('AudioLanguage.%d' % i)
-            self.window.clearProperty('AudioCodec.%d' % i)
-            self.window.clearProperty('AudioChannels.%d' % i)
-            self.window.clearProperty('SubtitleLanguage.%d' % i)
+        if not self.cleared:
+            # 1 to 99 should really be enough
+            for i in range(1,100):
+                self.window.clearProperty('AudioLanguage.%d' % i)
+                self.window.clearProperty('AudioCodec.%d' % i)
+                self.window.clearProperty('AudioChannels.%d' % i)
+                self.window.clearProperty('SubtitleLanguage.%d' % i)
+            self.cleared = True
 
 if ( __name__ == "__main__" ):
     Main()

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

Summary of changes:
 script.videolanguage/README.txt    |    6 ++-
 script.videolanguage/addon.xml     |    2 +-
 script.videolanguage/changelog.txt |   11 ++++
 script.videolanguage/default.py    |  115 +++++++++++++++++++++++++-----------
 4 files changed, 97 insertions(+), 37 deletions(-)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to