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