diff --git a/couchpotato/core/plugins/renamer/main.py b/couchpotato/core/plugins/renamer/main.py index 4bd96d79..96d84b83 100644 --- a/couchpotato/core/plugins/renamer/main.py +++ b/couchpotato/core/plugins/renamer/main.py @@ -2,12 +2,12 @@ from couchpotato import get_session from couchpotato.api import addApiView from couchpotato.core.event import addEvent, fireEvent, fireEventAsync from couchpotato.core.helpers.encoding import toUnicode, ss -from couchpotato.core.helpers.request import getParams, jsonified, getParam +from couchpotato.core.helpers.request import getParams, jsonified from couchpotato.core.helpers.variable import getExt, mergeDicts, getTitle, \ getImdb from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import Library, File, Profile, Release +from couchpotato.core.settings.model import Library, File, Profile, Release, ReleaseInfo from couchpotato.environment import Env import errno import os @@ -118,15 +118,28 @@ class Renamer(Plugin): except: log.error('Failed getting files from %s: %s', (movie_folder, traceback.format_exc())) - groups = fireEvent('scanner.scan', folder = folder if folder else self.conf('from'), files = movie_files, downloader = downloader, download_id = download_id, single = True) + db = get_session() - # Make sure only one movie was found if a download ID is provided - if downloader and download_id and not len(groups) == 1: - log.info('Download ID provided (%s), but more than one group found (%s). Ignoring Download ID...', (download_id, len(groups))) - downloader = None - download_id = None - groups = fireEvent('scanner.scan', folder = folder if folder else self.conf('from'), files = movie_files, single = True) + # Get the release with the downloader ID that was downloded by the downloader + download_quality = None + download_imdb_id = None + if downloader and download_id: + # NOTE TO RUUD: Don't really know how to do this better... but there must be a way...? + rlsnfo_dwnlds = db.query(ReleaseInfo).filter_by(identifier = 'download_downloader', value = downloader) + rlsnfo_ids = db.query(ReleaseInfo).filter_by(identifier = 'download_id', value = download_id) + for rlsnfo_dwnld in rlsnfo_dwnlds: + for rlsnfo_id in rlsnfo_ids: + if rlsnfo_id.release == rlsnfo_dwnld.release: + rls = rlsnfo_id.release + + if rls: + download_imdb_id = rls.movie.library.identifier + download_quality = rls.quality.identifier + else: + log.error('Download ID %s from downloader %s not found in releases', (download_id, downloader)) + groups = fireEvent('scanner.scan', folder = folder if folder else self.conf('from'), files = movie_files, download_quality = download_quality, download_imdb_id = download_imdb_id, single = True) + destination = self.conf('to') folder_name = self.conf('folder_name') file_name = self.conf('file_name') @@ -140,8 +153,6 @@ class Renamer(Plugin): downloaded_status = fireEvent('status.get', 'downloaded', single = True) snatched_status = fireEvent('status.get', 'snatched', single = True) - db = get_session() - for group_identifier in groups: group = groups[group_identifier] diff --git a/couchpotato/core/plugins/scanner/main.py b/couchpotato/core/plugins/scanner/main.py index c35d0418..d714481e 100644 --- a/couchpotato/core/plugins/scanner/main.py +++ b/couchpotato/core/plugins/scanner/main.py @@ -4,7 +4,7 @@ from couchpotato.core.helpers.encoding import toUnicode, simplifyString, ss from couchpotato.core.helpers.variable import getExt, getImdb, tryInt from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin -from couchpotato.core.settings.model import File, Movie, Release, ReleaseInfo +from couchpotato.core.settings.model import File, Movie from enzyme.exceptions import NoParserError, ParseError from guessit import guess_movie_info from subliminal.videos import Video @@ -101,7 +101,7 @@ class Scanner(Plugin): addEvent('scanner.name_year', self.getReleaseNameYear) addEvent('scanner.partnumber', self.getPartNumber) - def scan(self, folder = None, files = None, downloader = None, download_id = None, simple = False, newer_than = 0, on_found = None): + def scan(self, folder = None, files = None, download_imdb_id = None, download_quality = None, simple = False, newer_than = 0, on_found = None): folder = ss(os.path.normpath(folder)) @@ -128,24 +128,6 @@ class Scanner(Plugin): db = get_session() - # Get the release with the downloader ID that was downloded by the downloader - download_quality = None - download_imdb_id = None - if downloader and download_id: - # NOTE TO RUUD: Don't really know how to do this better... but there must be a way...? - rlsnfo_dwnlds = db.query(ReleaseInfo).filter_by(identifier = 'download_downloader', value = downloader) - rlsnfo_ids = db.query(ReleaseInfo).filter_by(identifier = 'download_id', value = download_id) - for rlsnfo_dwnld in rlsnfo_dwnlds: - for rlsnfo_id in rlsnfo_ids: - if rlsnfo_id.release == rlsnfo_dwnld.release: - rls = rlsnfo_id.release - - if rls: - download_imdb_id = rls.movie.library.identifier - download_quality = rls.quality.identifier - else: - log.error('Download ID %s from downloader %s not found in releases', (download_id, downloader)) - for file_path in files: if not os.path.exists(file_path): @@ -330,6 +312,12 @@ class Scanner(Plugin): valid_files[identifier] = group del movie_files + + # Make sure only one movie was found if a download ID is provided + if download_imdb_id and download_quality and not len(valid_files) == 1: + log.info('Download ID provided (%s), but more than one group found (%s). Ignoring Download ID...', (download_imdb_id, len(valid_files))) + download_imdb_id = None + download_quality = None # Determine file types processed_movies = {}