Merge branch 'develop'
This commit is contained in:
commit
f2ab59e384
8 files changed
+37
-12
No files matched your search
@@ -166,7 +166,8 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
|||||||
'quality': q_identifier,
|
'quality': q_identifier,
|
||||||
'finish': profile['finish'][index],
|
'finish': profile['finish'][index],
|
||||||
'wait_for': tryInt(profile['wait_for'][index]),
|
'wait_for': tryInt(profile['wait_for'][index]),
|
||||||
'3d': profile['3d'][index] if profile.get('3d') else False
|
'3d': profile['3d'][index] if profile.get('3d') else False,
|
||||||
|
'minimum_score': profile.get('minimum_score', 1),
|
||||||
}
|
}
|
||||||
|
|
||||||
could_not_be_released = not self.couldBeReleased(q_identifier in pre_releases, release_dates, movie['info']['year'])
|
could_not_be_released = not self.couldBeReleased(q_identifier in pre_releases, release_dates, movie['info']['year'])
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ class ProfilePlugin(Plugin):
|
|||||||
'label': toUnicode(kwargs.get('label')),
|
'label': toUnicode(kwargs.get('label')),
|
||||||
'order': tryInt(kwargs.get('order', 999)),
|
'order': tryInt(kwargs.get('order', 999)),
|
||||||
'core': kwargs.get('core', False),
|
'core': kwargs.get('core', False),
|
||||||
|
'minimum_score': tryInt(kwargs.get('minimum_score', 1)),
|
||||||
'qualities': [],
|
'qualities': [],
|
||||||
'wait_for': [],
|
'wait_for': [],
|
||||||
'stop_after': [],
|
'stop_after': [],
|
||||||
@@ -217,6 +218,7 @@ class ProfilePlugin(Plugin):
|
|||||||
'label': toUnicode(profile.get('label')),
|
'label': toUnicode(profile.get('label')),
|
||||||
'order': order,
|
'order': order,
|
||||||
'qualities': profile.get('qualities'),
|
'qualities': profile.get('qualities'),
|
||||||
|
'minimum_score': 1,
|
||||||
'finish': [],
|
'finish': [],
|
||||||
'wait_for': [],
|
'wait_for': [],
|
||||||
'stop_after': [],
|
'stop_after': [],
|
||||||
|
|||||||
@@ -51,6 +51,11 @@
|
|||||||
margin: 0 5px !important;
|
margin: 0 5px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.profile .wait_for .minimum_score_input {
|
||||||
|
width: 40px !important;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
.profile .types {
|
.profile .types {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0 20px 0 -4px;
|
margin: 0 20px 0 -4px;
|
||||||
|
|||||||
@@ -53,12 +53,21 @@ var Profile = new Class({
|
|||||||
}),
|
}),
|
||||||
new Element('span', {'text':'day(s) for a better quality '}),
|
new Element('span', {'text':'day(s) for a better quality '}),
|
||||||
new Element('span.advanced', {'text':'and keep searching'}),
|
new Element('span.advanced', {'text':'and keep searching'}),
|
||||||
|
|
||||||
// "After a checked quality is found and downloaded, continue searching for even better quality releases for the entered number of days."
|
// "After a checked quality is found and downloaded, continue searching for even better quality releases for the entered number of days."
|
||||||
new Element('input.inlay.xsmall.stop_after_input.advanced', {
|
new Element('input.inlay.xsmall.stop_after_input.advanced', {
|
||||||
'type':'text',
|
'type':'text',
|
||||||
'value': data.stop_after && data.stop_after.length > 0 ? data.stop_after[0] : 0
|
'value': data.stop_after && data.stop_after.length > 0 ? data.stop_after[0] : 0
|
||||||
}),
|
}),
|
||||||
new Element('span.advanced', {'text':'day(s) for a better (checked) quality.'})
|
new Element('span.advanced', {'text':'day(s) for a better (checked) quality.'}),
|
||||||
|
|
||||||
|
// Minimum score of
|
||||||
|
new Element('span.advanced', {'html':'<br/>Releases need a minimum score of'}),
|
||||||
|
new Element('input.advanced.inlay.xsmall.minimum_score_input', {
|
||||||
|
'size': 4,
|
||||||
|
'type':'text',
|
||||||
|
'value': data.minimum_score || 1
|
||||||
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -126,6 +135,7 @@ var Profile = new Class({
|
|||||||
'label' : self.el.getElement('.quality_label input').get('value'),
|
'label' : self.el.getElement('.quality_label input').get('value'),
|
||||||
'wait_for' : self.el.getElement('.wait_for_input').get('value'),
|
'wait_for' : self.el.getElement('.wait_for_input').get('value'),
|
||||||
'stop_after' : self.el.getElement('.stop_after_input').get('value'),
|
'stop_after' : self.el.getElement('.stop_after_input').get('value'),
|
||||||
|
'minimum_score' : self.el.getElement('.minimum_score_input').get('value'),
|
||||||
'types': []
|
'types': []
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ class QualityPlugin(Plugin):
|
|||||||
{'identifier': 'dvdr', 'size': (3000, 10000), 'median_size': 4500, 'label': 'DVD-R', 'alternative': ['br2dvd', ('dvd', 'r')], 'allow': [], 'ext':['iso', 'img', 'vob'], 'tags': ['pal', 'ntsc', 'video_ts', 'audio_ts', ('dvd', 'r'), 'dvd9']},
|
{'identifier': 'dvdr', 'size': (3000, 10000), 'median_size': 4500, 'label': 'DVD-R', 'alternative': ['br2dvd', ('dvd', 'r')], 'allow': [], 'ext':['iso', 'img', 'vob'], 'tags': ['pal', 'ntsc', 'video_ts', 'audio_ts', ('dvd', 'r'), 'dvd9']},
|
||||||
{'identifier': 'dvdrip', 'size': (600, 2400), 'median_size': 1500, 'label': 'DVD-Rip', 'width': 720, 'alternative': [('dvd', 'rip')], 'allow': [], 'ext':['avi'], 'tags': [('dvd', 'rip'), ('dvd', 'xvid'), ('dvd', 'divx')]},
|
{'identifier': 'dvdrip', 'size': (600, 2400), 'median_size': 1500, 'label': 'DVD-Rip', 'width': 720, 'alternative': [('dvd', 'rip')], 'allow': [], 'ext':['avi'], 'tags': [('dvd', 'rip'), ('dvd', 'xvid'), ('dvd', 'divx')]},
|
||||||
{'identifier': 'scr', 'size': (600, 1600), 'median_size': 700, 'label': 'Screener', 'alternative': ['screener', 'dvdscr', 'ppvrip', 'dvdscreener', 'hdscr', 'webrip', ('web', 'rip')], 'allow': ['dvdr', 'dvdrip', '720p', '1080p'], 'ext':[], 'tags': []},
|
{'identifier': 'scr', 'size': (600, 1600), 'median_size': 700, 'label': 'Screener', 'alternative': ['screener', 'dvdscr', 'ppvrip', 'dvdscreener', 'hdscr', 'webrip', ('web', 'rip')], 'allow': ['dvdr', 'dvdrip', '720p', '1080p'], 'ext':[], 'tags': []},
|
||||||
{'identifier': 'r5', 'size': (600, 1000), 'median_size': 700, 'label': 'R5', 'alternative': ['r6'], 'allow': ['dvdr', '720p'], 'ext':[]},
|
{'identifier': 'r5', 'size': (600, 1000), 'median_size': 700, 'label': 'R5', 'alternative': ['r6'], 'allow': ['dvdr', '720p', '1080p'], 'ext':[]},
|
||||||
{'identifier': 'tc', 'size': (600, 1000), 'median_size': 700, 'label': 'TeleCine', 'alternative': ['telecine'], 'allow': ['720p'], 'ext':[]},
|
{'identifier': 'tc', 'size': (600, 1000), 'median_size': 700, 'label': 'TeleCine', 'alternative': ['telecine'], 'allow': ['720p', '1080p'], 'ext':[]},
|
||||||
{'identifier': 'ts', 'size': (600, 1000), 'median_size': 700, 'label': 'TeleSync', 'alternative': ['telesync', 'hdts'], 'allow': ['720p'], 'ext':[]},
|
{'identifier': 'ts', 'size': (600, 1000), 'median_size': 700, 'label': 'TeleSync', 'alternative': ['telesync', 'hdts'], 'allow': ['720p', '1080p'], 'ext':[]},
|
||||||
{'identifier': 'cam', 'size': (600, 1000), 'median_size': 700, 'label': 'Cam', 'alternative': ['camrip', 'hdcam'], 'allow': ['720p'], 'ext':[]}
|
{'identifier': 'cam', 'size': (600, 1000), 'median_size': 700, 'label': 'Cam', 'alternative': ['camrip', 'hdcam'], 'allow': ['720p', '1080p'], 'ext':[]}
|
||||||
]
|
]
|
||||||
pre_releases = ['cam', 'ts', 'tc', 'r5', 'scr']
|
pre_releases = ['cam', 'ts', 'tc', 'r5', 'scr']
|
||||||
threed_tags = {
|
threed_tags = {
|
||||||
@@ -278,6 +278,8 @@ class QualityPlugin(Plugin):
|
|||||||
'ext': 5,
|
'ext': 5,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scored_on = []
|
||||||
|
|
||||||
# Check alt and tags
|
# Check alt and tags
|
||||||
for tag_type in ['identifier', 'alternative', 'tags', 'label']:
|
for tag_type in ['identifier', 'alternative', 'tags', 'label']:
|
||||||
qualities = quality.get(tag_type, [])
|
qualities = quality.get(tag_type, [])
|
||||||
@@ -289,10 +291,13 @@ class QualityPlugin(Plugin):
|
|||||||
log.debug('Found %s via %s %s in %s', (quality['identifier'], tag_type, quality.get(tag_type), cur_file))
|
log.debug('Found %s via %s %s in %s', (quality['identifier'], tag_type, quality.get(tag_type), cur_file))
|
||||||
score += points.get(tag_type)
|
score += points.get(tag_type)
|
||||||
|
|
||||||
if isinstance(alt, (str, unicode)) and ss(alt.lower()) in words:
|
if isinstance(alt, (str, unicode)) and ss(alt.lower()) in words and ss(alt.lower()) not in scored_on:
|
||||||
log.debug('Found %s via %s %s in %s', (quality['identifier'], tag_type, quality.get(tag_type), cur_file))
|
log.debug('Found %s via %s %s in %s', (quality['identifier'], tag_type, quality.get(tag_type), cur_file))
|
||||||
score += points.get(tag_type)
|
score += points.get(tag_type)
|
||||||
|
|
||||||
|
# Don't score twice on same tag
|
||||||
|
scored_on.append(ss(alt).lower())
|
||||||
|
|
||||||
# Check extention
|
# Check extention
|
||||||
for ext in quality.get('ext', []):
|
for ext in quality.get('ext', []):
|
||||||
if ext == extension:
|
if ext == extension:
|
||||||
@@ -485,6 +490,7 @@ class QualityPlugin(Plugin):
|
|||||||
'Movie Name (2015).mp4': {'size': 6500, 'quality': 'brrip'},
|
'Movie Name (2015).mp4': {'size': 6500, 'quality': 'brrip'},
|
||||||
'Movie Name.2014.720p Web-Dl Aac2.0 h264-ReleaseGroup': {'size': 3800, 'quality': 'brrip'},
|
'Movie Name.2014.720p Web-Dl Aac2.0 h264-ReleaseGroup': {'size': 3800, 'quality': 'brrip'},
|
||||||
'Movie Name.2014.720p.WEBRip.x264.AC3-ReleaseGroup': {'size': 3000, 'quality': 'scr'},
|
'Movie Name.2014.720p.WEBRip.x264.AC3-ReleaseGroup': {'size': 3000, 'quality': 'scr'},
|
||||||
|
'Movie.Name.2014.1080p.HDCAM.-.ReleaseGroup': {'size': 5300, 'quality': 'cam'},
|
||||||
}
|
}
|
||||||
|
|
||||||
correct = 0
|
correct = 0
|
||||||
|
|||||||
@@ -389,8 +389,8 @@ class Release(Plugin):
|
|||||||
log.info('Ignored: %s', rel['name'])
|
log.info('Ignored: %s', rel['name'])
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if rel['score'] <= 0:
|
if rel['score'] < quality_custom.get('minimum_score'):
|
||||||
log.info('Ignored, score "%s" to low: %s', (rel['score'], rel['name']))
|
log.info('Ignored, score "%s" to low, need at least "%s": %s', (rel['score'], quality_custom.get('minimum_score'), rel['name']))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if rel['size'] <= 50:
|
if rel['size'] <= 50:
|
||||||
|
|||||||
@@ -222,8 +222,8 @@ class Renamer(Plugin):
|
|||||||
|
|
||||||
cd_keys = ['<cd>','<cd_nr>', '<original>']
|
cd_keys = ['<cd>','<cd_nr>', '<original>']
|
||||||
if not any(x in folder_name for x in cd_keys) and not any(x in file_name for x in cd_keys):
|
if not any(x in folder_name for x in cd_keys) and not any(x in file_name for x in cd_keys):
|
||||||
log.error('Missing `cd` or `cd_nr` in the renamer. This will cause multi-file releases of being renamed to the same file.'
|
log.error('Missing `cd` or `cd_nr` in the renamer. This will cause multi-file releases of being renamed to the same file. '
|
||||||
'Force adding it')
|
'Please add it in the renamer settings. Force adding it for now.')
|
||||||
file_name = '%s %s' % ('<cd>', file_name)
|
file_name = '%s %s' % ('<cd>', file_name)
|
||||||
|
|
||||||
# Tag release folder as failed_rename in case no groups were found. This prevents check_snatched from removing the release from the downloader.
|
# Tag release folder as failed_rename in case no groups were found. This prevents check_snatched from removing the release from the downloader.
|
||||||
|
|||||||
@@ -116,7 +116,8 @@ def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, En
|
|||||||
|
|
||||||
# Delete non zip files
|
# Delete non zip files
|
||||||
if len(ints) != 1:
|
if len(ints) != 1:
|
||||||
os.remove(os.path.join(root, backup_file))
|
try: os.remove(os.path.join(root, backup_file))
|
||||||
|
except: pass
|
||||||
else:
|
else:
|
||||||
existing_backups.append((int(ints[0]), backup_file))
|
existing_backups.append((int(ints[0]), backup_file))
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in new issue
Block a user