mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-11-10 04:06:11 +00:00
Adjust playback progress monitor
Only track progress report if the item is an emby item
This commit is contained in:
parent
085e243e86
commit
702ce0beac
2 changed files with 31 additions and 28 deletions
|
@ -92,6 +92,7 @@ class Service(xbmc.Monitor):
|
|||
Threads depending on abortRequest will not trigger.
|
||||
'''
|
||||
self.monitor = monitor.Monitor()
|
||||
player = self.monitor.player
|
||||
self.connect = connect.Connect()
|
||||
self.start_default()
|
||||
|
||||
|
@ -105,7 +106,7 @@ class Service(xbmc.Monitor):
|
|||
|
||||
break
|
||||
|
||||
if self.monitor.player.isPlaying():
|
||||
if player.isPlaying() and player.is_playing_file(player.get_playing_file()):
|
||||
difference = datetime.today() - self.settings['last_progress']
|
||||
|
||||
if difference.seconds > 10:
|
||||
|
|
|
@ -10,7 +10,7 @@ import xbmc
|
|||
import xbmcvfs
|
||||
|
||||
from objects.obj import Objects
|
||||
from helper import _, api, window, settings, dialog, event, JSONRPC
|
||||
from helper import _, api, window, settings, dialog, event, silent_catch, JSONRPC
|
||||
from emby import Emby
|
||||
|
||||
#################################################################################################
|
||||
|
@ -32,6 +32,17 @@ class Player(xbmc.Player):
|
|||
self.__dict__ = self._shared_state
|
||||
xbmc.Player.__init__(self)
|
||||
|
||||
@silent_catch()
|
||||
def get_playing_file(self):
|
||||
return self.getPlayingFile()
|
||||
|
||||
@silent_catch()
|
||||
def get_file_info(self, file):
|
||||
return self.played[file]
|
||||
|
||||
def is_playing_file(self, file):
|
||||
return file in self.played
|
||||
|
||||
def onPlayBackStarted(self):
|
||||
|
||||
''' We may need to wait for info to be set in kodi monitor.
|
||||
|
@ -150,11 +161,11 @@ class Player(xbmc.Player):
|
|||
''' Only for after playback started
|
||||
'''
|
||||
LOG.info("Setting audio: %s subs: %s", audio, subtitle)
|
||||
current_file = self.getPlayingFile()
|
||||
current_file = self.get_playing_file()
|
||||
|
||||
if current_file in self.played:
|
||||
if self.is_playing_file(current_file):
|
||||
|
||||
item = self.played[current_file]
|
||||
item = self.get_file_info(current_file)
|
||||
mapping = item['SubsMapping']
|
||||
|
||||
if audio and len(self.getAvailableAudioStreams()) > 1:
|
||||
|
@ -224,8 +235,7 @@ class Player(xbmc.Player):
|
|||
|
||||
def next_up(self):
|
||||
|
||||
current_file = self.getPlayingFile()
|
||||
item = self.played[current_file]
|
||||
item = self.get_file_info(self.get_playing_file())
|
||||
objects = Objects()
|
||||
|
||||
if item['Type'] != 'Episode' or not item.get('CurrentEpisode'):
|
||||
|
@ -266,20 +276,20 @@ class Player(xbmc.Player):
|
|||
event("upnext_data", next_info, hexlify=True)
|
||||
|
||||
def onPlayBackPaused(self):
|
||||
current_file = self.getPlayingFile()
|
||||
current_file = self.get_playing_file()
|
||||
|
||||
if current_file in self.played:
|
||||
if self.is_playing_file(current_file):
|
||||
|
||||
self.played[current_file]['Paused'] = True
|
||||
self.get_file_info(current_file)['Paused'] = True
|
||||
self.report_playback()
|
||||
LOG.debug("-->[ paused ]")
|
||||
|
||||
def onPlayBackResumed(self):
|
||||
current_file = self.getPlayingFile()
|
||||
current_file = self.get_playing_file()
|
||||
|
||||
if current_file in self.played:
|
||||
if self.is_playing_file(current_file):
|
||||
|
||||
self.played[current_file]['Paused'] = False
|
||||
self.get_file_info(current_file)['Paused'] = False
|
||||
self.report_playback()
|
||||
LOG.debug("--<[ paused ]")
|
||||
|
||||
|
@ -287,12 +297,7 @@ class Player(xbmc.Player):
|
|||
|
||||
''' Does not seem to work in Leia??
|
||||
'''
|
||||
try:
|
||||
current_file = self.getPlayingFile()
|
||||
except Exception:
|
||||
return
|
||||
|
||||
if current_file in self.played:
|
||||
if self.is_playing_file(self.get_playing_file()):
|
||||
|
||||
self.report_playback()
|
||||
LOG.info("--[ seek ]")
|
||||
|
@ -302,17 +307,12 @@ class Player(xbmc.Player):
|
|||
''' Report playback progress to emby server.
|
||||
Check if the user seek.
|
||||
'''
|
||||
try:
|
||||
current_file = self.getPlayingFile()
|
||||
|
||||
if current_file not in self.played:
|
||||
return
|
||||
except Exception as error:
|
||||
LOG.error(error)
|
||||
current_file = self.get_playing_file()
|
||||
|
||||
if not self.is_playing_file(current_file):
|
||||
return
|
||||
|
||||
item = self.played[current_file]
|
||||
item = self.get_file_info(current_file)
|
||||
|
||||
if window('emby.external.bool'):
|
||||
return
|
||||
|
@ -388,7 +388,7 @@ class Player(xbmc.Player):
|
|||
LOG.info("Played info: %s", self.played)
|
||||
|
||||
for file in self.played:
|
||||
item = self.played[file]
|
||||
item = self.get_file_info(file)
|
||||
|
||||
if item:
|
||||
window('emby.skip.%s.bool' % item['Id'], True)
|
||||
|
@ -408,6 +408,8 @@ class Player(xbmc.Player):
|
|||
item['Server']['api'].session_stop(data)
|
||||
|
||||
if item.get('LiveStreamId'):
|
||||
|
||||
LOG.info("<[ livestream/%s ]", item['LiveStreamId'])
|
||||
item['Server']['api'].close_live_stream(item['LiveStreamId'])
|
||||
|
||||
elif item['PlayMethod'] == 'Transcode':
|
||||
|
|
Loading…
Reference in a new issue