Ejemplo n.º 1
0
def _parse_episodes(sheet):
    """
    Parses episode sheet.
    Imports episodes.
    Will not update.
    """
    episodes = []
    seasons = []
    ratings = []
    names = []
    indexes = []

    zip_list = [seasons, episodes, ratings, None, names]

    counter = 0
    for row in sheet:
        if counter != 3:
            zip_list[counter] += row.values()
        counter += 1
        indexes = row.keys()

    output = []

    for episode in zip(episodes, seasons, ratings, names, indexes):
        if episode[0] == 'EPISODE':
            pass
        else:
            episode_dict = {}
            episode_dict['episode'] = int(episode[0])
            episode_dict['season'] = int(episode[1])
            episode_dict['title'] = episode[3].decode('utf-8')
            episode_dict['rating'] = episode[2]
            episode_dict['code'] = 's%se%s' % (episode[1].zfill(2),
                                               episode[0].zfill(2))
            episode_dict['number'] = int(episode[4])
            output.append(episode_dict)

    for row in output:
        try:
            Episode.get(Episode.code == row['code'])

        except Episode.DoesNotExist:
            Episode.create(**row).save()
Ejemplo n.º 2
0
def _parse_episodes(sheet):
    """
    Parses episode sheet.
    Imports episodes.
    Will not update.
    """
    episodes = []
    seasons = []
    ratings = []
    names = []
    indexes = []

    zip_list = [seasons, episodes, ratings, None, names]

    counter = 0
    for row in sheet:
        if counter != 3:
            zip_list[counter] += row.values()
        counter += 1
        indexes = row.keys()

    output = []

    for episode in zip(episodes, seasons, ratings, names, indexes):
        if episode[0] == 'EPISODE':
            pass
        else:
            episode_dict = {}
            episode_dict['episode'] = int(episode[0])
            episode_dict['season'] = int(episode[1])
            episode_dict['title'] = episode[3].decode('utf-8')
            episode_dict['rating'] = episode[2]
            episode_dict['code'] = 's%se%s' % (episode[1].zfill(2), episode[0].zfill(2))
            episode_dict['number'] = int(episode[4])
            output.append(episode_dict)

    for row in output:
        try:
            Episode.get(Episode.code == row['code'])

        except Episode.DoesNotExist:
            Episode.create(**row).save()
Ejemplo n.º 3
0
def update_imdb_episode_rating(database, episode, imdb_episodes, plex_object, season, db_episode=None):
    """
    Update episode rating from IMDB
    :param database: connection to the database
    :param episode: the episode object from plex
    :param imdb_episodes: the episode ratings from imdb
    :param plex_object: the plex object from the parent show
    :param season: the season of this episode
    :param exists: whether the media already exists in local db
    :return: true if update succeeds, false if not
    """
    if episode.index in imdb_episodes:
        if imdb_episodes[episode.index] == 'N/A':
            if not DRY_RUN:
                db.reset_rating(database, episode)
                db.set_locked_fields(database, episode)
            logger.debug("Episode '{e.title}' '{e.index}' has no rating available".format(
                e=episode))
            return False
        else:
            if not DRY_RUN:
                db.set_rating_and_imdb_image(database, episode,
                                             imdb_episodes[episode.index]["rating"])
                db.set_locked_fields(database, episode)
            # create episode in database
            if db_episode is None:
                Episode.create(
                    parent_plex_id=plex_object.ratingKey,
                    plex_id=episode.ratingKey,
                    imdb_id=imdb_episodes[episode.index]["imdb_id"],
                    title=episode.title,
                    season=season.index,
                    episode=episode.index,
                    release_date=episode.originallyAvailableAt,
                    rating=imdb_episodes[episode.index]["rating"]
                )
            else:
                db.update_db_rating(db_episode.get(), imdb_episodes[episode.index]["rating"])
            return True
    else:
        if not DRY_RUN:
            db.reset_rating(database, episode)
            db.set_locked_fields(database, episode)
        logger.debug("Episode '{e.title}' '{e.index}' not found. Cannot update".format(
            e=episode))
        if db_episode is None:
            Episode.create(
                parent_plex_id=plex_object.ratingKey,
                plex_id=episode.ratingKey,
                title=episode.title,
                season=season.index,
                episode=episode.index,
                release_date=episode.originallyAvailableAt
            )
        else:
            if episode.index in imdb_episodes:
                db.update_db_rating(db_episode.get(), imdb_episodes[episode.index]["rating"])
            else:
                logger.debug("Episode '{e.title}' '{e.index}' not found. Cannot update".format(
                    e=episode))
        return False
    return False