Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get resume from Kodi arguments #346

Merged
merged 2 commits into from
Aug 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions jellyfin_kodi/entrypoint/default.py
Expand Up @@ -70,6 +70,7 @@ def __init__(self):
elif mode == 'play':

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

elif mode == 'playlist':
Expand Down
2 changes: 1 addition & 1 deletion jellyfin_kodi/entrypoint/service.py
Expand Up @@ -414,7 +414,7 @@ def shutdown(self):
properties = [ # TODO: review
"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_sync"
]
Expand Down
27 changes: 7 additions & 20 deletions jellyfin_kodi/objects/actions.py
Expand Up @@ -86,24 +86,22 @@ def set_playlist(self, item, listitem, db_id=None, transcode=False):
Detect the seektime for video type content.
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'):
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))

if choice is None:
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_listitem(item, listitem, db_id, seektime)
self.set_listitem(item, listitem, db_id, None)
playutils.set_properties(item, item['PlaybackInfo']['Method'], self.server_id)
self.stack.append([item['PlaybackInfo']['Path'], listitem])

Expand Down Expand Up @@ -448,11 +446,12 @@ def listitem_video(self, obj, listitem, item, seektime=None, intro=False):
listitem.setProperty('IsPlayable', 'true')
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('StartPercent', str(((obj['Resume'] / obj['Runtime']) * 100) - 0.40))
else:
listitem.setProperty('resumetime', '0')
listitem.setProperty('StartPercent', '0')

for track in obj['Streams']['video']:
listitem.addStreamInfo('video', {
Expand Down Expand Up @@ -807,19 +806,7 @@ def special_listener():
is_playing = player.isPlaying()
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)):

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'):
if is_playing and not window('jellyfin.external_check'):
time = player.getTime()

if time > 1: # Not external player.
Expand Down