Remove hack to detect replaying of the last video - does not work anymore
This commit is contained in:
parent
9f2210a5e7
commit
730ac203ad
1 changed files with 7 additions and 67 deletions
|
@ -17,14 +17,15 @@ from .plex_api import API
|
||||||
from .plex_db import PlexDB
|
from .plex_db import PlexDB
|
||||||
from . import kodi_db
|
from . import kodi_db
|
||||||
from .downloadutils import DownloadUtils as DU
|
from .downloadutils import DownloadUtils as DU
|
||||||
from . import utils, timing, plex_functions as PF, playback
|
from . import utils, timing, plex_functions as PF
|
||||||
from . import json_rpc as js, playqueue as PQ, playlist_func as PL
|
from . import json_rpc as js, playqueue as PQ, playlist_func as PL
|
||||||
from . import backgroundthread, app, variables as v
|
from . import backgroundthread, app, variables as v
|
||||||
|
|
||||||
LOG = getLogger('PLEX.kodimonitor')
|
LOG = getLogger('PLEX.kodimonitor')
|
||||||
|
|
||||||
# "Start from beginning", "Play from beginning"
|
# "Start from beginning", "Play from beginning"
|
||||||
STRINGS = (utils.lang(12021).encode('utf-8'), utils.lang(12023).encode('utf-8'))
|
STRINGS = (utils.lang(12021).encode('utf-8'),
|
||||||
|
utils.lang(12023).encode('utf-8'))
|
||||||
|
|
||||||
|
|
||||||
class KodiMonitor(xbmc.Monitor):
|
class KodiMonitor(xbmc.Monitor):
|
||||||
|
@ -33,7 +34,6 @@ class KodiMonitor(xbmc.Monitor):
|
||||||
"""
|
"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._already_slept = False
|
self._already_slept = False
|
||||||
self.hack_replay = None
|
|
||||||
xbmc.Monitor.__init__(self)
|
xbmc.Monitor.__init__(self)
|
||||||
for playerid in app.PLAYSTATE.player_states:
|
for playerid in app.PLAYSTATE.player_states:
|
||||||
app.PLAYSTATE.player_states[playerid] = copy.deepcopy(app.PLAYSTATE.template)
|
app.PLAYSTATE.player_states[playerid] = copy.deepcopy(app.PLAYSTATE.template)
|
||||||
|
@ -57,9 +57,6 @@ class KodiMonitor(xbmc.Monitor):
|
||||||
Monitor the PKC settings for changes made by the user
|
Monitor the PKC settings for changes made by the user
|
||||||
"""
|
"""
|
||||||
LOG.debug('PKC settings change detected')
|
LOG.debug('PKC settings change detected')
|
||||||
# Assume that the user changed something so we can try to reconnect
|
|
||||||
# app.APP.suspend = False
|
|
||||||
# app.APP.resume_threads(block=False)
|
|
||||||
|
|
||||||
def onNotification(self, sender, method, data):
|
def onNotification(self, sender, method, data):
|
||||||
"""
|
"""
|
||||||
|
@ -69,28 +66,12 @@ class KodiMonitor(xbmc.Monitor):
|
||||||
data = loads(data, 'utf-8')
|
data = loads(data, 'utf-8')
|
||||||
LOG.debug("Method: %s Data: %s", method, data)
|
LOG.debug("Method: %s Data: %s", method, data)
|
||||||
|
|
||||||
# Hack
|
|
||||||
if not method == 'Player.OnStop':
|
|
||||||
self.hack_replay = None
|
|
||||||
|
|
||||||
if method == "Player.OnPlay":
|
if method == "Player.OnPlay":
|
||||||
with app.APP.lock_playqueues:
|
with app.APP.lock_playqueues:
|
||||||
self.PlayBackStart(data)
|
self.PlayBackStart(data)
|
||||||
elif method == "Player.OnStop":
|
elif method == "Player.OnStop":
|
||||||
# Should refresh our video nodes, e.g. on deck
|
with app.APP.lock_playqueues:
|
||||||
# xbmc.executebuiltin('ReloadSkin()')
|
_playback_cleanup(ended=data.get('end'))
|
||||||
if (self.hack_replay and not data.get('end') and
|
|
||||||
self.hack_replay == data['item']):
|
|
||||||
# Hack for add-on paths
|
|
||||||
self.hack_replay = None
|
|
||||||
with app.APP.lock_playqueues:
|
|
||||||
self._hack_addon_paths_replay_video()
|
|
||||||
elif data.get('end'):
|
|
||||||
with app.APP.lock_playqueues:
|
|
||||||
_playback_cleanup(ended=True)
|
|
||||||
else:
|
|
||||||
with app.APP.lock_playqueues:
|
|
||||||
_playback_cleanup()
|
|
||||||
elif method == 'Playlist.OnAdd':
|
elif method == 'Playlist.OnAdd':
|
||||||
if 'item' in data and data['item'].get('type') == v.KODI_TYPE_SHOW:
|
if 'item' in data and data['item'].get('type') == v.KODI_TYPE_SHOW:
|
||||||
# Hitting the "browse" button on tv show info dialog
|
# Hitting the "browse" button on tv show info dialog
|
||||||
|
@ -126,39 +107,6 @@ class KodiMonitor(xbmc.Monitor):
|
||||||
elif method == 'Other.plugin.video.plexkodiconnect_play_action':
|
elif method == 'Other.plugin.video.plexkodiconnect_play_action':
|
||||||
self._start_next_episode(data)
|
self._start_next_episode(data)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _hack_addon_paths_replay_video():
|
|
||||||
"""
|
|
||||||
Hack we need for RESUMABLE items because Kodi lost the path of the
|
|
||||||
last played item that is now being replayed (see playback.py's
|
|
||||||
Player().play()) Also see playqueue.py _compare_playqueues()
|
|
||||||
|
|
||||||
Needed if user re-starts the same video from the library using addon
|
|
||||||
paths. (Video is only added to playqueue, then immediately stoppen.
|
|
||||||
There is no playback initialized by Kodi.) Log excerpts:
|
|
||||||
Method: Playlist.OnAdd Data:
|
|
||||||
{u'item': {u'type': u'movie', u'id': 4},
|
|
||||||
u'playlistid': 1,
|
|
||||||
u'position': 0}
|
|
||||||
Now we would hack!
|
|
||||||
Method: Player.OnStop Data:
|
|
||||||
{u'item': {u'type': u'movie', u'id': 4},
|
|
||||||
u'end': False}
|
|
||||||
(within the same micro-second!)
|
|
||||||
"""
|
|
||||||
LOG.info('Detected re-start of playback of last item')
|
|
||||||
old = app.PLAYSTATE.old_player_states[1]
|
|
||||||
kwargs = {
|
|
||||||
'plex_id': old['plex_id'],
|
|
||||||
'plex_type': old['plex_type'],
|
|
||||||
'path': old['file'],
|
|
||||||
'resolve': False
|
|
||||||
}
|
|
||||||
task = backgroundthread.FunctionAsTask(playback.playback_triage,
|
|
||||||
None,
|
|
||||||
**kwargs)
|
|
||||||
backgroundthread.BGThreader.addTasksToFront([task])
|
|
||||||
|
|
||||||
def _playlist_onadd(self, data):
|
def _playlist_onadd(self, data):
|
||||||
"""
|
"""
|
||||||
Called if an item is added to a Kodi playlist. Example data dict:
|
Called if an item is added to a Kodi playlist. Example data dict:
|
||||||
|
@ -171,15 +119,7 @@ class KodiMonitor(xbmc.Monitor):
|
||||||
}
|
}
|
||||||
Will NOT be called if playback initiated by Kodi widgets
|
Will NOT be called if playback initiated by Kodi widgets
|
||||||
"""
|
"""
|
||||||
if 'id' not in data['item']:
|
pass
|
||||||
return
|
|
||||||
old = app.PLAYSTATE.old_player_states[data['playlistid']]
|
|
||||||
if (not app.SYNC.direct_paths and
|
|
||||||
data['position'] == 0 and data['playlistid'] == 1 and
|
|
||||||
not PQ.PLAYQUEUES[data['playlistid']].items and
|
|
||||||
data['item']['type'] == old['kodi_type'] and
|
|
||||||
data['item']['id'] == old['kodi_id']):
|
|
||||||
self.hack_replay = data['item']
|
|
||||||
|
|
||||||
def _playlist_onremove(self, data):
|
def _playlist_onremove(self, data):
|
||||||
"""
|
"""
|
||||||
|
@ -451,7 +391,7 @@ def _playback_cleanup(ended=False):
|
||||||
app.PLAYSTATE.active_players = set()
|
app.PLAYSTATE.active_players = set()
|
||||||
app.PLAYSTATE.item = None
|
app.PLAYSTATE.item = None
|
||||||
utils.delete_temporary_subtitles()
|
utils.delete_temporary_subtitles()
|
||||||
LOG.info('Finished PKC playback cleanup')
|
LOG.debug('Finished PKC playback cleanup')
|
||||||
|
|
||||||
|
|
||||||
def _record_playstate(status, ended):
|
def _record_playstate(status, ended):
|
||||||
|
|
Loading…
Reference in a new issue