2
from flexget.plugin import register_plugin, priority, DependencyError, get_plugin_by_name
4
log = logging.getLogger('limit_new')
7
class FilterLimitNew(object):
9
Limit number of new items.
15
This would allow only one new item to pass trough per execution.
16
Useful for passing torrents slowly into download.
18
Note that since this is per execution, actual rate depends how often
26
from flexget import validator
27
return validator.factory('integer')
29
def on_process_start(self, feed):
31
self.backlog = get_plugin_by_name('backlog').instance
32
except DependencyError:
33
log.warning('Unable utilize backlog plugin, entries may slip trough limit_new in some rare cases')
36
def on_feed_filter(self, feed):
37
if feed.manager.options.learn:
38
log.info('Plugin limit_new is disabled with --learn / --reset')
41
amount = feed.config.get('limit_new', len(feed.entries))
45
for entry in feed.accepted + [e for e in feed.entries if e not in feed.accepted]:
46
# if entry is marked as passed, don't remove it
47
# this is because we used accepted + entries and it may be listed in both ..
52
feed.reject(entry, 'limit exceeded')
54
self.backlog.add_backlog(feed, entry, '48 hours')
57
feed.verbose_progress('Allowed %s (%s)' % (entry['title'], entry['url']))
59
log.debug('Rejected: %s Allowed: %s' % (rejected, len(passed)))
61
register_plugin(FilterLimitNew, 'limit_new')