Add automation genre checking
With this commit you can set requirements to the genres of movie automation downloading. Required sets e.g. Action&Crime and/or ignored sets e.g. Romance&Comedy.
This commit is contained in:
@@ -36,6 +36,20 @@ config = [{
|
|||||||
'unit': 'hours',
|
'unit': 'hours',
|
||||||
'description': 'hours',
|
'description': 'hours',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'name': 'required_genres',
|
||||||
|
'label': 'Required Genres',
|
||||||
|
'default': '',
|
||||||
|
'placeholder': 'Example: Action, Crime & Drama',
|
||||||
|
'description': 'Ignore movies that don\'t contain at least one set of genres. Sets are separated by "," and each word within a set must be separated with "&"'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'ignored_genres',
|
||||||
|
'label': 'Ignored Genres',
|
||||||
|
'default': '',
|
||||||
|
'placeholder': 'Example: Horror, Comedy & Drama & Romance',
|
||||||
|
'description': 'Ignore movies that contain at least one set of genres. Sets are separated by "," and each word within a set must be separated with "&"'
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from couchpotato.core.event import addEvent, fireEvent
|
|||||||
from couchpotato.core.logger import CPLog
|
from couchpotato.core.logger import CPLog
|
||||||
from couchpotato.core.providers.base import Provider
|
from couchpotato.core.providers.base import Provider
|
||||||
from couchpotato.environment import Env
|
from couchpotato.environment import Env
|
||||||
|
from couchpotato.core.helpers.variable import splitString
|
||||||
import time
|
import time
|
||||||
|
|
||||||
log = CPLog(__name__)
|
log = CPLog(__name__)
|
||||||
@@ -59,7 +60,26 @@ class Automation(Provider):
|
|||||||
type_value = movie.get(minimal_type, 0)
|
type_value = movie.get(minimal_type, 0)
|
||||||
type_min = self.getMinimal(minimal_type)
|
type_min = self.getMinimal(minimal_type)
|
||||||
if type_value < type_min:
|
if type_value < type_min:
|
||||||
log.info('%s too low for %s, need %s has %s', (minimal_type, movie['imdb'], type_min, type_value))
|
log.info('%s too low for %s, need %s has %s', (minimal_type, movie['original_title'], type_min, type_value))
|
||||||
|
return False
|
||||||
|
|
||||||
|
movie_genres = [genre.lower() for genre in movie['genres']]
|
||||||
|
required_genres = splitString(self.getMinimal('required_genres').lower())
|
||||||
|
ignored_genres = splitString(self.getMinimal('ignored_genres').lower())
|
||||||
|
|
||||||
|
req_match = 0
|
||||||
|
for req_set in required_genres:
|
||||||
|
req = splitString(req_set, '&')
|
||||||
|
req_match += len(list(set(movie_genres) & set(req))) == len(req)
|
||||||
|
|
||||||
|
if self.getMinimal('required_genres') and req_match == 0:
|
||||||
|
log.info2("Required genre(s) missing for %s" % movie['original_title'])
|
||||||
|
return False
|
||||||
|
|
||||||
|
for ign_set in ignored_genres:
|
||||||
|
ign = splitString(ign_set, '&')
|
||||||
|
if len(list(set(movie_genres) & set(ign))) == len(ign):
|
||||||
|
log.info2("%s has blacklisted genre(s): %s" % (movie['original_title'], ign))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user