Esempio n. 1
0
    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())
Esempio n. 2
0
    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]))
Esempio n. 3
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())
Esempio n. 4
0
    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])
Esempio n. 5
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())
Esempio n. 6
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())