3
from flexget.plugin import *
5
log = logging.getLogger('interval')
11
Allows specifying minimum interval for feed execution.
13
Format: [n] [minutes|hours|days|months]
21
from flexget import validator
22
root = validator.factory('regexp_match')
23
root.accept('\d+ (minutes|hours|days|weeks)')
26
def on_feed_start(self, feed):
27
if feed.manager.options.interval_ignore or feed.manager.options.learn:
28
log.info('Ignoring feed %s interval' % feed.name)
30
last_time = feed.simple_persistence.setdefault('last_time', datetime.datetime.now())
31
log.debug('last_time: %s' % repr(last_time))
32
amount, unit = feed.config.get('interval').split(' ')
33
log.debug('amount: %s unit: %s' % (repr(amount), repr(unit)))
34
params = {unit: int(amount)}
36
next_time = last_time + datetime.timedelta(**params)
38
raise PluginWarning('Invalid time format', log)
39
log.debug('next_time: %s' % repr(next_time))
40
if datetime.datetime.now() < next_time:
41
log.debug('interval not met')
42
feed.verbose_progress('Interval %s not met on feed %s. Use --now to override.' % (feed.config.get('interval'), feed.name), log)
43
# don't forget the time! force commit! #392
45
feed.abort(silent=True)
47
log.debug('interval passed')
48
feed.simple_persistence.set('last_time', datetime.datetime.now())
50
register_plugin(PluginInterval, 'interval')
51
register_parser_option('--now', action='store_true', dest='interval_ignore', default=False,
52
help='Ignore interval(s)')