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()
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()
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