mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-26 02:36:10 +00:00
Merge pull request #346 from TrueTechy/fix/start-over
Get resume from Kodi arguments
This commit is contained in:
commit
96d5b61c7c
3 changed files with 9 additions and 21 deletions
|
@ -70,6 +70,7 @@ class Events(object):
|
||||||
elif mode == 'play':
|
elif mode == 'play':
|
||||||
|
|
||||||
item = TheVoid('GetItem', {'Id': params['id'], 'ServerId': server}).get()
|
item = TheVoid('GetItem', {'Id': params['id'], 'ServerId': server}).get()
|
||||||
|
item["resumePlayback"] = sys.argv[3].split(":")[1] == "true"
|
||||||
Actions(server).play(item, params.get('dbid'), params.get('transcode') == 'true', playlist=params.get('playlist') == 'true')
|
Actions(server).play(item, params.get('dbid'), params.get('transcode') == 'true', playlist=params.get('playlist') == 'true')
|
||||||
|
|
||||||
elif mode == 'playlist':
|
elif mode == 'playlist':
|
||||||
|
|
|
@ -414,7 +414,7 @@ class Service(xbmc.Monitor):
|
||||||
properties = [ # TODO: review
|
properties = [ # TODO: review
|
||||||
"jellyfin_state", "jellyfin_serverStatus", "jellyfin_currUser",
|
"jellyfin_state", "jellyfin_serverStatus", "jellyfin_currUser",
|
||||||
|
|
||||||
"jellyfin_play", "jellyfin_online", "jellyfin.connected", "jellyfin.resume", "jellyfin_startup",
|
"jellyfin_play", "jellyfin_online", "jellyfin.connected", "jellyfin_startup",
|
||||||
"jellyfin.external", "jellyfin.external_check", "jellyfin_deviceId", "jellyfin_db_check", "jellyfin_pathverified",
|
"jellyfin.external", "jellyfin.external_check", "jellyfin_deviceId", "jellyfin_db_check", "jellyfin_pathverified",
|
||||||
"jellyfin_sync"
|
"jellyfin_sync"
|
||||||
]
|
]
|
||||||
|
|
|
@ -86,24 +86,22 @@ class Actions(object):
|
||||||
Detect the seektime for video type content.
|
Detect the seektime for video type content.
|
||||||
Verify the default video action set in Kodi for accurate resume behavior.
|
Verify the default video action set in Kodi for accurate resume behavior.
|
||||||
'''
|
'''
|
||||||
seektime = window('jellyfin.resume.bool')
|
|
||||||
window('jellyfin.resume', clear=True)
|
|
||||||
|
|
||||||
if item['MediaType'] in ('Video', 'Audio'):
|
if item['MediaType'] in ('Video', 'Audio'):
|
||||||
resume = item['UserData'].get('PlaybackPositionTicks')
|
resume = item['UserData'].get('PlaybackPositionTicks')
|
||||||
|
|
||||||
if resume and transcode and not seektime:
|
if resume and transcode:
|
||||||
choice = self.resume_dialog(api.API(item, self.server).adjust_resume((resume or 0) / 10000000.0))
|
choice = self.resume_dialog(api.API(item, self.server).adjust_resume((resume or 0) / 10000000.0))
|
||||||
|
|
||||||
if choice is None:
|
if choice is None:
|
||||||
raise Exception("User backed out of resume dialog.")
|
raise Exception("User backed out of resume dialog.")
|
||||||
|
|
||||||
seektime = False if not choice else True
|
item["resumePlayback"] = False if not choice else True
|
||||||
|
|
||||||
if settings('enableCinema.bool') and not seektime:
|
if settings('enableCinema.bool') and not item["resumePlayback"]:
|
||||||
self._set_intros(item)
|
self._set_intros(item)
|
||||||
|
|
||||||
self.set_listitem(item, listitem, db_id, seektime)
|
self.set_listitem(item, listitem, db_id, None)
|
||||||
playutils.set_properties(item, item['PlaybackInfo']['Method'], self.server_id)
|
playutils.set_properties(item, item['PlaybackInfo']['Method'], self.server_id)
|
||||||
self.stack.append([item['PlaybackInfo']['Path'], listitem])
|
self.stack.append([item['PlaybackInfo']['Path'], listitem])
|
||||||
|
|
||||||
|
@ -448,11 +446,12 @@ class Actions(object):
|
||||||
listitem.setProperty('IsPlayable', 'true')
|
listitem.setProperty('IsPlayable', 'true')
|
||||||
listitem.setProperty('IsFolder', 'false')
|
listitem.setProperty('IsFolder', 'false')
|
||||||
|
|
||||||
if obj['Resume'] and seektime is not False:
|
if obj['Resume'] and item.get("resumePlayback"):
|
||||||
listitem.setProperty('resumetime', str(obj['Resume']))
|
listitem.setProperty('resumetime', str(obj['Resume']))
|
||||||
listitem.setProperty('StartPercent', str(((obj['Resume'] / obj['Runtime']) * 100) - 0.40))
|
listitem.setProperty('StartPercent', str(((obj['Resume'] / obj['Runtime']) * 100) - 0.40))
|
||||||
else:
|
else:
|
||||||
listitem.setProperty('resumetime', '0')
|
listitem.setProperty('resumetime', '0')
|
||||||
|
listitem.setProperty('StartPercent', '0')
|
||||||
|
|
||||||
for track in obj['Streams']['video']:
|
for track in obj['Streams']['video']:
|
||||||
listitem.addStreamInfo('video', {
|
listitem.addStreamInfo('video', {
|
||||||
|
@ -807,19 +806,7 @@ def special_listener():
|
||||||
is_playing = player.isPlaying()
|
is_playing = player.isPlaying()
|
||||||
count = int(window('jellyfin.external_count') or 0)
|
count = int(window('jellyfin.external_count') or 0)
|
||||||
|
|
||||||
if (not is_playing and xbmc.getCondVisibility('Window.IsVisible(DialogContextMenu.xml)') and xbmc.getInfoLabel('Control.GetLabel(1002)') == xbmc.getLocalizedString(12021)):
|
if is_playing and not window('jellyfin.external_check'):
|
||||||
|
|
||||||
control = int(xbmcgui.Window(10106).getFocusId())
|
|
||||||
|
|
||||||
if control == 1002: # Start from beginning
|
|
||||||
|
|
||||||
LOG.info("Resume dialog: Start from beginning selected.")
|
|
||||||
window('jellyfin.resume.bool', False)
|
|
||||||
else:
|
|
||||||
LOG.info("Resume dialog: Resume selected.")
|
|
||||||
window('jellyfin.resume.bool', True)
|
|
||||||
|
|
||||||
elif is_playing and not window('jellyfin.external_check'):
|
|
||||||
time = player.getTime()
|
time = player.getTime()
|
||||||
|
|
||||||
if time > 1: # Not external player.
|
if time > 1: # Not external player.
|
||||||
|
|
Loading…
Reference in a new issue