flexget.plugins.input.emit_series
Covered: 19 lines
Missed: 12 lines
Skipped 23 lines
Percent: 61 %
 1
import logging
 2
from flexget.entry import Entry
 3
from flexget.plugin import register_plugin, DependencyError
 5
log = logging.getLogger('emit_series')
 7
try:
 8
    from flexget.plugins.filter.series import Series, Episode, SeriesDatabase
 9
except ImportError, e:
10
    log.error(e.message)
11
    raise DependencyError(issued_by='emit_series', missing='series')
14
class EmitSeries(SeriesDatabase):
15
    """
16
    Emit next episode number from all known series.
18
    Supports only series enumerated by season, episode.
19
    """
21
    def validator(self):
22
        from flexget import validator
23
        return validator.factory('boolean')
25
    def on_feed_input(self, feed, config):
26
        entries = []
27
        for series in feed.session.query(Series).all():
28
            latest = self.get_latest_info(feed.session, series.name)
29
            if not latest:
31
                continue
37
            title = '%s S%02dE%02d' % (series.name, latest['season'], latest['episode'] + 1)
38
            feed.entries.append(Entry(title=title, url=''))
41
            title = '%s %02dx%02d' % (series.name, latest['season'], latest['episode'] + 1)
42
            feed.entries.append(Entry(title=title, url=''))
47
            title = '%s S%02dE%02d' % (series.name, latest['season'] + 1, 1)
48
            feed.entries.append(Entry(title=title, url=''))
50
        return entries
53
register_plugin(EmitSeries, 'emit_series', api_ver=2)