diff --git a/couchpotato/core/notifications/core/main.py b/couchpotato/core/notifications/core/main.py index 0b3d1e0..1b1d628 100644 --- a/couchpotato/core/notifications/core/main.py +++ b/couchpotato/core/notifications/core/main.py @@ -25,9 +25,7 @@ class CoreNotifier(Notification): def registerEvents(self): # Library update, frontend refresh - def onLibraryUpdate(data): - fireEvent('notify.frontend', type = 'library.update', data = data) - addEvent('library.update', onLibraryUpdate) + addEvent('library.update_finish', lambda data: fireEvent('notify.frontend', type = 'library.update', data = data)) def notify(self, message = '', data = {}, type = None): self.add(data = { diff --git a/couchpotato/core/plugins/library/main.py b/couchpotato/core/plugins/library/main.py index 71d2a51..c4aeed8 100644 --- a/couchpotato/core/plugins/library/main.py +++ b/couchpotato/core/plugins/library/main.py @@ -49,57 +49,59 @@ class LibraryPlugin(Plugin): library = db.query(Library).filter_by(identifier = identifier).first() done_status = fireEvent('status.get', 'done', single = True) - library_dict = library.to_dict({'titles': {}, 'files':{}}) + library_dict = library.to_dict({'titles': {}, 'files':{}, 'info':{}}) + do_update = True if library.status_id == done_status.get('id') and not force: - return library_dict - - info = fireEvent('provider.movie.info', merge = True, identifier = identifier) - if not info or len(info) == 0: - log.error('Could not update, no movie info to work with: %s' % identifier) - return library_dict + do_update = False + else: + info = fireEvent('provider.movie.info', merge = True, identifier = identifier) + if not info or len(info) == 0: + log.error('Could not update, no movie info to work with: %s' % identifier) + do_update = False # Main info - library.plot = info.get('plot', '') - library.tagline = info.get('tagline', '') - library.year = info.get('year', 0) - library.status_id = done_status.get('id') - db.commit() - - # Titles - [db.delete(title) for title in library.titles] - db.commit() - - titles = info.get('titles', []) - - log.debug('Adding titles: %s' % titles) - for title in titles: - t = LibraryTitle( - title = title, - default = title.lower() == default_title.lower() - ) - library.titles.append(t) + if do_update: + library.plot = info.get('plot', '') + library.tagline = info.get('tagline', '') + library.year = info.get('year', 0) + library.status_id = done_status.get('id') + db.commit() - db.commit() + # Titles + [db.delete(title) for title in library.titles] + db.commit() - # Files - images = info.get('images', []) - for type in images: - for image in images[type]: - if not isinstance(image, str): - continue + titles = info.get('titles', []) - file_path = fireEvent('file.download', url = image, single = True) - file = fireEvent('file.add', path = file_path, type = ('image', type[:-1]), single = True) - try: - file = db.query(File).filter_by(id = file.get('id')).one() - library.files.append(file) - db.commit() - except: - log.debug('Failed to attach to library: %s' % traceback.format_exc()) + log.debug('Adding titles: %s' % titles) + for title in titles: + t = LibraryTitle( + title = title, + default = title.lower() == default_title.lower() + ) + library.titles.append(t) - library_dict = library.to_dict({'titles': {}, 'files':{}}) + db.commit() - fireEvent('library.update', data = library_dict) + # Files + images = info.get('images', []) + for type in images: + for image in images[type]: + if not isinstance(image, str): + continue + + file_path = fireEvent('file.download', url = image, single = True) + file = fireEvent('file.add', path = file_path, type = ('image', type[:-1]), single = True) + try: + file = db.query(File).filter_by(id = file.get('id')).one() + library.files.append(file) + db.commit() + except: + log.debug('Failed to attach to library: %s' % traceback.format_exc()) + + library_dict = library.to_dict({'titles': {}, 'files':{}, 'info':{}}) + + fireEvent('library.update_finish', data = library_dict) return library_dict