flexget.plugins.input.gen_series
Covered: 26 lines
Missed: 27 lines
Skipped 18 lines
Percent: 49 %
 1
import logging
 2
import random
 3
import string
 4
from flexget.manager import Session
 5
from flexget.entry import Entry
 6
from flexget import plugin
 8
log = logging.getLogger('gen_series')
10
PER_RUN = 50
13
class GenSeries(plugin.DebugPlugin):
14
    """ Purely for debugging purposes. Not great quality :)
16
    gen_series_data:
17
        series: NUM
18
        seasons: NUM
19
        episodes: NUM
20
        qualities:
21
          - LIST
23
    this will also configure series plugin for testing
24
    """
26
    def __init__(self, plugin_info, *args, **kw):
27
        self.entries = []
29
    def validator(self):
30
        from flexget import validator
31
        container = validator.factory('any')
32
        return container
34
    def on_process_start(self, feed, config):
35
        log.info('Generating test data ...')
36
        series = []
37
        for num in range(config['series']):
38
            series.append('series %d name' % num)
39
            for season in range(int(config['seasons'])):
40
                for episode in range(int(config['episodes'])):
41
                    for quality in config['qualities']:
42
                        entry = Entry()
43
                        entry['title'] = 'series %d name - S%02dE%02d - %s' % \
44
                            (num, season + 1, episode + 1, quality)
45
                        entry['url'] = 'http://localhost/mock/%s' % \
46
                                       ''.join([random.choice(string.letters + string.digits) for x in range(1, 30)])
47
                        self.entries.append(entry)
48
        log.info('Generated %d entries' % len(self.entries))
51
        feed.config['series'] = series
53
    def on_feed_input(self, feed, config):
54
        entries = []
55
        for num, entry in enumerate(self.entries):
56
            entries.append(entry)
57
            if num == PER_RUN - 1:
58
                break
59
        self.entries = self.entries[len(entries):]
60
        return entries
62
    def on_feed_exit(self, feed, config):
63
        if self.entries:
64
            log.info('There are still %d left to be processed!' % len(self.entries))
66
            feed._rerun = True
67
            feed._rerun_count = 0