Ejemplo n.º 1
0
def get_scene_exception_by_name(series_name):
    """Get the season of a scene exception."""
    # Flatten the exceptions_cache.
    scene_exceptions = []
    for exception_set in list(exceptions_cache.values()):
        for title_exception in list(exception_set.values()):
            scene_exceptions += title_exception

    # First attempt exact match.
    for title_exception in scene_exceptions:
        if series_name == title_exception.title:
            return title_exception

    # Let's try out some sanitized names.
    for title_exception in scene_exceptions:
        sanitized_name = sanitize_scene_name(title_exception.title)
        titles = (
            title_exception.title.lower(),
            sanitized_name.lower().replace('.', ' '),
        )

        if series_name.lower() in titles:
            logger.debug(
                'Scene exception lookup got series id {title_exception.series_id} '
                'from indexer {title_exception.indexer},'
                ' using that',
                title_exception=title_exception)
            return title_exception
Ejemplo n.º 2
0
def get_scene_exceptions_by_name(show_name):
    """Look for a series_id, season and indexer for a given series scene exception."""
    # TODO: Rewrite to use exceptions_cache since there is no need to hit db.
    # TODO: Make the query more linient. For example. `Jojo's Bizarre Adventure Stardust Crusaders` will not match
    # while `Jojo's Bizarre Adventure - Stardust Crusaders` is available.
    if show_name is None:
        logger.debug('Scene exception lookup failed because no show name was provided')
        return [(None, None, None)]

    # Try the obvious case first
    cache_db_con = db.DBConnection('cache.db')
    scene_exceptions = cache_db_con.select(
        'SELECT indexer, indexer_id, season '
        'FROM scene_exceptions '
        'WHERE show_name = ? ORDER BY season ASC',
        [show_name])

    if scene_exceptions:
        # FIXME: Need to add additional layer indexer.
        return [(int(exception['indexer_id']), int(exception['season']), int(exception['indexer']))
                for exception in scene_exceptions]

    result = []
    scene_exceptions = cache_db_con.select(
        'SELECT show_name, indexer, indexer_id, season '
        'FROM scene_exceptions'
    )

    for exception in scene_exceptions:
        indexer = int(exception['indexer'])
        indexer_id = int(exception['indexer_id'])
        season = int(exception['season'])
        exception_name = exception['show_name']

        sanitized_name = helpers.sanitize_scene_name(exception_name)
        show_names = (
            exception_name.lower(),
            sanitized_name.lower().replace('.', ' '),
        )

        if show_name.lower() in show_names:
            logger.debug(
                'Scene exception lookup got indexer ID {cur_indexer},'
                ' using that', {'cur_indexer': indexer_id}
            )
            result.append((indexer_id, season, indexer))

    return result or [(None, None, None)]
Ejemplo n.º 3
0
def get_scene_exceptions_by_name(show_name):
    """Look for a series_id, season and indexer for a given series scene exception."""
    # TODO: Rewrite to use exceptions_cache since there is no need to hit db.
    # TODO: Make the query more linient. For example. `Jojo's Bizarre Adventure Stardust Crusaders` will not match
    # while `Jojo's Bizarre Adventure - Stardust Crusaders` is available.
    if show_name is None:
        logger.debug('Scene exception lookup failed because no show name was provided')
        return [(None, None, None)]

    # Try the obvious case first
    cache_db_con = db.DBConnection('cache.db')
    scene_exceptions = cache_db_con.select(
        'SELECT indexer, indexer_id, season '
        'FROM scene_exceptions '
        'WHERE show_name = ? ORDER BY season ASC',
        [show_name])

    if scene_exceptions:
        # FIXME: Need to add additional layer indexer.
        return [(int(exception['indexer_id']), int(exception['season']), int(exception['indexer']))
                for exception in scene_exceptions]

    result = []
    scene_exceptions = cache_db_con.select(
        'SELECT show_name, indexer, indexer_id, season '
        'FROM scene_exceptions'
    )

    for exception in scene_exceptions:
        indexer = int(exception['indexer'])
        indexer_id = int(exception['indexer_id'])
        season = int(exception['season'])
        exception_name = exception['show_name']

        sanitized_name = helpers.sanitize_scene_name(exception_name)
        show_names = (
            exception_name.lower(),
            sanitized_name.lower().replace('.', ' '),
        )

        if show_name.lower() in show_names:
            logger.debug(
                'Scene exception lookup got indexer ID {cur_indexer},'
                ' using that', {'cur_indexer': indexer_id}
            )
            result.append((indexer_id, season, indexer))

    return result or [(None, None, None)]
Ejemplo n.º 4
0
def get_scene_exceptions_by_name(show_name):
    """Get the indexer_id and season of the scene exception."""
    # TODO: Rewrite to use exceptions_cache since there is no need to hit db.
    # Try the obvious case first
    cache_db_con = db.DBConnection('cache.db')
    scene_exceptions = cache_db_con.select(
        b'SELECT indexer, indexer_id, season '
        b'FROM scene_exceptions '
        b'WHERE show_name = ? ORDER BY season ASC',
        [show_name])
    if scene_exceptions:
        # FIXME: Need to add additional layer indexer.
        return [(int(exception[b'indexer_id']), int(exception[b'season']), int(exception[b'indexer']))
                for exception in scene_exceptions]

    result = []
    scene_exceptions = cache_db_con.select(
        b'SELECT show_name, indexer, indexer_id, season '
        b'FROM scene_exceptions'
    )

    for exception in scene_exceptions:
        indexer = int(exception[b'indexer'])
        indexer_id = int(exception[b'indexer_id'])
        season = int(exception[b'season'])
        exception_name = exception[b'show_name']

        sanitized_name = helpers.sanitize_scene_name(exception_name)
        show_names = (
            exception_name.lower(),
            sanitized_name.lower().replace('.', ' '),
        )

        if show_name.lower() in show_names:
            logger.debug(
                'Scene exception lookup got indexer ID {cur_indexer},'
                ' using that', cur_indexer=indexer_id
            )
            result.append((indexer_id, season, indexer))

    return result or [(None, None, None)]