flexget.plugins.output.dump
Covered: 43 lines
Missed: 25 lines
Skipped 22 lines
Percent: 63 %
 1
from flexget.plugin import register_plugin, register_parser_option
 2
import logging
 3
from flexget.utils.tools import console
 5
log = logging.getLogger('dump')
 8
def dump(entries, debug=False, eval_lazy=False):
 9
    """
10
    Dump *entries* to stdout
12
    :param list entries: Entries to be dumped.
13
    :param bool debug: Print non printable fields as well.
14
    :param bool eval_lazy: Evaluate lazy fields.
15
    """
17
    invalid = object()
18
    for entry in entries:
22
        for field in entry:
23
            value = invalid
24
            if entry.is_lazy(field):
25
                if eval_lazy:
26
                    value = entry[field]
27
                else:
28
                    value = '<LazyField - value will be determined when it\'s accessed>'
29
            else:
30
                value = entry[field]
31
            assert value is not invalid
32
            if isinstance(value, basestring):
33
                try:
34
                    console('%-17s: %s' % (field, value.replace('\r', '').replace('\n', '')))
35
                except:
36
                    console('%-17s: %s (warning: unable to print)' % (field, repr(value)))
37
            elif isinstance(value, (int, float, list, dict)):
38
                console('%-17s: %s' % (field, value))
39
            elif value is None:
40
                console('%-17s: %s' % (field, value))
41
            else:
42
                if debug:
43
                    console('%-17s: [not printable] (%s)' % (field, value))
44
        console('')
47
class OutputDump(object):
48
    """
49
    Outputs all entries to console
50
    """
52
    params = None
54
    def validator(self):
55
        from flexget import validator
56
        return validator.factory('boolean')
58
    @staticmethod
59
    def optik(option, opt, value, parser):
60
        if parser.rargs:
61
            OutputDump.params = parser.rargs[0]
62
        else:
63
            OutputDump.params = True
65
    def on_feed_output(self, feed):
66
        if not 'dump' in feed.config and not OutputDump.params:
67
            return
71
        eval_lazy = OutputDump.params == 'eval'
72
        undecided = [entry for entry in feed.entries if not entry in feed.accepted]
73
        if undecided:
74
            console('-- Undecided: --------------------------')
75
            dump(undecided, feed.manager.options.debug, eval_lazy)
76
        if feed.accepted:
77
            console('-- Accepted: ---------------------------')
78
            dump(feed.accepted, feed.manager.options.debug, eval_lazy)
79
        if feed.rejected:
80
            console('-- Rejected: ---------------------------')
81
            dump(feed.rejected, feed.manager.options.debug, eval_lazy)
83
register_plugin(OutputDump, 'dump', builtin=True)
87
register_parser_option('--dump', action='callback', callback=OutputDump.optik,
88
                       help='Display all entries in feed with details. '
89
                            'Arg `--dump eval` will evaluate all lazy fields.')