Source code for flexget.components.estimate_release.estimate_release
from loguru import logger
from flexget import plugin
from flexget.event import event
logger = logger.bind(name='est_released')
[docs]
class EstimateRelease:
"""Front-end for estimator plugins that estimate release times for various things (series, movies)."""
[docs]
def estimate(self, entry):
"""Estimate release schedule for Entry.
:param entry:
:return: estimated date of released for the entry, None if it can't figure it out
"""
logger.debug(entry['title'])
estimators = [
e.instance.estimate for e in plugin.get_plugins(interface='estimate_release')
]
for estimator in sorted(
estimators, key=lambda e: getattr(e, 'priority', plugin.PRIORITY_DEFAULT), reverse=True
):
estimate = estimator(entry)
# return first successful estimation
if estimate is not None:
estimation = estimate
break
else:
estimation = {'data_exists': False, 'entity_date': None}
return estimation
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(EstimateRelease, 'estimate_release', api_ver=2, interfaces=[])