Files
addon/specials/nextep.py
2020-01-09 18:42:08 +01:00

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()