flexget.plugins.metainfo_quality
Covered: 33 lines
Missed: 4 lines
Skipped 13 lines
Percent: 89 %
 1
import logging
 2
from flexget.plugin import *
 3
from flexget.utils import qualities
 5
log = logging.getLogger('metainfo_quality')
 8
class MetainfoQuality(object):
 9
    """
10
    Utility:
12
    Set quality attribute for entries.
13
    """
15
    def validator(self):
16
        from flexget import validator
17
        return validator.factory('boolean')
19
    def on_feed_metainfo(self, feed):
21
        if 'metainfo_quality' in feed.config:
22
            if not feed.config['metainfo_quality']:
23
                return
24
        for entry in feed.entries:
25
            self.get_quality(entry)
27
    def field_order(self, x):
28
        """helper function, iterate entry fields in certain order"""
29
        order = ['title', 'description']
30
        return order.index(x[0]) if x[0] in order else len(order)
32
    def get_quality(self, entry):
33
        for field_name, field_value in sorted(entry.items(),
34
                                              key=self.field_order):
35
            if not isinstance(field_value, basestring):
36
                continue
38
            if field_name in ['feed']:
39
                continue
40
            quality = qualities.parse_quality(field_value)
41
            if quality > qualities.UNKNOWN:
43
                break
44
        entry['quality'] = quality
45
        log.debugall('Found quality %s (%s) for %s from field %s' % \
46
            (entry['quality'], quality, entry['title'], field_name))
47
        return entry
49
register_plugin(MetainfoQuality, 'metainfo_quality', builtin=True)