Improved folder scanning

This commit is contained in:
Ruud
2012-04-16 23:16:04 +02:00
parent cdc3fa530e
commit 9ac2cf35ea
2 changed files with 46 additions and 30 deletions
+17 -14
View File
@@ -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: