def get(self, tvdb_id, session=None): args = episode_parser.parse_args() language = args['language'] absolute_number = args.get('absolute_number') season_number = args.get('season_number') ep_number = args.get('ep_number') air_date = args.get('air_date') if not ((season_number and ep_number) or absolute_number or air_date): raise BadRequest('not enough parameters for lookup. Either season and episode number or absolute number ' 'are required.') kwargs = {'tvdb_id': tvdb_id, 'session': session, 'language': language} if absolute_number: kwargs['absolute_number'] = absolute_number if season_number and ep_number: kwargs['season_number'] = season_number kwargs['episode_number'] = ep_number if air_date: kwargs['first_aired'] = air_date try: episode = lookup_episode(**kwargs) except LookupError as e: raise NotFoundError(e.args[0]) return jsonify(episode.to_dict())
def lazy_episode_lookup(self, entry): try: season_offset = entry.get('thetvdb_lookup_season_offset', 0) episode_offset = entry.get('thetvdb_lookup_episode_offset', 0) if not isinstance(season_offset, int): log.error('thetvdb_lookup_season_offset must be an integer') season_offset = 0 if not isinstance(episode_offset, int): log.error('thetvdb_lookup_episode_offset must be an integer') episode_offset = 0 if season_offset != 0 or episode_offset != 0: log.debug('Using offset for tvdb lookup: season: %s, episode: %s' % (season_offset, episode_offset)) lookupargs = {'name': entry.get('series_name', eval_lazy=False), 'tvdb_id': entry.get('tvdb_id', eval_lazy=False)} if entry['series_id_type'] == 'ep': lookupargs['season_number'] = entry['series_season'] + season_offset lookupargs['episode_number'] = entry['series_episode'] + episode_offset elif entry['series_id_type'] == 'sequence': lookupargs['absolute_number'] = entry['series_id'] + episode_offset elif entry['series_id_type'] == 'date': # TODO: Should thetvdb_lookup_episode_offset be used for date lookups as well? lookupargs['first_aired'] = entry['series_date'] episode = lookup_episode(**lookupargs) entry.update_using_map(self.episode_map, episode) except LookupError as e: log.debug('Error looking up tvdb episode information for %s: %s' % (entry['title'], e.args[0]))
def get(self, tvdb_id, session=None): """TheTVDB episode lookup""" args = episode_parser.parse_args() language = args['language'] absolute_number = args.get('absolute_number') season_number = args.get('season_number') ep_number = args.get('ep_number') air_date = args.get('air_date') if not ((season_number and ep_number) or absolute_number or air_date): raise BadRequest('not enough parameters for lookup. Either season and episode number or absolute number ' 'are required.') kwargs = {'tvdb_id': tvdb_id, 'session': session, 'language': language} if absolute_number: kwargs['absolute_number'] = absolute_number if season_number and ep_number: kwargs['season_number'] = season_number kwargs['episode_number'] = ep_number if air_date: kwargs['first_aired'] = air_date try: episode = lookup_episode(**kwargs) except LookupError as e: raise NotFoundError(e.args[0]) return jsonify(episode.to_dict())
def lazy_episode_lookup(self, entry, language): try: season_offset = entry.get('thetvdb_lookup_season_offset', 0) episode_offset = entry.get('thetvdb_lookup_episode_offset', 0) if not isinstance(season_offset, int): log.error('thetvdb_lookup_season_offset must be an integer') season_offset = 0 if not isinstance(episode_offset, int): log.error('thetvdb_lookup_episode_offset must be an integer') episode_offset = 0 if season_offset != 0 or episode_offset != 0: log.debug('Using offset for tvdb lookup: season: %s, episode: %s' % (season_offset, episode_offset)) lookupargs = {'name': entry.get('series_name', eval_lazy=False), 'tvdb_id': entry.get('tvdb_id', eval_lazy=False), 'language': entry.get('language', language)} if entry['series_id_type'] == 'ep': lookupargs['season_number'] = entry['series_season'] + season_offset lookupargs['episode_number'] = entry['series_episode'] + episode_offset elif entry['series_id_type'] == 'sequence': lookupargs['absolute_number'] = entry['series_id'] + episode_offset elif entry['series_id_type'] == 'date': # TODO: Should thetvdb_lookup_episode_offset be used for date lookups as well? lookupargs['first_aired'] = entry['series_date'] episode = plugin_api_tvdb.lookup_episode(**lookupargs) entry.update_using_map(self.episode_map, episode) except LookupError as e: log.debug('Error looking up tvdb episode information for %s: %s', entry['title'], e.args[0])
def get(self, tvdb_id, session=None): args = episode_parser.parse_args() absolute_number = args.get("absolute_number") season_number = args.get("season_number") ep_number = args.get("ep_number") if not ((season_number and ep_number) or absolute_number): return ( { "status": "error", "message": "not enough parameters for lookup. Either season and episode number or absolute number " "are required.", }, 500, ) kwargs = {"tvdb_id": tvdb_id, "session": session} if absolute_number: kwargs["absolute_number"] = absolute_number if season_number and ep_number: kwargs["season_number"] = season_number kwargs["episode_number"] = ep_number try: episode = lookup_episode(**kwargs) except LookupError as e: return {"status": "error", "message": e.args[0]}, 404 return jsonify(episode.to_dict())
def get(self, tvdb_id, session=None): args = episode_parser.parse_args() absolute_number = args.get('absolute_number') season_number = args.get('season_number') ep_number = args.get('ep_number') if not ((season_number and ep_number) or absolute_number): return { 'status': 'error', 'message': 'not enough parameters for lookup. Either season and episode number or absolute number ' 'are required.' }, 500 kwargs = {'tvdb_id': tvdb_id, 'session': session} if absolute_number: kwargs['absolute_number'] = absolute_number if season_number and ep_number: kwargs['season_number'] = season_number kwargs['episode_number'] = ep_number try: episode = lookup_episode(**kwargs) except LookupError as e: return {'status': 'error', 'message': e.args[0]}, 404 return jsonify(episode.to_dict())