Exemple #1
0
    def _process_release_name(self):
        """Parse the release name for a show title and episode(s)."""
        release_name = naming.determine_release_name(self.dir_name, self.resource)
        if not release_name:
            self.log(logger.WARNING, 'Warning: unable to find a valid release name.')
            raise FailedPostProcessingFailedException()

        try:
            parse_result = NameParser().parse(release_name)
        except (InvalidNameException, InvalidShowException):
            self.log(logger.WARNING, 'Not enough information to parse release name into a valid show. '
                     'Consider adding scene exceptions or improve naming for: {release}'.format
                     (release=release_name))
            raise FailedPostProcessingFailedException()

        self.log(logger.DEBUG, 'Parsed info: {result}'.format(result=parse_result))

        segment = []
        if not parse_result.episode_numbers:
            # Get all episode objects from that season
            self.log(logger.DEBUG, 'Detected as season pack: {release}'.format(release=release_name))
            segment.extend(parse_result.series.get_all_episodes(parse_result.season_number))
        else:
            self.log(logger.DEBUG, 'Detected as single/multi episode: {release}'.format(release=release_name))
            for episode in parse_result.episode_numbers:
                segment.append(parse_result.series.get_episode(parse_result.season_number, episode))

        if segment:
            self.log(logger.DEBUG, 'Created segment of episodes [{segment}] from release: {release}'.format(
                segment=','.join(str(ep.episode) for ep in segment),
                release=release_name
            ))

        return segment
    def process(self):
        """
        Do the actual work.

        :return: True
        """
        self.log(
            logger.INFO, u'Failed download detected: ({nzb}, {dir})'.format(
                nzb=self.nzb_name, dir=self.dir_name))

        releaseName = naming.determine_release_name(self.dir_name,
                                                    self.nzb_name)
        if not releaseName:
            self.log(logger.WARNING,
                     u'Warning: unable to find a valid release name.')
            raise FailedPostProcessingFailedException()

        try:
            parse_result = NameParser().parse(releaseName)
        except (InvalidNameException, InvalidShowException):
            self.log(
                logger.WARNING,
                u'Not enough information to parse release name into a valid show. '
                u'Consider adding scene exceptions or improve naming for: {release}'
                .format(release=releaseName))
            raise FailedPostProcessingFailedException()

        self.log(logger.DEBUG,
                 u'Parsed info: {result}'.format(result=parse_result))

        segment = []
        if not parse_result.episode_numbers:
            # Get all episode objects from that season
            self.log(
                logger.DEBUG, 'Detected as season pack: {release}'.format(
                    release=releaseName))
            segment.extend(
                parse_result.series.get_all_episodes(
                    parse_result.season_number))
        else:
            self.log(
                logger.DEBUG,
                u'Detected as single/multi episode: {release}'.format(
                    release=releaseName))
            for episode in parse_result.episode_numbers:
                segment.append(
                    parse_result.series.get_episode(parse_result.season_number,
                                                    episode))

        if segment:
            self.log(
                logger.DEBUG,
                u'Adding this release to failed queue: {release}'.format(
                    release=releaseName))
            cur_failed_queue_item = FailedQueueItem(parse_result.series,
                                                    segment)
            app.forced_search_queue_scheduler.action.add_item(
                cur_failed_queue_item)

        return True
    def process(self):
        """
        Do the actual work.

        :return: True
        """
        self.log(logger.INFO, u'Failed download detected: ({nzb}, {dir})'.format(nzb=self.nzb_name, dir=self.dir_name))

        releaseName = naming.determine_release_name(self.dir_name, self.nzb_name)
        if not releaseName:
            self.log(logger.WARNING, u'Warning: unable to find a valid release name.')
            raise FailedPostProcessingFailedException()

        try:
            parse_result = NameParser().parse(releaseName)
        except (InvalidNameException, InvalidShowException):
            self.log(logger.WARNING, u'Not enough information to parse release name into a valid show. '
                     u'Consider adding scene exceptions or improve naming for: {release}'.format
                     (release=releaseName))
            raise FailedPostProcessingFailedException()

        self.log(logger.DEBUG, u'Parsed info: {result}'.format(result=parse_result))

        segment = []
        if not parse_result.episode_numbers:
            # Get all episode objects from that season
            self.log(logger.DEBUG, 'Detected as season pack: {release}'.format(release=releaseName))
            segment.extend(parse_result.series.get_all_episodes(parse_result.season_number))
        else:
            self.log(logger.DEBUG, u'Detected as single/multi episode: {release}'.format(release=releaseName))
            for episode in parse_result.episode_numbers:
                segment.append(parse_result.series.get_episode(parse_result.season_number, episode))

        if segment:
            self.log(logger.DEBUG, u'Adding this release to failed queue: {release}'.format(release=releaseName))
            cur_failed_queue_item = FailedQueueItem(parse_result.series, segment)
            app.forced_search_queue_scheduler.action.add_item(cur_failed_queue_item)

        return True