Direct paths: correctly clean up after context menu play

This commit is contained in:
croneter 2018-03-15 10:25:51 +01:00
parent c48ef5012f
commit 4e85b65318
3 changed files with 15 additions and 1 deletions

View file

@ -204,6 +204,14 @@ class KodiDBMethods(object):
self.cursor.execute(query, (file_id, path_id, filename, date_added)) self.cursor.execute(query, (file_id, path_id, filename, date_added))
return file_id return file_id
def clean_file_table(self):
"""
Hack: using Direct Paths, Kodi adds all addon paths to the files table
but without a dateAdded entry. This method cleans up all file entries
without a dateAdded entry - to be called after playback has ended.
"""
self.cursor.execute('DELETE FROM files where dateAdded IS NULL')
def remove_file(self, file_id): def remove_file(self, file_id):
""" """
Removes the entry for file_id from the files table. Will also delete Removes the entry for file_id from the files table. Will also delete

View file

@ -164,7 +164,10 @@ def _ensure_resolve(abort=False):
will be destroyed. will be destroyed.
""" """
if RESOLVE: if RESOLVE:
state.PKC_CAUSED_STOP = True LOG.debug('Passing dummy path to Kodi')
if not state.CONTEXT_MENU_PLAY:
# Because playback won't start with context menu play
state.PKC_CAUSED_STOP = True
result = Playback_Successful() result = Playback_Successful()
result.listitem = PKC_ListItem(path='PKC_Dummy_Path_Which_Fails') result.listitem = PKC_ListItem(path='PKC_Dummy_Path_Which_Fails')
pickle_me(result) pickle_me(result)

View file

@ -53,6 +53,9 @@ def playback_cleanup():
def _record_playstate(status): def _record_playstate(status):
with kodidb.GetKodiDB('video') as kodi_db:
# Hack - remove any obsolete file entries Kodi made
kodi_db.clean_file_table()
if not status['plex_id']: if not status['plex_id']:
LOG.debug('No Plex id found to record playstate for status %s', status) LOG.debug('No Plex id found to record playstate for status %s', status)
return return