The branch, frodo has been updated
via 1be04e03fba7c7e12f085b9522b7bfccecc5f606 (commit)
from 804807d5e9db2a2190acfa8fc4349b55d26124f2 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=1be04e03fba7c7e12f085b9522b7bfccecc5f606
commit 1be04e03fba7c7e12f085b9522b7bfccecc5f606
Author: Martijn Kaijser <[email protected]>
Date: Sun Apr 7 20:37:09 2013 +0200
[script.xbmc.unpausejumpback] 2.2.0
diff --git a/script.xbmc.unpausejumpback/addon.xml
b/script.xbmc.unpausejumpback/addon.xml
index ec20b4d..fbf3e8b 100644
--- a/script.xbmc.unpausejumpback/addon.xml
+++ b/script.xbmc.unpausejumpback/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.xbmc.unpausejumpback" name="XBMC Unpause Jumpback"
version="2.1.0" provider-name="Memphiz, Lucleonhart">
+<addon id="script.xbmc.unpausejumpback" name="XBMC Unpause Jumpback"
version="2.2.0" provider-name="Memphiz|Lucleonhart|schumi2004">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
</requires>
@@ -7,10 +7,15 @@
<extension point="xbmc.addon.metadata">
<summary lang="en">XBMC jumpback on unpausing videos</summary>
<description lang="en">
- This addon will jumpback the given number of seconds whenever a movie
is unpause - for finding back into the story.
+ This addon will jumpback the given number of seconds whenever a movie
is unpaused - for finding back into the story.
You can set the amount of seconds to jump back and the minimum seconds
the pause must take to jump back.
+ It also allows to jump back or forward after rwd or fwd a specified
amount of seconds.
</description>
<platform>all</platform>
+ <website></website>
+ <source>https://github.com/Memphiz/script.xbmc.unpausejumpback/</source>
+ <forum>http://forum.xbmc.org/showthread.php?tid=134837</forum>
+ <email></email>
</extension>
</addon>
diff --git a/script.xbmc.unpausejumpback/changelog.txt
b/script.xbmc.unpausejumpback/changelog.txt
index e08fba3..ced4a52 100644
--- a/script.xbmc.unpausejumpback/changelog.txt
+++ b/script.xbmc.unpausejumpback/changelog.txt
@@ -1,5 +1,9 @@
+2.2.0
+- add exclude settings
+- add jumpback/forward after fwd or rwd based on the fwd/rwd speed (can be
adjusted for each speed separately for fwd and rwd).
+
2.1.0
- add setting for specifying the minimum pause time before jumping back
2.0.0
-- initial commit for frodo
\ No newline at end of file
+- initial commit for frodo
diff --git a/script.xbmc.unpausejumpback/default.py
b/script.xbmc.unpausejumpback/default.py
index 426a539..b834094 100644
--- a/script.xbmc.unpausejumpback/default.py
+++ b/script.xbmc.unpausejumpback/default.py
@@ -34,24 +34,101 @@ __resource__ = xbmc.translatePath( os.path.join( __cwd__,
'resources', 'lib' ) )
sys.path.append (__resource__)
-global g_jumpBackSecs
+global g_jumpBackSecsAfterFwdPauseAfterPause
+global g_jumpBackSecsAfterFwdX2
+global g_jumpBackSecsAfterFwdX4
+global g_jumpBackSecsAfterFwdX8
+global g_jumpBackSecsAfterFwdX16
+global g_jumpBackSecsAfterFwdX32
+global g_jumpBackSecsAfterRwdX2
+global g_jumpBackSecsAfterRwdX4
+global g_jumpBackSecsAfterRwdX8
+global g_jumpBackSecsAfterRwdX16
+global g_jumpBackSecsAfterRwdX32
+global g_lastPlaybackSpeed
global g_pausedTime
global g_waitForJumpback
-g_jumpBackSecs = 0
+g_jumpBackSecsAfterFwdPause = 0
g_pausedTime = 0
g_waitForJumpback = 0
+g_lastPlaybackSpeed = 1
def log(msg):
xbmc.log("### [%s] - %s" % (__scriptname__,msg,),level=xbmc.LOGDEBUG )
log( "[%s] - Version: %s Started" % (__scriptname__,__version__))
+# helper function to get string type from settings
+def getSetting(setting):
+ return __addon__.getSetting(setting).strip()
+
+# helper function to get bool type from settings
+def getSettingAsBool(setting):
+ return getSetting(setting).lower() == "true"
+
+# check exclusion settings for filename passed as argument
+def isExcluded(fullpath):
+
+ if not fullpath:
+ return True
+
+ log("isExcluded(): Checking exclusion settings for '%s'." % fullpath)
+
+ if (fullpath.find("pvr://") > -1) and getSettingAsBool('ExcludeLiveTV'):
+ log("isExcluded(): Video is playing via Live TV, which is
currently set as excluded location.")
+ return True
+
+ if (fullpath.find("http://") > -1) and getSettingAsBool('ExcludeHTTP'):
+ log("isExcluded(): Video is playing via HTTP source, which is
currently set as excluded location.")
+ return True
+
+ ExcludePath = getSetting('ExcludePath')
+ if ExcludePath and getSettingAsBool('ExcludePathOption'):
+ if (fullpath.find(ExcludePath) > -1):
+ log("isExcluded(): Video is playing from '%s', which is
currently set as excluded path 1." % ExcludePath)
+ return True
+
+ ExcludePath2 = getSetting('ExcludePath2')
+ if ExcludePath2 and getSettingAsBool('ExcludePathOption2'):
+ if (fullpath.find(ExcludePath2) > -1):
+ log("isExcluded(): Video is playing from '%s', which is
currently set as excluded path 2." % ExcludePath2)
+ return True
+
+ ExcludePath3 = getSetting('ExcludePath3')
+ if ExcludePath3 and getSettingAsBool('ExcludePathOption3'):
+ if (fullpath.find(ExcludePath3) > -1):
+ log("isExcluded(): Video is playing from '%s', which is
currently set as excluded path 3." % ExcludePath3)
+ return True
+
+ return False
+
def loadSettings():
- global g_jumpBackSecs
+ global g_jumpBackSecsAfterFwdPause
global g_waitForJumpback
- g_jumpBackSecs = int(float(__addon__.getSetting("jumpbacksecs")))
+ global g_jumpBackSecsAfterFwdX2
+ global g_jumpBackSecsAfterFwdX4
+ global g_jumpBackSecsAfterFwdX8
+ global g_jumpBackSecsAfterFwdX16
+ global g_jumpBackSecsAfterFwdX32
+ global g_jumpBackSecsAfterRwdX2
+ global g_jumpBackSecsAfterRwdX4
+ global g_jumpBackSecsAfterRwdX8
+ global g_jumpBackSecsAfterRwdX16
+ global g_jumpBackSecsAfterRwdX32
+
+ g_jumpBackSecsAfterFwdPause =
int(float(__addon__.getSetting("jumpbacksecs")))
+ g_jumpBackSecsAfterFwdX2 =
int(float(__addon__.getSetting("jumpbacksecsfwdx2")))
+ g_jumpBackSecsAfterFwdX4 =
int(float(__addon__.getSetting("jumpbacksecsfwdx4")))
+ g_jumpBackSecsAfterFwdX8 =
int(float(__addon__.getSetting("jumpbacksecsfwdx8")))
+ g_jumpBackSecsAfterFwdX16 =
int(float(__addon__.getSetting("jumpbacksecsfwdx16")))
+ g_jumpBackSecsAfterFwdX32 =
int(float(__addon__.getSetting("jumpbacksecsfwdx32")))
+ g_jumpBackSecsAfterRwdX2 =
int(float(__addon__.getSetting("jumpbacksecsrwdx2")))
+ g_jumpBackSecsAfterRwdX4 =
int(float(__addon__.getSetting("jumpbacksecsrwdx4")))
+ g_jumpBackSecsAfterRwdX8 =
int(float(__addon__.getSetting("jumpbacksecsrwdx8")))
+ g_jumpBackSecsAfterRwdX16 =
int(float(__addon__.getSetting("jumpbacksecsrwdx16")))
+ g_jumpBackSecsAfterRwdX32 =
int(float(__addon__.getSetting("jumpbacksecsrwdx32")))
g_waitForJumpback = int(float(__addon__.getSetting("waitforjumpback")))
- log('Settings loaded! JumpBackSecs: %d, WaitSecs: %d' % (g_jumpBackSecs,
g_waitForJumpback))
+ log('Settings loaded! JumpBackSecs: %d, WaitSecs: %d' %
(g_jumpBackSecsAfterFwdPause, g_waitForJumpback))
class MyPlayer( xbmc.Player ):
def __init__( self, *args, **kwargs ):
@@ -62,18 +139,68 @@ class MyPlayer( xbmc.Player ):
global g_pausedTime
g_pausedTime = time()
log('Paused. Time: %d' % g_pausedTime)
-
+
+ def onPlayBackSpeedChanged( self, speed ):
+ global g_lastPlaybackSpeed
+
+ if speed == 1: #normal playback speed reached
+ direction = 1
+ absLastSpeed = abs(g_lastPlaybackSpeed)
+ if g_lastPlaybackSpeed < 0:
+ log('Resuming. Was rewinded with speed X%d.' %
(abs(g_lastPlaybackSpeed)))
+ if g_lastPlaybackSpeed > 1:
+ direction = -1
+ log('Resuming. Was forwarded with speed X%d.' %
(abs(g_lastPlaybackSpeed)))
+ #handle jumpafter fwd/rwd (humpback after fwd, jump forward after red)
+ if direction == -1: #fwd
+ if absLastSpeed == 2:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterFwdX2 *
direction
+ elif absLastSpeed == 4:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterFwdX4 *
direction
+ elif absLastSpeed == 8:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterFwdX8 *
direction
+ elif absLastSpeed == 16:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterFwdX16 *
direction
+ elif absLastSpeed == 32:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterFwdX32 *
direction
+ else: #rwd
+ if absLastSpeed == 2:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterRwdX2 *
direction
+ elif absLastSpeed == 4:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterRwdX4 *
direction
+ elif absLastSpeed == 8:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterRwdX8 *
direction
+ elif absLastSpeed == 16:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterRwdX16 *
direction
+ elif absLastSpeed == 32:
+ resumeTime = xbmc.Player().getTime() + g_jumpBackSecsAfterRwdX32 *
direction
+
+ if absLastSpeed != 1: #we really fwd'ed or rwd'ed
+ xbmc.Player().seekTime(resumeTime) # do the jump
+
+ g_lastPlaybackSpeed = speed
+
def onPlayBackResumed( self ):
- global g_jumpBackSecs
+ global g_jumpBackSecsAfterFwdPause
global g_pausedTime
global g_waitForJumpback
- log('Resuming. Was paused for %d seconds.' % (time() - g_pausedTime))
- if g_jumpBackSecs != 0 and xbmc.Player().isPlayingVideo() and
xbmc.Player().getTime() > g_jumpBackSecs and g_pausedTime > 0 and (time() -
g_pausedTime) > g_waitForJumpback:
- resumeTime = xbmc.Player().getTime() - g_jumpBackSecs
- xbmc.Player().seekTime(resumeTime)
- log( 'Resumed with %ds jumpback' % g_jumpBackSecs )
+ if g_pausedTime > 0:
+ log('Resuming. Was paused for %d seconds.' % (time() - g_pausedTime))
+
+ # check for exclusion
+ _filename = self.getPlayingFile()
+ if isExcluded(_filename):
+ log("Ignored because '%s' is in exclusion settings." % _filename)
+ return
+
+ else:
+ #handle humpback after pause
+ if g_jumpBackSecsAfterFwdPause != 0 and xbmc.Player().isPlayingVideo()
and xbmc.Player().getTime() > g_jumpBackSecsAfterFwdPause and g_pausedTime > 0
and (time() - g_pausedTime) > g_waitForJumpback:
+ resumeTime = xbmc.Player().getTime() - g_jumpBackSecsAfterFwdPause
+ xbmc.Player().seekTime(resumeTime)
+ log( 'Resumed with %ds jumpback' % g_jumpBackSecsAfterFwdPause )
- g_pausedTime = 0
+ g_pausedTime = 0
try:
class MyMonitor( xbmc.Monitor ):
def __init__( self, *args, **kwargs ):
@@ -92,3 +219,4 @@ loadSettings()
while not xbmc.abortRequested:
xbmc.sleep(100)
+
diff --git a/script.xbmc.unpausejumpback/resources/settings.xml
b/script.xbmc.unpausejumpback/resources/settings.xml
index 415f843..0bc85a8 100644
--- a/script.xbmc.unpausejumpback/resources/settings.xml
+++ b/script.xbmc.unpausejumpback/resources/settings.xml
@@ -1,7 +1,31 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
- <category label="Jump back on unpause">
- <setting id="jumpbacksecs" type="slider" label="Jump seconds" default="0"
range="0,60" />
- <setting id="waitforjumpback" type="slider" label="Minimum pause before
jumpback" default="10" range="0,600" />
+ <category label="32000">
+ <setting id="jumpbacksecs" type="slider" label="32001" default="0"
range="0,60" />
+ <setting id="waitforjumpback" type="slider" label="32002" default="10"
range="0,600" />
+ </category>
+ <category label="32010">
+ <setting id="jumpbacksecsfwdx2" type="slider" label="32011" default="2"
range="0,60" />
+ <setting id="jumpbacksecsfwdx4" type="slider" label="32012" default="4"
range="0,60" />
+ <setting id="jumpbacksecsfwdx8" type="slider" label="32013" default="8"
range="0,60" />
+ <setting id="jumpbacksecsfwdx16" type="slider" label="32014" default="16"
range="0,60" />
+ <setting id="jumpbacksecsfwdx32" type="slider" label="32015" default="32"
range="0,60" />
+ </category>
+ <category label="32020">
+ <setting id="jumpbacksecsrwdx2" type="slider" label="32021" default="2"
range="0,60" />
+ <setting id="jumpbacksecsrwdx4" type="slider" label="32022" default="4"
range="0,60" />
+ <setting id="jumpbacksecsrwdx8" type="slider" label="32023" default="8"
range="0,60" />
+ <setting id="jumpbacksecsrwdx16" type="slider" label="32024" default="16"
range="0,60" />
+ <setting id="jumpbacksecsrwdx32" type="slider" label="32025" default="32"
range="0,60" />
+ </category>
+ <category label="32030">
+ <setting id="ExcludeLiveTV" type="bool" label="32031" default="false"/>
+ <setting id="ExcludeHTTP" type="bool" label="32032" default="false"/>
+ <setting id="ExcludePathOption" type="bool" label="32033" default="false"
/>
+ <setting id="ExcludePath" type="folder" source="video" label="32034"
default="" visible= "eq(-1,true)" enable="eq(-1,true)" />
+ <setting id="ExcludePathOption2" type="bool" label="32033" default="false"
visible= "eq(-2,true)" enable="eq(-2,true)" />
+ <setting id="ExcludePath2" type="folder" source="video" label="32034"
default="" visible= "eq(-1,true)" enable="eq(-1,true)" />
+ <setting id="ExcludePathOption3" type="bool" label="32033" default="false"
visible= "eq(-2,true)" enable="eq(-2,true)" />
+ <setting id="ExcludePath3" type="folder" source="video" label="32034"
default="" visible= "eq(-1,true)" enable="eq(-1,true)" />
</category>
</settings>
-----------------------------------------------------------------------
Summary of changes:
script.xbmc.unpausejumpback/addon.xml | 9 +-
script.xbmc.unpausejumpback/changelog.txt | 6 +-
script.xbmc.unpausejumpback/default.py | 154 ++++++++++++++++++--
.../resources/language/English/strings.xml | 23 +++
script.xbmc.unpausejumpback/resources/settings.xml | 30 ++++-
5 files changed, 203 insertions(+), 19 deletions(-)
create mode 100644
script.xbmc.unpausejumpback/resources/language/English/strings.xml
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons