Ejemplo n.º 1
0
    def build(self, show):
        """Build internal name cache

        :param show: Specify show to build name cache for, if None, just do all shows
        """

        retrieve_exceptions()

        if self.should_update(show):
            self.last_update[show.name] = datetime.fromtimestamp(
                int(time.mktime(datetime.today().timetuple())))

            self.clear(show.indexerid)

            show_names = []
            for curSeason in [-1] + get_scene_seasons(show.indexerid):
                for name in list(
                        set(
                            get_scene_exceptions(show.indexerid,
                                                 season=curSeason) +
                            [show.name])):
                    show_names.append(name)
                    show_names.append(strip_accents(name))
                    show_names.append(strip_accents(name).replace("'", " "))

            for show_name in set(show_names):
                self.clear(show_name)
                self.put(show_name, show.indexerid)
Ejemplo n.º 2
0
    def get_show(self, name):
        show = None
        show_id = None
        show_names = [name]

        if not all([name, sickrage.app.showlist]):
            return show, show_id

        def cache_lookup(term):
            return sickrage.app.name_cache.get(term)

        def scene_exception_lookup(term):
            return get_scene_exception_by_name(term)[0]

        def indexer_lookup(term):
            show_id1 = int(IndexerApi().searchForShowID(
                full_sanitizeSceneName(term))[2])
            show_id2 = int(srTraktAPI()['search'].query(
                full_sanitizeSceneName(term), 'show')[0].ids['tvdb'])
            return (None, show_id1)[show_id1 == show_id2]

        show_names.append(strip_accents(name))
        show_names.append(strip_accents(name).replace("'", " "))

        for show_name in set(show_names):
            lookup_list = [
                lambda: cache_lookup(show_name),
                lambda: scene_exception_lookup(show_name),
                lambda: indexer_lookup(show_name),
            ]

            # lookup show id
            for lookup in lookup_list:
                try:
                    show_id = int(lookup())
                    if show_id == 0:
                        continue

                    sickrage.app.name_cache.put(show_name, show_id)

                    if not show:
                        if self.validate_show:
                            show = findCertainShow(show_id)
                        else:
                            from sickrage.core.tv.show import TVShow
                            show = TVShow(1, show_id)
                except Exception:
                    pass

            if show_id is None:
                # ignore show name by caching it with a indexerid of 0
                sickrage.app.name_cache.put(show_name, 0)

        return show, show_id or 0
Ejemplo n.º 3
0
    def get_show(self, name):
        show = None
        show_id = None
        show_names = [name]

        if not all([name, sickrage.app.showlist]):
            return show, show_id

        def cache_lookup(term):
            return sickrage.app.name_cache.get(term)

        def scene_exception_lookup(term):
            return get_scene_exception_by_name(term)[0]

        def showlist_lookup(term):
            try:
                return search_showlist_by_name(term).indexerid
            except MultipleShowObjectsException:
                return None

        show_names.append(strip_accents(name))
        show_names.append(strip_accents(name).replace("'", " "))

        for show_name in set(show_names):
            lookup_list = [
                lambda: cache_lookup(show_name),
                lambda: scene_exception_lookup(show_name),
                lambda: showlist_lookup(show_name),
            ]

            # lookup show id
            for lookup in lookup_list:
                try:
                    show_id = int(lookup())
                    if show_id == 0:
                        continue

                    sickrage.app.name_cache.put(show_name, show_id)

                    if not show:
                        if self.validate_show:
                            show = findCertainShow(show_id)
                        else:
                            from sickrage.core.tv.show import TVShow
                            show = TVShow(1, show_id)
                except Exception:
                    pass

            if show_id is None:
                # ignore show name by caching it with a indexerid of 0
                sickrage.app.name_cache.put(show_name, 0)

        return show, show_id or 0
Ejemplo n.º 4
0
    def get_show(self, name):
        show = None
        show_id = None
        show_names = [name]

        if not all([name, sickrage.app.showlist]):
            return show, show_id

        def cache_lookup(term):
            return sickrage.app.name_cache.get(term)

        def scene_exception_lookup(term):
            return get_scene_exception_by_name(term)[0]

        def showlist_lookup(term):
            try:
                return search_showlist_by_name(term).indexerid
            except MultipleShowObjectsException:
                return None

        show_names.append(strip_accents(name))
        show_names.append(strip_accents(name).replace("'", " "))

        for show_name in set(show_names):
            lookup_list = [
                lambda: cache_lookup(show_name),
                lambda: scene_exception_lookup(show_name),
                lambda: showlist_lookup(show_name),
            ]

            # lookup show id
            for lookup in lookup_list:
                try:
                    show_id = int(lookup())
                    if show_id == 0:
                        continue

                    sickrage.app.name_cache.put(show_name, show_id)

                    if not show:
                        if self.validate_show:
                            show = findCertainShow(show_id)
                        else:
                            from sickrage.core.tv.show import TVShow
                            show = TVShow(1, show_id)
                except Exception:
                    pass

            if show_id is None:
                # ignore show name by caching it with a indexerid of 0
                sickrage.app.name_cache.put(show_name, 0)

        return show, show_id or 0
Ejemplo n.º 5
0
def allPossibleShowNames(show, season=-1):
    """
    Figures out every possible variation of the name for a particular show. Includes TVDB name, TVRage name,
    country codes on the end, eg. "Show Name (AU)", and any scene exception names.

    show: a TVShow object that we should get the names of

    Returns: a list of all the possible show names
    :rtype: list[unicode]
    """

    show_names = get_scene_exceptions(show.indexerid, season=season)[:]
    if not show_names:  # if we dont have any season specific exceptions fallback to generic exceptions
        season = -1
        show_names = get_scene_exceptions(show.indexerid, season=season)[:]

    if season in [-1, 1]:
        show_names.append(show.name)

    show_names.append(strip_accents(show.name))
    show_names.append(strip_accents(show.name).replace("'", " "))

    if not show.is_anime:
        new_show_names = []
        country_list = countryList
        country_list.update(dict(zip(countryList.values(),
                                     countryList.keys())))
        for curName in set(show_names):
            if not curName:
                continue

            # if we have "Show Name Australia" or "Show Name (Australia)" this will add "Show Name (AU)" for
            # any countries defined in common.countryList
            # (and vice versa)
            for curCountry in country_list:
                if curName.endswith(' ' + curCountry):
                    new_show_names.append(
                        curName.replace(' ' + curCountry,
                                        ' (' + country_list[curCountry] + ')'))
                elif curName.endswith(' (' + curCountry + ')'):
                    new_show_names.append(
                        curName.replace(' (' + curCountry + ')',
                                        ' (' + country_list[curCountry] + ')'))

                    # # if we have "Show Name (2013)" this will strip the (2013) show year from the show name
                    # new_show_names.append(re.sub('\(\d{4}\)', '', curName))

        show_names += new_show_names

    return list(set(show_names))
Ejemplo n.º 6
0
def allPossibleShowNames(show, season=-1):
    """
    Figures out every possible variation of the name for a particular show. Includes TVDB name, TVRage name,
    country codes on the end, eg. "Show Name (AU)", and any scene exception names.

    show: a TVShow object that we should get the names of

    Returns: a list of all the possible show names
    :rtype: list[unicode]
    """

    show_names = get_scene_exceptions(show.indexerid, season=season)[:]
    if not show_names:  # if we dont have any season specific exceptions fallback to generic exceptions
        season = -1
        show_names = get_scene_exceptions(show.indexerid, season=season)[:]

    if season in [-1, 1]:
        show_names.append(show.name)

    show_names.append(strip_accents(show.name))
    show_names.append(strip_accents(show.name).replace("'", " "))

    if not show.is_anime:
        new_show_names = []
        country_list = countryList
        country_list.update(dict(zip(countryList.values(), countryList.keys())))
        for curName in set(show_names):
            if not curName:
                continue

            # if we have "Show Name Australia" or "Show Name (Australia)" this will add "Show Name (AU)" for
            # any countries defined in common.countryList
            # (and vice versa)
            for curCountry in country_list:
                if curName.endswith(' ' + curCountry):
                    new_show_names.append(curName.replace(' ' + curCountry, ' (' + country_list[curCountry] + ')'))
                elif curName.endswith(' (' + curCountry + ')'):
                    new_show_names.append(curName.replace(' (' + curCountry + ')', ' (' + country_list[curCountry] + ')'))

                    # # if we have "Show Name (2013)" this will strip the (2013) show year from the show name
                    # new_show_names.append(re.sub('\(\d{4}\)', '', curName))

        show_names += new_show_names

    return list(set(show_names))
Ejemplo n.º 7
0
    def build(self, show):
        """Build internal name cache

        :param show: Specify show to build name cache for, if None, just do all shows
        """

        retrieve_exceptions()

        if self.should_update(show):
            self.last_update[show.name] = datetime.fromtimestamp(int(time.mktime(datetime.today().timetuple())))

            self.clear(show.indexerid)

            show_names = []
            for curSeason in [-1] + get_scene_seasons(show.indexerid):
                for name in list(set(get_scene_exceptions(show.indexerid, season=curSeason) + [show.name])):
                    show_names.append(name)
                    show_names.append(strip_accents(name))
                    show_names.append(strip_accents(name).replace("'", " "))

            for show_name in set(show_names):
                self.clear(show_name)
                self.put(show_name, show.indexerid)