diff --git a/couchpotato/core/media/__init__.py b/couchpotato/core/media/__init__.py index 4e319fc3..549ed0d7 100755 --- a/couchpotato/core/media/__init__.py +++ b/couchpotato/core/media/__init__.py @@ -26,9 +26,9 @@ class MediaBase(Plugin): def onComplete(): try: media = fireEvent('media.get', media_id, single = True) - event_name = '%s.searcher.single' % media.get('type') - - fireEventAsync(event_name, media, on_complete = self.createNotifyFront(media_id), manual = True) + if media: + event_name = '%s.searcher.single' % media.get('type') + fireEventAsync(event_name, media, on_complete = self.createNotifyFront(media_id), manual = True) except: log.error('Failed creating onComplete: %s', traceback.format_exc()) @@ -39,9 +39,9 @@ class MediaBase(Plugin): def notifyFront(): try: media = fireEvent('media.get', media_id, single = True) - event_name = '%s.update' % media.get('type') - - fireEvent('notify.frontend', type = event_name, data = media) + if media: + event_name = '%s.update' % media.get('type') + fireEvent('notify.frontend', type = event_name, data = media) except: log.error('Failed creating onComplete: %s', traceback.format_exc()) diff --git a/couchpotato/core/media/_base/media/main.py b/couchpotato/core/media/_base/media/main.py index 522d9fbb..ccee1fed 100755 --- a/couchpotato/core/media/_base/media/main.py +++ b/couchpotato/core/media/_base/media/main.py @@ -282,6 +282,10 @@ class MediaPlugin(MediaBase): media = fireEvent('media.get', media_id, single = True) + # Skip if no media has been found + if not media: + continue + # Merge releases with movie dict medias.append(media) diff --git a/couchpotato/core/media/movie/_base/main.py b/couchpotato/core/media/movie/_base/main.py index 0dc39e56..2757a920 100755 --- a/couchpotato/core/media/movie/_base/main.py +++ b/couchpotato/core/media/movie/_base/main.py @@ -179,6 +179,9 @@ class MovieBase(MovieTypeBase): db.delete(rel) movie_dict = fireEvent('media.get', m['_id'], single = True) + if not movie_dict: + log.debug('Failed adding media, can\'t find it anymore') + return False if do_search and search_after: onComplete = self.createOnComplete(m['_id']) diff --git a/couchpotato/core/media/movie/searcher.py b/couchpotato/core/media/movie/searcher.py index 97181aee..7ebaaf54 100755 --- a/couchpotato/core/media/movie/searcher.py +++ b/couchpotato/core/media/movie/searcher.py @@ -89,6 +89,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase): for media_id in medias: media = fireEvent('media.get', media_id, single = True) + if not media: continue try: self.single(media, search_protocols, manual = manual) @@ -388,9 +389,10 @@ class MovieSearcher(SearcherBase, MovieTypeBase): rel['status'] = 'ignored' db.update(rel) - movie_dict = fireEvent('media.get', media_id, single = True) - log.info('Trying next release for: %s', getTitle(movie_dict)) - self.single(movie_dict, manual = manual, force_download = force_download) + media = fireEvent('media.get', media_id, single = True) + if media: + log.info('Trying next release for: %s', getTitle(media)) + self.single(media, manual = manual, force_download = force_download) return True diff --git a/couchpotato/core/plugins/automation.py b/couchpotato/core/plugins/automation.py index 39d7c9e7..e98a00a6 100644 --- a/couchpotato/core/plugins/automation.py +++ b/couchpotato/core/plugins/automation.py @@ -46,7 +46,8 @@ class Automation(Plugin): break movie_dict = fireEvent('media.get', movie_id, single = True) - fireEvent('movie.searcher.single', movie_dict) + if movie_dict: + fireEvent('movie.searcher.single', movie_dict) return True diff --git a/couchpotato/core/plugins/dashboard.py b/couchpotato/core/plugins/dashboard.py index d4af7ad3..afead443 100644 --- a/couchpotato/core/plugins/dashboard.py +++ b/couchpotato/core/plugins/dashboard.py @@ -1,5 +1,6 @@ import random as rndm import time +from CodernityDB.database import RecordDeleted from couchpotato import get_db from couchpotato.api import addApiView @@ -58,7 +59,11 @@ class Dashboard(Plugin): rndm.shuffle(active_ids) for media_id in active_ids: - media = db.get('id', media_id) + try: + media = db.get('id', media_id) + except RecordDeleted: + log.debug('Record already deleted: %s', media_id) + continue pp = profile_pre.get(media.get('profile_id')) if not pp: continue diff --git a/couchpotato/core/plugins/manage.py b/couchpotato/core/plugins/manage.py index 132f7ec0..75c550bf 100755 --- a/couchpotato/core/plugins/manage.py +++ b/couchpotato/core/plugins/manage.py @@ -234,7 +234,8 @@ class Manage(Plugin): total = self.in_progress[folder]['total'] movie_dict = fireEvent('media.get', identifier, single = True) - fireEvent('notify.frontend', type = 'movie.added', data = movie_dict, message = None if total > 5 else 'Added "%s" to manage.' % getTitle(movie_dict)) + if movie_dict: + fireEvent('notify.frontend', type = 'movie.added', data = movie_dict, message = None if total > 5 else 'Added "%s" to manage.' % getTitle(movie_dict)) return afterUpdate