Source code for flexget.components.estimate_release.estimators.est_series_tvmaze
from loguru import logger
from flexget import plugin
from flexget.event import event
from flexget.utils.tools import split_title_year
logger = logger.bind(name='est_series_tvmaze')
[docs]
class EstimatesSeriesTVMaze:
[docs]
@plugin.priority(2)
def estimate(self, entry):
if not all(field in entry for field in ['series_name', 'series_season']):
return None
series_name = entry['series_name']
season = entry['series_season']
episode_number = entry.get('series_episode')
title, year_match = split_title_year(series_name)
# This value should be added to input plugins to trigger a season lookuo
season_pack = entry.get('season_pack_lookup')
kwargs = {
'tvmaze_id': entry.get('tvmaze_id'),
'tvdb_id': entry.get('tvdb_id') or entry.get('trakt_series_tvdb_id'),
'tvrage_id': entry.get('tvrage_id') or entry.get('trakt_series_tvrage_id'),
'imdb_id': entry.get('imdb_id'),
'show_name': title,
'show_year': entry.get('trakt_series_year')
or entry.get('year')
or entry.get('imdb_year')
or year_match,
'show_network': entry.get('network') or entry.get('trakt_series_network'),
'show_country': entry.get('country') or entry.get('trakt_series_country'),
'show_language': entry.get('language'),
'series_season': season,
'series_episode': episode_number,
'series_name': series_name,
}
api_tvmaze = plugin.get('api_tvmaze', self)
if season_pack:
lookup = api_tvmaze.season_lookup
logger.debug('Searching api_tvmaze for season')
else:
logger.debug('Searching api_tvmaze for episode')
lookup = api_tvmaze.episode_lookup
for k, v in list(kwargs.items()):
if v:
logger.debug('{}: {}', k, v)
entity_data = {'data_exists': True, 'entity_date': None}
entity = {}
try:
entity = lookup(**kwargs)
except LookupError as e:
logger.debug(str(e))
entity_data['data_exists'] = False
if entity and entity.airdate:
logger.debug('received air-date: {}', entity.airdate)
entity_data['entity_date'] = entity.airdate
if not entity_data['data_exists']:
# Make Lookup to series to see if failed because of no episode or no data
lookup = api_tvmaze.series_lookup
series = {}
try:
series = lookup(**kwargs)
except LookupError:
entity_data['data_exists'] = False
if not series:
logger.debug('No data in tvmaze for series: {}', series_name)
entity_data['data_exists'] = False
else:
logger.debug(
'No information to episode, but series {} exists in tvmaze', series_name
)
entity_data['data_exists'] = True
return entity_data
[docs]
@event('plugin.register')
def register_plugin():
plugin.register(
EstimatesSeriesTVMaze, 'est_series_tvmaze', interfaces=['estimate_release'], api_ver=2
)