flexget.plugins.output.queue_movies
Covered: 14 lines
Missed: 40 lines
Skipped 15 lines
Percent: 25 %
 1
import logging
 2
from flexget.utils import qualities
 3
from flexget.plugin import register_plugin, get_plugin_by_name, DependencyError
 5
try:
 6
    from flexget.plugins.filter.movie_queue import queue_add, QueueError
 7
except ImportError:
 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."""
16
    def validator(self):
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')
23
        return root
25
    def on_feed_output(self, feed, config):
26
        if not config:
27
            return
28
        if not isinstance(config, dict):
29
            config = {}
30
        for entry in feed.accepted:
32
            try:
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')
37
            kwargs = {}
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']
43
                if kwargs:
44
                    break
45
            if not kwargs:
46
                log.warning('Could not determine a movie id for %s, it will not be added to queue.' % entry['title'])
47
                continue
50
            if 'quality' in entry and entry['quality'] != qualities.UNKNOWN:
51
                quality = entry['quality']
52
            else:
53
                quality = config.get('quality', 'ANY')
55
            kwargs['quality'] = quality
56
            force = entry.get('force', config.get('force'))
57
            if force is not None:
58
                kwargs['force'] = force
60
            kwargs['title'] = entry.get('imdb_name') or entry.get('tmdb_name') or entry.get('movie_name')
61
            log.debug('queueing kwargs: %s' % kwargs)
62
            try:
63
                queue_add(**kwargs)
64
            except QueueError, e:
65
                feed.fail(entry, 'Error adding movie to queue: %s' % e.message)
68
register_plugin(QueueMovies, 'queue_movies', api_ver=2)