Move around items between scanner and renamer

This commit is contained in:
mano3m committed 2013-04-01 13:03:05 +02:00
1 parent 45b9919f67
commit 2851781a72
2 files changed
+30 -31

No files matched your search

+22 -11
View File
@@ -2,12 +2,12 @@ from couchpotato import get_session
from couchpotato.api import addApiView from couchpotato.api import addApiView
from couchpotato.core.event import addEvent, fireEvent, fireEventAsync from couchpotato.core.event import addEvent, fireEvent, fireEventAsync
from couchpotato.core.helpers.encoding import toUnicode, ss 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, \ from couchpotato.core.helpers.variable import getExt, mergeDicts, getTitle, \
getImdb getImdb
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin 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 from couchpotato.environment import Env
import errno import errno
import os import os
@@ -118,15 +118,28 @@ class Renamer(Plugin):
except: except:
log.error('Failed getting files from %s: %s', (movie_folder, traceback.format_exc())) 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 # Get the release with the downloader ID that was downloded by the downloader
if downloader and download_id and not len(groups) == 1: download_quality = None
log.info('Download ID provided (%s), but more than one group found (%s). Ignoring Download ID...', (download_id, len(groups))) download_imdb_id = None
downloader = None if downloader and download_id:
download_id = None # NOTE TO RUUD: Don't really know how to do this better... but there must be a way...?
groups = fireEvent('scanner.scan', folder = folder if folder else self.conf('from'), files = movie_files, single = True) 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') destination = self.conf('to')
folder_name = self.conf('folder_name') folder_name = self.conf('folder_name')
file_name = self.conf('file_name') file_name = self.conf('file_name')
@@ -140,8 +153,6 @@ class Renamer(Plugin):
downloaded_status = fireEvent('status.get', 'downloaded', single = True) downloaded_status = fireEvent('status.get', 'downloaded', single = True)
snatched_status = fireEvent('status.get', 'snatched', single = True) snatched_status = fireEvent('status.get', 'snatched', single = True)
db = get_session()
for group_identifier in groups: for group_identifier in groups:
group = groups[group_identifier] group = groups[group_identifier]
+8 -20
View File
@@ -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.helpers.variable import getExt, getImdb, tryInt
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin 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 enzyme.exceptions import NoParserError, ParseError
from guessit import guess_movie_info from guessit import guess_movie_info
from subliminal.videos import Video from subliminal.videos import Video
@@ -101,7 +101,7 @@ class Scanner(Plugin):
addEvent('scanner.name_year', self.getReleaseNameYear) addEvent('scanner.name_year', self.getReleaseNameYear)
addEvent('scanner.partnumber', self.getPartNumber) 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)) folder = ss(os.path.normpath(folder))
@@ -128,24 +128,6 @@ class Scanner(Plugin):
db = get_session() 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: for file_path in files:
if not os.path.exists(file_path): if not os.path.exists(file_path):
@@ -330,6 +312,12 @@ class Scanner(Plugin):
valid_files[identifier] = group valid_files[identifier] = group
del movie_files 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 # Determine file types
processed_movies = {} processed_movies = {}