Download id cleanup
This commit is contained in:
@@ -7,7 +7,8 @@ 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, ReleaseInfo
|
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
|
||||||
@@ -27,21 +28,15 @@ class Renamer(Plugin):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
||||||
addApiView('renamer.scan', self.scanView, docs = {
|
addApiView('renamer.scan', self.scanView, docs = {
|
||||||
'desc': 'For the renamer to check for new files to rename',
|
'desc': 'For the renamer to check for new files to rename in a folder',
|
||||||
})
|
|
||||||
|
|
||||||
addEvent('renamer.scan', self.scan)
|
|
||||||
|
|
||||||
addApiView('renamer.scanfolder', self.scanfolderView, docs = {
|
|
||||||
'desc': 'For the renamer to check for new files to rename in a specified folder',
|
|
||||||
'params': {
|
'params': {
|
||||||
'movie_folder': {'desc': 'The folder of the movie to scan'},
|
'movie_folder': {'desc': 'Optional: The folder of the movie to scan. Keep empty for default renamer folder.'},
|
||||||
'downloader' : {'desc': 'Optional: The downloader this movie has been downloaded with'},
|
'downloader' : {'desc': 'Optional: The downloader this movie has been downloaded with'},
|
||||||
'download_id': {'desc': 'Optional: The downloader\'s nzb/torrent ID'},
|
'download_id': {'desc': 'Optional: The downloader\'s nzb/torrent ID'},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
addEvent('renamer.scanfolder', self.scanfolder)
|
addEvent('renamer.scan', self.scan)
|
||||||
addEvent('renamer.check_snatched', self.checkSnatched)
|
addEvent('renamer.check_snatched', self.checkSnatched)
|
||||||
|
|
||||||
addEvent('app.load', self.scan)
|
addEvent('app.load', self.scan)
|
||||||
@@ -67,33 +62,22 @@ class Renamer(Plugin):
|
|||||||
|
|
||||||
def scanView(self):
|
def scanView(self):
|
||||||
|
|
||||||
fireEventAsync('renamer.scan')
|
|
||||||
|
|
||||||
return jsonified({
|
|
||||||
'success': True
|
|
||||||
})
|
|
||||||
|
|
||||||
def scan(self):
|
|
||||||
self.scanfolder()
|
|
||||||
|
|
||||||
def scanfolderView(self):
|
|
||||||
|
|
||||||
params = getParams()
|
params = getParams()
|
||||||
movie_folder = params.get('movie_folder', None)
|
movie_folder = params.get('movie_folder', None)
|
||||||
downloader = params.get('downloader', None)
|
downloader = params.get('downloader', None)
|
||||||
download_id = params.get('download_id', None)
|
download_id = params.get('download_id', None)
|
||||||
|
|
||||||
fireEventAsync('renamer.scanfolder',
|
fireEventAsync('renamer.scan',
|
||||||
movie_folder = movie_folder,
|
movie_folder = movie_folder,
|
||||||
downloader = downloader,
|
downloader = downloader,
|
||||||
download_id = download_id
|
download_id = download_id
|
||||||
)
|
)
|
||||||
|
|
||||||
return jsonified({
|
return jsonified({
|
||||||
'success': True
|
'success': True
|
||||||
})
|
})
|
||||||
|
|
||||||
def scanfolder(self, movie_folder = None, downloader = None, download_id = None):
|
def scan(self, movie_folder = None, downloader = None, download_id = None):
|
||||||
|
|
||||||
if self.isDisabled():
|
if self.isDisabled():
|
||||||
return
|
return
|
||||||
@@ -116,7 +100,7 @@ class Renamer(Plugin):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# make sure the movie folder name is included in the search
|
# make sure the movie folder name is included in the search
|
||||||
folder = None
|
folder = None
|
||||||
movie_files = []
|
movie_files = []
|
||||||
if movie_folder:
|
if movie_folder:
|
||||||
log.info('Scanning movie folder %s...', movie_folder)
|
log.info('Scanning movie folder %s...', movie_folder)
|
||||||
@@ -133,24 +117,19 @@ class Renamer(Plugin):
|
|||||||
db = get_session()
|
db = get_session()
|
||||||
|
|
||||||
# Get the release with the downloader ID that was downloded by the downloader
|
# Get the release with the downloader ID that was downloded by the downloader
|
||||||
download_quality = None
|
download_info = None
|
||||||
download_imdb_id = None
|
if download_id:
|
||||||
if downloader and download_id:
|
rls_info = db.query(ReleaseInfo).filter_by(identifier = 'download_id', value = download_id).first()
|
||||||
# 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:
|
if rls_info:
|
||||||
download_imdb_id = rls.movie.library.identifier
|
download_info = {
|
||||||
download_quality = rls.quality.identifier
|
'imdb_id': rls_info.release.movie.library.identifier,
|
||||||
|
'quality': rls_info.release.quality.identifier,
|
||||||
|
}
|
||||||
else:
|
else:
|
||||||
log.error('Download ID %s from downloader %s not found in releases', (download_id, downloader))
|
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)
|
groups = fireEvent('scanner.scan', folder = folder if folder else self.conf('from'), files = movie_files, download_info = download_info, single = True)
|
||||||
|
|
||||||
destination = self.conf('to')
|
destination = self.conf('to')
|
||||||
folder_name = self.conf('folder_name')
|
folder_name = self.conf('folder_name')
|
||||||
@@ -677,7 +656,7 @@ class Renamer(Plugin):
|
|||||||
elif item['status'] == 'completed':
|
elif item['status'] == 'completed':
|
||||||
log.info('Download of %s completed!', item['name'])
|
log.info('Download of %s completed!', item['name'])
|
||||||
if item['id'] and item['downloader'] and item['folder']:
|
if item['id'] and item['downloader'] and item['folder']:
|
||||||
fireEventAsync('renamer.scanfolder', movie_folder = item['folder'], downloader = item['downloader'], download_id = item['id'])
|
fireEventAsync('renamer.scan', movie_folder = item['folder'], downloader = item['downloader'], download_id = item['id'])
|
||||||
else:
|
else:
|
||||||
scan_required = True
|
scan_required = True
|
||||||
|
|
||||||
|
|||||||
@@ -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, download_imdb_id = None, download_quality = None, simple = False, newer_than = 0, on_found = None):
|
def scan(self, folder = None, files = None, download_info = None, simple = False, newer_than = 0, on_found = None):
|
||||||
|
|
||||||
folder = ss(os.path.normpath(folder))
|
folder = ss(os.path.normpath(folder))
|
||||||
|
|
||||||
@@ -312,12 +312,11 @@ 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
|
# 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:
|
if download_info 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)))
|
log.info('Download ID provided (%s), but more than one group found (%s). Ignoring Download ID...', (download_info.get('imdb_id'), len(valid_files)))
|
||||||
download_imdb_id = None
|
download_info = None
|
||||||
download_quality = None
|
|
||||||
|
|
||||||
# Determine file types
|
# Determine file types
|
||||||
processed_movies = {}
|
processed_movies = {}
|
||||||
@@ -351,7 +350,7 @@ class Scanner(Plugin):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
log.debug('Getting metadata for %s', identifier)
|
log.debug('Getting metadata for %s', identifier)
|
||||||
group['meta_data'] = self.getMetaData(group, folder = folder, download_quality = download_quality)
|
group['meta_data'] = self.getMetaData(group, folder = folder, download_info = download_info)
|
||||||
|
|
||||||
# Subtitle meta
|
# Subtitle meta
|
||||||
group['subtitle_language'] = self.getSubtitleLanguage(group) if not simple else {}
|
group['subtitle_language'] = self.getSubtitleLanguage(group) if not simple else {}
|
||||||
@@ -381,7 +380,7 @@ class Scanner(Plugin):
|
|||||||
del group['unsorted_files']
|
del group['unsorted_files']
|
||||||
|
|
||||||
# Determine movie
|
# Determine movie
|
||||||
group['library'] = self.determineMovie(group, download_imdb_id = download_imdb_id)
|
group['library'] = self.determineMovie(group, download_info = download_info)
|
||||||
if not group['library']:
|
if not group['library']:
|
||||||
log.error('Unable to determine movie: %s', group['identifiers'])
|
log.error('Unable to determine movie: %s', group['identifiers'])
|
||||||
else:
|
else:
|
||||||
@@ -406,7 +405,7 @@ class Scanner(Plugin):
|
|||||||
|
|
||||||
return processed_movies
|
return processed_movies
|
||||||
|
|
||||||
def getMetaData(self, group, folder = '', download_quality = None):
|
def getMetaData(self, group, folder = '', download_info = None):
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
files = list(group['files']['movie'])
|
files = list(group['files']['movie'])
|
||||||
@@ -431,11 +430,11 @@ class Scanner(Plugin):
|
|||||||
# Use the quality guess first, if that failes use the quality we wanted to download
|
# Use the quality guess first, if that failes use the quality we wanted to download
|
||||||
data['quality'] = fireEvent('quality.guess', files = files, extra = data, single = True)
|
data['quality'] = fireEvent('quality.guess', files = files, extra = data, single = True)
|
||||||
if not data['quality']:
|
if not data['quality']:
|
||||||
if download_quality:
|
if download_info and download_info.get('quality'):
|
||||||
data['quality'] = fireEvent('quality.single', download_quality, single = True)
|
data['quality'] = fireEvent('quality.single', download_info.get('quality'), single = True)
|
||||||
else:
|
else:
|
||||||
data['quality'] = fireEvent('quality.single', 'dvdr' if group['is_dvd'] else 'dvdrip', single = True)
|
data['quality'] = fireEvent('quality.single', 'dvdr' if group['is_dvd'] else 'dvdrip', single = True)
|
||||||
|
|
||||||
data['quality_type'] = 'HD' if data.get('resolution_width', 0) >= 1280 or data['quality'].get('hd') else 'SD'
|
data['quality_type'] = 'HD' if data.get('resolution_width', 0) >= 1280 or data['quality'].get('hd') else 'SD'
|
||||||
|
|
||||||
filename = re.sub('(.cp\(tt[0-9{7}]+\))', '', files[0])
|
filename = re.sub('(.cp\(tt[0-9{7}]+\))', '', files[0])
|
||||||
@@ -510,11 +509,12 @@ class Scanner(Plugin):
|
|||||||
|
|
||||||
return detected_languages
|
return detected_languages
|
||||||
|
|
||||||
def determineMovie(self, group, download_imdb_id = None):
|
def determineMovie(self, group, download_info = None):
|
||||||
|
|
||||||
# Get imdb id from downloader
|
# Get imdb id from downloader
|
||||||
imdb_id = download_imdb_id
|
imdb_id = download_info and download_info.get('imdb_id')
|
||||||
if imdb_id:
|
if imdb_id:
|
||||||
log.debug('Found movie via imdb id from it\'s download id: %s', download_imdb_id)
|
log.debug('Found movie via imdb id from it\'s download id: %s', download_info.get('imdb_id'))
|
||||||
|
|
||||||
files = group['files']
|
files = group['files']
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user