def pull_movie(watched, rated, video): key = video.get('ratingKey') # Pull metadata metadata = PMS.metadata(key) if not metadata: Log.Warn('Invalid metadata with key %s, network error' % key) return if 'imdb_id' not in metadata and 'tmdb_id' not in metadata: Log.Warn('Invalid metadata with key %s, no IMDB or TMDB id available' % key) return # Sync watched if Prefs['sync_watched'] is True: for movie in finditems(metadata, watched, ['imdb_id', 'tmdb_id']): Log.Debug('Found %s with id %s' % (metadata['title'], key)) if not PMS.scrobble(video): Log.Debug('The movie %s is already marked as seen in the library.' % metadata['title']) # Sync ratings if Prefs['sync_ratings'] is True: for movie in finditems(metadata, rated, ['imdb_id', 'tmdb_id']): Log.Debug('Found %s with id %s' % (metadata['title'], key)) PMS.rate(video, movie['rating_advanced'])
def pull_show(watched, rated, directory, tvdb_id): # Sync watched if Prefs['sync_watched'] is True: for show in [x for x in watched if x['tvdb_id'] == tvdb_id]: Log.Debug('We have a match for %s' % show['title']) episodes = PMS.get_metadata_leaves(directory.get('ratingKey')) if not episodes: Log.Warn('Unable to fetch episodes for show with id %s' % directory.get('ratingKey')) continue for episode in episodes.xpath('//Video'): season_num = try_convert(episode.get('parentIndex'), int) episode_num = try_convert(episode.get('index'), int) # Skip episodes with missing season or episode numbers if season_num is None or episode_num is None: continue for season in matches(season_num, show['seasons'], lambda x: int(x['season'])): if episode_num in season['episodes']: Log.Debug('Marking %s episode %s with key: %s as seen.' % ( episode.get('grandparentTitle'), episode.get('title'), episode.get('ratingKey') )) if not PMS.scrobble(episode): Log.Debug('The episode %s is already marked as seen in the library.' % episode.get('title')) # Sync ratings if Prefs['sync_ratings'] is True: for show in [x for x in rated if x['show']['tvdb_id'] == tvdb_id]: show_season = try_convert(show['episode']['season'], int) show_episode = try_convert(show['episode']['number'], int) # Skip episodes with missing season or episode numbers if show_season is None or show_episode is None: continue episodes = PMS.get_metadata_leaves(directory.get('ratingKey')) if not episodes: Log.Warn('Unable to fetch episodes for show with id %s' % directory.get('ratingKey')) continue for episode in episodes.xpath('//Video'): if show_season == int(episode.get('parentIndex')) and show_episode == int(episode.get('index')): PMS.rate(episode, show['rating_advanced'])
def pull_movie(watched, rated, video): # Pull metadata metadata = PMS.metadata(video.get('ratingKey')) if not metadata or 'imdb_id' not in metadata: Log.Warn('Invalid metadata for movie with key %s (network error or missing IMDB ID)' % video.get('ratingKey')) return # Sync watched if Prefs['sync_watched'] is True: for movie in finditems(metadata, watched, 'imdb_id'): Log.Debug('Found %s with id %s' % (metadata['title'], video.get('ratingKey'))) if not PMS.scrobble(video): Log.Debug('The movie %s is already marked as seen in the library.' % metadata['title']) # Sync ratings if Prefs['sync_ratings'] is True: for movie in finditems(metadata, rated, 'imdb_id'): Log.Debug('Found %s with id %s' % (metadata['title'], video.get('ratingKey'))) PMS.rate(video, movie['rating_advanced'])