3
from flexget.plugin import register_plugin, register_parser_option
4
from flexget.utils.tools import parse_timedelta
6
log = logging.getLogger('interval')
9
class PluginInterval(object):
11
Allows specifying minimum interval for feed execution.
13
Format: [n] [minutes|hours|days|weeks]
21
from flexget import validator
22
return validator.factory('interval')
24
def on_feed_start(self, feed, config):
25
if feed.manager.options.learn:
26
log.info('Ignoring feed %s interval for --learn' % feed.name)
28
last_time = feed.simple_persistence.get('last_time')
30
log.info('No previous run recorded, running now')
31
elif feed.manager.options.interval_ignore:
32
log.info('Ignoring interval because of --now')
34
log.debug('last_time: %r' % last_time)
35
log.debug('interval: %s' % config)
36
next_time = last_time + parse_timedelta(config)
37
log.debug('next_time: %r' % next_time)
38
if datetime.datetime.now() < next_time:
39
log.debug('interval not met')
40
log.verbose('Interval %s not met on feed %s. Use --now to override.' % (config, feed.name))
41
feed.abort(silent=True)
43
log.debug('interval passed')
44
feed.simple_persistence['last_time'] = datetime.datetime.now()
46
register_plugin(PluginInterval, 'interval', api_ver=2)
47
register_parser_option('--now', action='store_true', dest='interval_ignore', default=False,
48
help='Ignore interval(s)')