示例#1
0
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'])
示例#2
0
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'])
示例#3
0
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'])