Пример #1
0
    def to_parse_result(self, name, guess):
        """Guess the episode information from a given release name.

        Uses guessit and returns a dictionary with keys and values according to ParseResult
        :param name:
        :type name: str
        :param guess:
        :type guess: dict
        :return:
        :rtype: ParseResult
        """
        if not self.allow_multi_season:
            season_numbers = helpers.ensure_list(guess.get('season'))
            if len(season_numbers) > 1:
                raise InvalidNameException(
                    "Discarding result. Multi-season detected for '{name}': {guess}"
                    .format(name=name, guess=guess))

            versions = helpers.ensure_list(guess.get('version'))
            if len(versions) > 1:
                raise InvalidNameException(
                    "Discarding result. Multi-version detected for '{name}': {guess}"
                    .format(name=name, guess=guess))

        return ParseResult(guess, original_name=name, series_name=guess.get('alias') or guess.get('title'),
                           season_number=helpers.single_or_list(season_numbers, self.allow_multi_season),
                           episode_numbers=helpers.ensure_list(guess.get('episode')),
                           ab_episode_numbers=helpers.ensure_list(guess.get('absolute_episode')),
                           air_date=guess.get('date'), release_group=guess.get('release_group'),
                           proper_tags=helpers.ensure_list(guess.get('proper_tag')), version=guess.get('version', -1))
Пример #2
0
    def to_parse_result(self, name, guess):
        """Guess the episode information from a given release name.

        Uses guessit and returns a dictionary with keys and values according to ParseResult
        :param name:
        :type name: str
        :param guess:
        :type guess: dict
        :return:
        :rtype: ParseResult
        """
        if not self.allow_multi_season:
            season_numbers = helpers.ensure_list(guess.get('season'))
            if len(season_numbers) > 1:
                raise InvalidNameException(
                    "Discarding result. Multi-season detected for '{name}': {guess}"
                    .format(name=name, guess=guess))

            versions = helpers.ensure_list(guess.get('version'))
            if len(versions) > 1:
                raise InvalidNameException(
                    "Discarding result. Multi-version detected for '{name}': {guess}"
                    .format(name=name, guess=guess))

        return ParseResult(guess, original_name=name, series_name=guess.get('alias') or guess.get('title'),
                           season_number=helpers.single_or_list(season_numbers, self.allow_multi_season),
                           episode_numbers=helpers.ensure_list(guess.get('episode'))
                           if guess.get('episode') != guess.get('absolute_episode') else [],
                           ab_episode_numbers=helpers.ensure_list(guess.get('absolute_episode')),
                           air_date=guess.get('date'), release_group=guess.get('release_group'),
                           proper_tags=helpers.ensure_list(guess.get('proper_tag')), version=guess.get('version', -1))
Пример #3
0
def test_single_or_list(p):
    # Given
    value = p['value']

    # When
    actual = sut.single_or_list(value)

    # Then
    assert p['expected'] == actual