158 lines
5.3 KiB
Python
158 lines
5.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
import xbmc, os, urlparse
|
|
from platformcode import config, platformtools, logger
|
|
from time import time, sleep
|
|
from core import scrapertools
|
|
from core import jsontools, filetools
|
|
|
|
normal_window = True if config.get_setting("window_type", "videolibrary") == 0 else False
|
|
|
|
|
|
|
|
def afther_stop(item):
|
|
logger.info()
|
|
condition = config.get_setting('next_ep')
|
|
# from core.support import dbg; dbg()
|
|
|
|
if condition == 1: # Hide servers afther stop video
|
|
while not platformtools.is_playing():
|
|
pass
|
|
while platformtools.is_playing():
|
|
pass
|
|
sleep(0.5)
|
|
xbmc.executebuiltin('Action(Back)')
|
|
|
|
elif condition == 2: # Bring servers afther stop video
|
|
from platformcode.launcher import play_from_library
|
|
# Check if next episode exist
|
|
current_filename = os.path.basename(item.strm_path)
|
|
base_path = os.path.basename(os.path.normpath(os.path.dirname(item.strm_path)))
|
|
logger.info('PATH:' + base_path)
|
|
path = filetools.join(config.get_videolibrary_path(), config.get_setting("folder_tvshows"),base_path)
|
|
logger.info('PATH:' + path)
|
|
fileList = []
|
|
for file in os.listdir(path):
|
|
if file.endswith('.strm'):
|
|
fileList.append(file)
|
|
# from core.support import dbg; dbg()
|
|
nextIndex = fileList.index(current_filename) + 1
|
|
if nextIndex == 0 or nextIndex == len(fileList):
|
|
next_file = None
|
|
else:
|
|
next_file = fileList[nextIndex]
|
|
|
|
# start next episode window afther x time
|
|
if next_file:
|
|
play_next = False
|
|
time_limit = time() + 30
|
|
time_steps = [20,30,40,50,60]
|
|
TimeFromEnd = time_steps[config.get_setting('next_ep_seconds')]
|
|
logger.info('TEMPO: '+str(TimeFromEnd))
|
|
while not platformtools.is_playing() and time() < time_limit:
|
|
sleep(1)
|
|
|
|
sleep(1)
|
|
|
|
while platformtools.is_playing() and play_next == False:
|
|
try:
|
|
Total = xbmc.Player().getTotalTime()
|
|
Actual = xbmc.Player().getTime()
|
|
Difference = Total - Actual
|
|
if Total > TimeFromEnd >= Difference:
|
|
play_next = True
|
|
except:
|
|
break
|
|
|
|
# from core.support import dbg; dbg()
|
|
if play_next:
|
|
play_next = False
|
|
season_ep = next_file.split('.')[0]
|
|
season = season_ep.split('x')[0]
|
|
episode = season_ep.split('x')[1]
|
|
next_ep = '%sx%s' % (season, episode)
|
|
item.contentSeason = item.infoLabels['season'] = season
|
|
item.contentEpisodeNumber = item.infoLabels['episode'] = episode
|
|
item.contentTitle = item.infoLabels['title'] = next_ep
|
|
item.strm_path = filetools.join(base_path, next_file)
|
|
# from core.support import dbg; dbg()
|
|
|
|
global ITEM
|
|
ITEM = item
|
|
nextDialog = NextDialog('NextDialog.xml', config.get_runtime_path())
|
|
nextDialog.show()
|
|
while platformtools.is_playing() and not nextDialog.is_still_watching():
|
|
xbmc.sleep(100)
|
|
pass
|
|
|
|
nextDialog.close()
|
|
logger.info('CONTINUA: ' +str(nextDialog.stillwatching))
|
|
|
|
if nextDialog.stillwatching or nextDialog.continuewatching:
|
|
xbmc.Player().stop()
|
|
if normal_window:
|
|
sleep(1)
|
|
logger.info('BACK STILL')
|
|
xbmc.executebuiltin('Action(Back)')
|
|
else:
|
|
item.no_window = True
|
|
sleep(0.5)
|
|
play_from_library(item)
|
|
else:
|
|
if normal_window:
|
|
sleep(1)
|
|
logger.info('BACK NOT STILL')
|
|
xbmc.executebuiltin('Action(Back)')
|
|
else:
|
|
item.no_window = True
|
|
|
|
|
|
import xbmcgui
|
|
|
|
PLAYER_STOP = 13
|
|
|
|
|
|
class NextDialog(xbmcgui.WindowXMLDialog):
|
|
item = None
|
|
cancel = False
|
|
stillwatching = False
|
|
continuewatching = True
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
logger.info()
|
|
self.action_exitkeys_id = [10, 13]
|
|
self.progress_control = None
|
|
self.item = ITEM
|
|
|
|
def set_still_watching(self, stillwatching):
|
|
self.stillwatching = stillwatching
|
|
|
|
def set_continue_watching(self, continuewatching):
|
|
self.continuewatching = continuewatching
|
|
|
|
def is_still_watching(self):
|
|
return self.stillwatching
|
|
|
|
def onFocus(self, controlId):
|
|
pass
|
|
|
|
def doAction(self):
|
|
pass
|
|
|
|
def closeDialog(self):
|
|
self.close()
|
|
|
|
def onClick(self, controlId):
|
|
if controlId == 3012: # Still watching
|
|
self.set_still_watching(True)
|
|
self.set_continue_watching(False)
|
|
self.close()
|
|
elif controlId == 3013: # Cancel
|
|
self.set_continue_watching(False)
|
|
self.close()
|
|
|
|
def onAction(self, action):
|
|
logger.info()
|
|
if action == PLAYER_STOP:
|
|
self.set_continue_watching(False)
|
|
self.close()
|