Merge pull request #669 from croneter/pr_fix_delete

Fix PKC not deleting all the items it should
This commit is contained in:
croneter 2019-02-02 13:42:58 +01:00 committed by GitHub
commit 10e6caf3cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 10 deletions

View file

@ -372,12 +372,17 @@ class FullSync(common.fullsync_mixin):
]) ])
for plex_type, context in kinds: for plex_type, context in kinds:
# Delete movies that are not on Plex anymore # Delete movies that are not on Plex anymore
while True:
with context(self.current_sync) as ctx: with context(self.current_sync) as ctx:
for plex_id in ctx.plexdb.plex_id_by_last_sync(plex_type, plex_ids = list(ctx.plexdb.plex_id_by_last_sync(plex_type,
self.current_sync): self.current_sync,
BATCH_SIZE))
for plex_id in plex_ids:
if self.isCanceled(): if self.isCanceled():
return False return False
ctx.remove(plex_id, plex_type) ctx.remove(plex_id, plex_type)
if len(plex_ids) < BATCH_SIZE:
break
LOG.debug('Done deleting') LOG.debug('Done deleting')
return True return True

View file

@ -100,13 +100,14 @@ class PlexDBBase(object):
method = getattr(self, 'entry_to_%s' % v.PLEX_TYPE_FROM_KODI_TYPE[kodi_type]) method = getattr(self, 'entry_to_%s' % v.PLEX_TYPE_FROM_KODI_TYPE[kodi_type])
return method(self.cursor.fetchone()) return method(self.cursor.fetchone())
def plex_id_by_last_sync(self, plex_type, last_sync): def plex_id_by_last_sync(self, plex_type, last_sync, limit):
""" """
Returns an iterator for all items where the last_sync is NOT identical Returns an iterator for all items where the last_sync is NOT identical
""" """
return (x[0] for x in query = '''
self.cursor.execute('SELECT plex_id FROM %s WHERE last_sync <> ?' % plex_type, SELECT plex_id FROM %s WHERE last_sync <> ? LIMIT %s
(last_sync, ))) ''' % (plex_type, limit)
return (x[0] for x in self.cursor.execute(query, (last_sync, )))
def checksum(self, plex_id, plex_type): def checksum(self, plex_id, plex_type):
""" """