2
from flexget.utils import qualities
3
from flexget.plugin import register_plugin, get_plugin_by_name, DependencyError
6
from flexget.plugins.filter.movie_queue import queue_add, QueueError
8
raise DependencyError(issued_by='queue_movies', missing='movie_queue')
10
log = logging.getLogger('queue_movies')
13
class QueueMovies(object):
14
"""Adds all accepted entries to your movie queue."""
17
from flexget import validator
18
root = validator.factory()
19
root.accept('boolean')
20
opts = root.accept('dict')
21
opts.accept('choice', key='quality').accept_choices([q.name for q in qualities.all()], ignore_case=True)
22
opts.accept('boolean', key='force')
25
def on_feed_output(self, feed, config):
28
if not isinstance(config, dict):
30
for entry in feed.accepted:
31
# Tell tmdb_lookup to add lazy lookup fields if not already present
33
get_plugin_by_name('tmdb_lookup').instance.lookup(entry)
34
except DependencyError:
35
log.debug('tmdb_lookup is not available, queue will not work if movie ids are not populated')
36
# Find one or both movie id's for this entry. See if an id is already populated before incurring lazy lookup
38
for lazy in [False, True]:
39
if entry.get('imdb_id', eval_lazy=lazy):
40
kwargs['imdb_id'] = entry['imdb_id']
41
if entry.get('tmdb_id', eval_lazy=lazy):
42
kwargs['tmdb_id'] = entry['tmdb_id']
46
log.warning('Could not determine a movie id for %s, it will not be added to queue.' % entry['title'])
49
# since entries usually have unknown quality we need to ignore that ..
50
if 'quality' in entry and entry['quality'] != qualities.UNKNOWN:
51
quality = entry['quality']
53
quality = config.get('quality', 'ANY')
55
kwargs['quality'] = quality
56
force = entry.get('force', config.get('force'))
58
kwargs['force'] = force
59
# Provide movie title if it is already available, to avoid movie_queue doing a lookup
60
kwargs['title'] = entry.get('imdb_name') or entry.get('tmdb_name') or entry.get('movie_name')
61
log.debug('queueing kwargs: %s' % kwargs)
65
feed.fail(entry, 'Error adding movie to queue: %s' % e.message)
68
register_plugin(QueueMovies, 'queue_movies', api_ver=2)