Improved folder scanning
This commit is contained in:
@@ -14,8 +14,6 @@ log = CPLog(__name__)
|
||||
|
||||
class Manage(Plugin):
|
||||
|
||||
last_update = 0
|
||||
|
||||
def __init__(self):
|
||||
|
||||
fireEvent('scheduler.interval', identifier = 'manage.update_library', handle = self.updateLibrary, hours = 2)
|
||||
@@ -42,12 +40,14 @@ class Manage(Plugin):
|
||||
})
|
||||
|
||||
|
||||
def updateLibrary(self, full = False):
|
||||
def updateLibrary(self, full = True):
|
||||
last_update = float(Env.prop('manage.last_update'))
|
||||
|
||||
if self.isDisabled() or (self.last_update > time.time() - 20):
|
||||
if self.isDisabled() or (last_update > time.time() - 20):
|
||||
return
|
||||
|
||||
directories = self.directories()
|
||||
added_identifiers = []
|
||||
|
||||
for directory in directories:
|
||||
|
||||
@@ -57,21 +57,24 @@ class Manage(Plugin):
|
||||
continue
|
||||
|
||||
log.info('Updating manage library: %s' % directory)
|
||||
fireEvent('scanner.folder', folder = directory)
|
||||
|
||||
# If cleanup option is enabled, remove offline files from database
|
||||
if self.conf('cleanup'):
|
||||
db = get_session()
|
||||
files_in_path = db.query(File).filter(File.path.like(directory + '%%')).filter_by(available = 0).all()
|
||||
[db.delete(x) for x in files_in_path]
|
||||
db.commit()
|
||||
db.remove()
|
||||
identifiers = fireEvent('scanner.folder', folder = directory, newer_than = last_update, single = True)
|
||||
added_identifiers.extend(identifiers)
|
||||
|
||||
# Break if CP wants to shut down
|
||||
if self.shuttingDown():
|
||||
break
|
||||
|
||||
self.last_update = time.time()
|
||||
# If cleanup option is enabled, remove offline files from database
|
||||
if self.conf('cleanup') and full and not self.shuttingDown():
|
||||
|
||||
# Get movies with done status
|
||||
done_movies = fireEvent('movie.list', status = 'done', single = True)
|
||||
|
||||
for done_movie in done_movies:
|
||||
if done_movie['library']['identifier'] not in added_identifiers:
|
||||
fireEvent('movie.delete', movie_id = done_movie['id'])
|
||||
|
||||
Env.prop('manage.last_update', time.time())
|
||||
|
||||
def directories(self):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user