Beispiel #1
0
    def _get_episode_search_strings(self, episode, add_string=''):
        """Get episode search strings."""
        if not episode:
            return []

        search_string = {
            'Episode': []
        }

        season_scene_names = scene_exceptions.get_scene_exceptions(
            episode.series, episode.scene_season
        )

        for show_name in episode.series.get_all_possible_names(season=episode.scene_season):
            if show_name in season_scene_names:
                episode_season = int(episode.scene_episode)
            else:
                episode_season = int(episode.absolute_number)
            episode_string = '{name}%{episode}'.format(
                name=show_name, episode=episode_season
            )

            if add_string:
                episode_string += '%{string}'.format(string=add_string)

            search_string['Episode'].append(episode_string.strip())

        return [search_string]
Beispiel #2
0
    def _get_episode_search_strings(self, episode, add_string=''):
        """Get episode search strings."""
        if not episode:
            return []

        search_string = {'Episode': []}

        season_scene_names = scene_exceptions.get_scene_exceptions(
            episode.series.indexerid, episode.series.indexer,
            episode.scene_season)

        for show_name in episode.series.get_all_possible_names(
                season=episode.scene_season):
            if show_name in season_scene_names:
                episode_season = int(episode.scene_episode)
            else:
                episode_season = int(episode.absolute_number)
            episode_string = '{name}%{episode}'.format(name=show_name,
                                                       episode=episode_season)

            if add_string:
                episode_string += '%{string}'.format(string=add_string)

            search_string['Episode'].append(episode_string.strip())

        return [search_string]
Beispiel #3
0
    def _get_episode_search_strings(self, episode, add_string=''):
        """Get episode search strings."""
        if not episode:
            return []

        search_string = {'Episode': []}

        all_possible_show_names = episode.series.get_all_possible_names()
        if episode.scene_season:
            all_possible_show_names = all_possible_show_names.union(
                episode.series.get_all_possible_names(
                    season=episode.scene_season))

        for show_name in all_possible_show_names:
            episode_string = show_name + self.search_separator
            episode_string_fallback = None

            if episode.series.air_by_date:
                episode_string += str(episode.airdate).replace('-', ' ')
            elif episode.series.sports:
                episode_string += str(episode.airdate).replace('-', ' ')
                episode_string += ('|', ' ')[len(self.proper_strings) > 1]
                episode_string += episode.airdate.strftime('%b')
            elif episode.series.anime:
                # If the showname is a season scene exception, we want to use the indexer episode number.
                if (episode.scene_season > 1
                        and show_name in get_scene_exceptions(
                            episode.series.indexerid, episode.series.indexer,
                            episode.scene_season)):
                    # This is apparently a season exception, let's use the scene_episode instead of absolute
                    ep = episode.scene_episode
                else:
                    ep = episode.scene_absolute_number
                episode_string_fallback = episode_string + '{episode:0>3}'.format(
                    episode=ep)
                episode_string += '{episode:0>2}'.format(episode=ep)
            else:
                episode_string += config.naming_ep_type[2] % {
                    'seasonnumber': episode.scene_season,
                    'episodenumber': episode.scene_episode,
                }

            if add_string:
                episode_string += self.search_separator + add_string
                if episode_string_fallback:
                    episode_string_fallback += self.search_separator + add_string

            search_string['Episode'].append(episode_string.strip())
            if episode_string_fallback:
                search_string['Episode'].append(
                    episode_string_fallback.strip())

        return [search_string]
Beispiel #4
0
    def _search_params(self, ep_obj, mode, season_numbering=None):

        if not ep_obj:
            return []

        searches = []
        season = 'Season' if mode == 'Season' else ''

        air_by_date = ep_obj.series.air_by_date
        sports = ep_obj.series.sports

        if not season_numbering and (air_by_date or sports):
            date_fmt = '%Y' if season else '%Y.%m.%d'
            search_name = ep_obj.airdate.strftime(date_fmt)
        else:
            search_name = '{type} {number}'.format(
                type=season,
                number=ep_obj.season if season else episode_num(
                    ep_obj.season, ep_obj.episode
                ),
            ).strip()

        params = {
            'category': season or 'Episode',
            'name': search_name,
        }

        # Search
        if ep_obj.series.indexer == INDEXER_TVDBV2:
            params['tvdb'] = self._get_tvdb_id()
            searches.append(params)
        else:
            name_exceptions = scene_exceptions.get_scene_exceptions(ep_obj.series)
            name_exceptions.add(ep_obj.series.name)
            for name in name_exceptions:
                # Search by name if we don't have tvdb id
                params['series'] = name
                searches.append(params)

        # extend air by date searches to include season numbering
        if air_by_date and not season_numbering:
            searches.extend(
                self._search_params(ep_obj, mode, season_numbering=True)
            )

        return searches
Beispiel #5
0
 def test_scene_ex_babylon_5(self):
     series_obj = Series(1, 70726)
     self.assertEqual(
         sorted(scene_exceptions.get_scene_exceptions(series_obj, 1)),
         sorted({'Babylon 5', 'Babylon5'}))
Beispiel #6
0
 def test_scene_ex_empty(self):
     series_obj = Series(1, 70725)
     self.assertEqual(scene_exceptions.get_scene_exceptions(series_obj, 0),
                      set())
Beispiel #7
0
 def test_scene_ex_babylon_5(self):
     self.assertEqual(
         sorted(scene_exceptions.get_scene_exceptions(70726, 1)),
         sorted({'Babylon 5', 'Babylon5'}))
Beispiel #8
0
 def test_scene_ex_empty(self):
     self.assertEqual(scene_exceptions.get_scene_exceptions(0, 0), set())
 def test_scene_ex_babylon_5(self):
     series_obj = Series(1, 70726)
     self.assertEqual(
         sorted(scene_exceptions.get_scene_exceptions(series_obj, 1)),
         sorted({'Babylon 5', 'Babylon5'})
     )
 def test_scene_ex_empty(self):
     series_obj = Series(1, 70725)
     self.assertEqual(scene_exceptions.get_scene_exceptions(series_obj, 0), set())