Beispiel #1
0
        /// <inheritdoc />
        public BackupResult BackupMovies(string path)
        {
            BackupResult result = new BackupResult {
                CollectedCount = 0, WatchedCount = 0
            };

            Guid[] types =
            {
                MediaAspect.ASPECT_ID,              MovieAspect.ASPECT_ID,            VideoAspect.ASPECT_ID, ImporterAspect.ASPECT_ID,
                ExternalIdentifierAspect.ASPECT_ID, ProviderResourceAspect.ASPECT_ID, VideoStreamAspect.ASPECT_ID
            };

            IContentDirectory contentDirectory = GetContentDirectory();
            Guid?userProfile = GetUserProfileId();

            IList <MediaItem> collectedMovieMediaItems = contentDirectory.SearchAsync(new MediaItemQuery(types, null, null), true, userProfile, false).Result;

            result.CollectedCount = collectedMovieMediaItems.Count;
            List <MediaItem>          watchedMovieMediaItems = collectedMovieMediaItems.Where(MediaItemAspectsUtl.IsWatched).ToList();
            IList <MediaLibraryMovie> watchedMovies          = new List <MediaLibraryMovie>();

            foreach (MediaItem watchedMovieItem in watchedMovieMediaItems)
            {
                watchedMovies.Add(new MediaLibraryMovie
                {
                    Title = MediaItemAspectsUtl.GetMovieTitle(watchedMovieItem),
                    Imdb  = MediaItemAspectsUtl.GetMovieImdbId(watchedMovieItem),
                    Year  = MediaItemAspectsUtl.GetMovieYear(watchedMovieItem)
                });
            }
            SaveLibraryMovies(path, watchedMovies);
            result.WatchedCount = watchedMovies.Count;

            return(result);
        }
        /// <summary>
        /// Checks if a local movie is the same as an online movie
        /// </summary>
        private bool MovieMatch(MediaItem localMovie, Movie traktMovie)
        {
            bool result = false;

            // IMDb comparison
            if (!string.IsNullOrEmpty(traktMovie.Imdb) && !string.IsNullOrEmpty(MediaItemAspectsUtl.GetMovieImdbId(localMovie)))
            {
                result = String.Compare(MediaItemAspectsUtl.GetMovieImdbId(localMovie), traktMovie.Imdb, StringComparison.OrdinalIgnoreCase) == 0;
            }

            // TMDb comparison
            else if ((MediaItemAspectsUtl.GetMovieTmdbId(localMovie) != 0) && traktMovie.Tmdb.HasValue)
            {
                result = MediaItemAspectsUtl.GetMovieTmdbId(localMovie) == traktMovie.Tmdb.Value;
            }

            // Title & Year comparison
            else if (String.Compare(MediaItemAspectsUtl.GetMovieTitle(localMovie), traktMovie.Title,
                                    StringComparison.OrdinalIgnoreCase) == 0 &&
                     (MediaItemAspectsUtl.GetMovieYear(localMovie) == traktMovie.Year))
            {
                result = true;
            }

            return(result);
        }
        private string CreateLookupKey(MediaItem episode)
        {
            var tvdid        = MediaItemAspectsUtl.GetTvdbId(episode);
            var seasonIndex  = MediaItemAspectsUtl.GetSeasonIndex(episode);
            var episodeIndex = MediaItemAspectsUtl.GetEpisodeIndex(episode);

            return(string.Format("{0}_{1}_{2}", tvdid, seasonIndex, episodeIndex));
        }
Beispiel #4
0
        private string CreateLookupKey(MediaItem episode)
        {
            string tvdbId       = MediaItemAspectsUtl.GetTvdbId(episode);
            int    seasonIndex  = MediaItemAspectsUtl.GetSeasonIndex(episode);
            int    episodeIndex = MediaItemAspectsUtl.GetEpisodeNumbers(episode).FirstOrDefault();

            return(string.Format("{0}_{1}_{2}", tvdbId, seasonIndex, episodeIndex));
        }
Beispiel #5
0
        private ITraktEpisode ExtractTraktEpisode(MediaItem episodeMediaItem)
        {
            ITraktEpisode episode = new TraktEpisode
            {
                Number       = MediaItemAspectsUtl.GetEpisodeIndex(episodeMediaItem),
                SeasonNumber = MediaItemAspectsUtl.GetSeasonIndex(episodeMediaItem)
            };

            return(episode);
        }
Beispiel #6
0
 private MediaLibraryEpisode GetLibraryEpisode(MediaItem episodeMediaItem, int epNumber)
 {
     return(new MediaLibraryEpisode
     {
         Season = MediaItemAspectsUtl.GetSeasonIndex(episodeMediaItem),
         ShowImdb = MediaItemAspectsUtl.GetSeriesImdbId(episodeMediaItem),
         ShowTitle = MediaItemAspectsUtl.GetSeriesTitle(episodeMediaItem),
         ShowTvdb = MediaItemAspectsUtl.GetTvdbId(episodeMediaItem),
         Number = epNumber
     });
 }
Beispiel #7
0
        private void IncreaseResultCount(RestoreResult result, MediaItem episode)
        {
            List <int> episodeNumbers = MediaItemAspectsUtl.GetEpisodeNumbers(episode);
            bool       isMultiEpisode = episodeNumbers.Count > 1;

            if (isMultiEpisode)
            {
                result.MarkedWatchedCount = result.MarkedWatchedCount + episodeNumbers.Count;
            }
            else
            {
                result.MarkedWatchedCount++;
            }
        }
Beispiel #8
0
        private ITraktShow ExtractTraktShow(MediaItem episodeMediaItem)
        {
            ITraktShow show = new TraktShow
            {
                Ids = new TraktShowIds
                {
                    Imdb = MediaItemAspectsUtl.GetSeriesImdbId(episodeMediaItem),
                    Tvdb = MediaItemAspectsUtl.GetTvdbId(episodeMediaItem)
                },
                Title = MediaItemAspectsUtl.GetSeriesTitle(episodeMediaItem),
            };

            return(show);
        }
        private ITraktSyncCollectionPost GetCollectedShowsForSync(IList <MediaItem> localCollectedEpisodes, IEnumerable <EpisodeCollected> traktEpisodesCollected)
        {
            _mediaPortalServices.GetLogger().Info("Trakt: finding local episodes to add to trakt collection");
            TraktSyncCollectionPostBuilder     builder        = new TraktSyncCollectionPostBuilder();
            ILookup <string, EpisodeCollected> onlineEpisodes = traktEpisodesCollected.ToLookup(tce => CreateLookupKey(tce), tce => tce);

            foreach (var episode in localCollectedEpisodes)
            {
                string           tvdbKey      = CreateLookupKey(episode);
                EpisodeCollected traktEpisode = onlineEpisodes[tvdbKey].FirstOrDefault();

                if (traktEpisode == null)
                {
                    TraktShow show = new TraktShow
                    {
                        Title = MediaItemAspectsUtl.GetSeriesTitle(episode),
                        Ids   = new TraktShowIds
                        {
                            Tvdb = MediaItemAspectsUtl.GetTvdbId(episode),
                            Imdb = MediaItemAspectsUtl.GetSeriesImdbId(episode)
                        }
                    };

                    TraktMetadata metadata = new TraktMetadata
                    {
                        Audio            = MediaItemAspectsUtl.GetVideoAudioCodec(episode),
                        AudioChannels    = MediaItemAspectsUtl.GetVideoAudioChannel(episode),
                        MediaResolution  = MediaItemAspectsUtl.GetVideoResolution(episode),
                        MediaType        = MediaItemAspectsUtl.GetVideoMediaType(episode),
                        ThreeDimensional = false
                    };

                    DateTime collectedAt = MediaItemAspectsUtl.GetDateAddedToDb(episode);

                    builder.AddShow(show,
                                    new PostSeasons
                    {
                        {
                            MediaItemAspectsUtl.GetSeasonIndex(episode),
                            new PostEpisodes
                            {
                                { MediaItemAspectsUtl.GetEpisodeIndex(episode), metadata, collectedAt }
                            }
                        }
                    });
                }
            }
            return(builder.Build());
        }
Beispiel #10
0
        private ITraktMovie ConvertMediaItemToTraktMovie(MediaItem movieMediaItem)
        {
            ITraktMovie movie = new TraktMovie
            {
                Ids = new TraktMovieIds
                {
                    Imdb = MediaItemAspectsUtl.GetMovieImdbId(movieMediaItem),
                    Tmdb = MediaItemAspectsUtl.GetMovieTmdbId(movieMediaItem)
                },
                Title = MediaItemAspectsUtl.GetMovieTitle(movieMediaItem),
                Year  = MediaItemAspectsUtl.GetMovieYear(movieMediaItem)
            };

            return(movie);
        }
Beispiel #11
0
        /// <inheritdoc />
        public BackupResult BackupSeries(string path)
        {
            BackupResult result = new BackupResult {
                WatchedCount = 0, CollectedCount = 0
            };

            Guid[] types =
            {
                MediaAspect.ASPECT_ID,            EpisodeAspect.ASPECT_ID, VideoAspect.ASPECT_ID, ImporterAspect.ASPECT_ID,
                ProviderResourceAspect.ASPECT_ID, ExternalIdentifierAspect.ASPECT_ID
            };

            IContentDirectory contentDirectory = GetContentDirectory();
            Guid?userProfile = GetUserProfileId();

            IList <MediaItem> collectedEpisodeMediaItems = contentDirectory.Search(new MediaItemQuery(types, null, null), true, userProfile, false);

            foreach (MediaItem collectedEpisodeMediaItem in collectedEpisodeMediaItems)
            {
                List <int> episodeNumbers = MediaItemAspectsUtl.GetEpisodeNumbers(collectedEpisodeMediaItem);
                result.CollectedCount = result.CollectedCount + episodeNumbers.Count;
            }


            List <MediaItem> watchedEpisodeMediaItems = collectedEpisodeMediaItems.Where(MediaItemAspectsUtl.IsWatched).ToList();

            _mediaPortalServices.GetLogger().Info("watched {0}", watchedEpisodeMediaItems.Count);
            IList <MediaLibraryEpisode> watchedEpisodes = new List <MediaLibraryEpisode>();

            foreach (MediaItem watchedEpisodeItem in watchedEpisodeMediaItems)
            {
                List <int> episodeNumbers = MediaItemAspectsUtl.GetEpisodeNumbers(watchedEpisodeItem);
                _mediaPortalServices.GetLogger().Info("FlagMover: ep numb: {0}", episodeNumbers.Count);
                if (episodeNumbers.Any())
                {
                    AddEpisodes(watchedEpisodes, watchedEpisodeItem, episodeNumbers);
                }
                else
                {
                    _mediaPortalServices.GetLogger().Warn("FlagMover: Skipping series episode without episode number.");
                }
            }

            SaveLibraryEpisodes(path, watchedEpisodes);
            result.WatchedCount = watchedEpisodes.Count;

            return(result);
        }
Beispiel #12
0
        private void AddEpisodes(IList <MediaLibraryEpisode> watchedEpisodes, MediaItem episodeMediaItem, List <int> episodeNumbers)
        {
            bool isMultiEpisode = episodeNumbers.Count > 1;

            if (isMultiEpisode)
            {
                foreach (int epNumber in episodeNumbers)
                {
                    watchedEpisodes.Add(GetLibraryEpisode(episodeMediaItem, epNumber));
                    _mediaPortalServices.GetLogger().Info("added: {0}, numnber {1}", MediaItemAspectsUtl.GetSeriesTitle(episodeMediaItem), epNumber);
                }
            }
            else
            {
                watchedEpisodes.Add(GetLibraryEpisode(episodeMediaItem, episodeNumbers.FirstOrDefault()));
            }
        }
        public void BackupMovies()
        {
            Guid[] types =
            {
                MediaAspect.ASPECT_ID,              MovieAspect.ASPECT_ID,            VideoAspect.ASPECT_ID,       ImporterAspect.ASPECT_ID,
                ExternalIdentifierAspect.ASPECT_ID, ProviderResourceAspect.ASPECT_ID, VideoStreamAspect.ASPECT_ID,
                VideoAudioStreamAspect.ASPECT_ID
            };

            IContentDirectory contentDirectory = _mediaPortalServices.GetServerConnectionManager().ContentDirectory;

            if (contentDirectory == null)
            {
                throw new MediaLibraryNotConnectedException("ML not connected");
            }

            Guid?           userProfile = null;
            IUserManagement userProfileDataManagement = _mediaPortalServices.GetUserManagement();

            if (userProfileDataManagement != null && userProfileDataManagement.IsValidUser)
            {
                userProfile = userProfileDataManagement.CurrentUser.ProfileId;
            }

            IList <MediaItem>         collectedMovies = contentDirectory.SearchAsync(new MediaItemQuery(types, null, null), true, userProfile, false).Result;
            IList <MediaLibraryMovie> libraryMovies   = new List <MediaLibraryMovie>();

            foreach (MediaItem collectedMovie in collectedMovies)
            {
                libraryMovies.Add(new MediaLibraryMovie
                {
                    Title      = MediaItemAspectsUtl.GetMovieTitle(collectedMovie),
                    AddedToDb  = MediaItemAspectsUtl.GetDateAddedToDb(collectedMovie).ToString("O"),
                    LastPlayed = MediaItemAspectsUtl.GetLastPlayedDate(collectedMovie).ToString("O"),
                    PlayCount  = MediaItemAspectsUtl.GetPlayCount(collectedMovie),
                    Imdb       = MediaItemAspectsUtl.GetMovieImdbId(collectedMovie),
                    Year       = MediaItemAspectsUtl.GetMovieYear(collectedMovie)
                });
            }
            SaveLibraryMovies(libraryMovies);
        }
Beispiel #14
0
        private bool MovieMatch(MediaItem localMovie, MediaLibraryMovie watchedRestoreMovie)
        {
            bool result = false;

            if (!string.IsNullOrEmpty(watchedRestoreMovie.Imdb) && !string.IsNullOrEmpty(MediaItemAspectsUtl.GetMovieImdbId(localMovie)))
            {
                result = String.Compare(MediaItemAspectsUtl.GetMovieImdbId(localMovie), watchedRestoreMovie.Imdb, StringComparison.OrdinalIgnoreCase) == 0;
            }

            else if ((MediaItemAspectsUtl.GetMovieTmdbId(localMovie) != 0) && watchedRestoreMovie.Tmdb.HasValue)
            {
                result = MediaItemAspectsUtl.GetMovieTmdbId(localMovie) == watchedRestoreMovie.Tmdb.Value;
            }

            else if (String.Compare(MediaItemAspectsUtl.GetMovieTitle(localMovie), watchedRestoreMovie.Title, StringComparison.OrdinalIgnoreCase) == 0 &&
                     (MediaItemAspectsUtl.GetMovieYear(localMovie) == watchedRestoreMovie.Year))
            {
                result = true;
            }
            return(result);
        }
        private ITraktSyncHistoryPost GetWatchedShowsForSync(IList <MediaItem> localWatchedEpisodes, IEnumerable <EpisodeWatched> traktEpisodesWatched)
        {
            _mediaPortalServices.GetLogger().Info("Trakt: finding local shows to add to trakt watched history");
            TraktSyncHistoryPostBuilder      builder        = new TraktSyncHistoryPostBuilder();
            ILookup <string, EpisodeWatched> onlineEpisodes = traktEpisodesWatched.ToLookup(twe => CreateLookupKey(twe), twe => twe);

            foreach (var episode in localWatchedEpisodes)
            {
                string         tvdbKey      = CreateLookupKey(episode);
                EpisodeWatched traktEpisode = onlineEpisodes[tvdbKey].FirstOrDefault();

                if (traktEpisode == null)
                {
                    TraktShow show = new TraktShow
                    {
                        Title = MediaItemAspectsUtl.GetSeriesTitle(episode),
                        Ids   = new TraktShowIds
                        {
                            Tvdb = MediaItemAspectsUtl.GetTvdbId(episode),
                            Imdb = MediaItemAspectsUtl.GetSeriesImdbId(episode)
                        }
                    };

                    DateTime watchedAt = MediaItemAspectsUtl.GetLastPlayedDate(episode);

                    builder.AddShow(show, new PostHistorySeasons
                    {
                        {
                            MediaItemAspectsUtl.GetSeasonIndex(episode),
                            new PostHistoryEpisodes
                            {
                                { MediaItemAspectsUtl.GetEpisodeIndex(episode), watchedAt }
                            }
                        }
                    });
                }
            }
            return(builder.Build());
        }
        public TraktSyncMoviesResult SyncMovies()
        {
            _mediaPortalServices.GetLogger().Info("Trakt: start sync movies");

            ValidateAuthorization();

            TraktSyncMoviesResult  syncMoviesResult     = new TraktSyncMoviesResult();
            TraktMovies            traktMovies          = _traktCache.RefreshMoviesCache();
            IList <Movie>          traktUnWatchedMovies = traktMovies.UnWatched;
            IList <MovieWatched>   traktWatchedMovies   = traktMovies.Watched;
            IList <MovieCollected> traktCollectedMovies = traktMovies.Collected;

            Guid[] types =
            {
                MediaAspect.ASPECT_ID,              MovieAspect.ASPECT_ID,            VideoAspect.ASPECT_ID,       ImporterAspect.ASPECT_ID,
                ExternalIdentifierAspect.ASPECT_ID, ProviderResourceAspect.ASPECT_ID, VideoStreamAspect.ASPECT_ID,
                VideoAudioStreamAspect.ASPECT_ID
            };

            IContentDirectory contentDirectory = _mediaPortalServices.GetServerConnectionManager().ContentDirectory;

            if (contentDirectory == null)
            {
                throw new MediaLibraryNotConnectedException("ML not connected");
            }

            Guid?           userProfile = null;
            IUserManagement userProfileDataManagement = _mediaPortalServices.GetUserManagement();

            if (userProfileDataManagement != null && userProfileDataManagement.IsValidUser)
            {
                userProfile = userProfileDataManagement.CurrentUser.ProfileId;
            }

            #region Get local database info

            IList <MediaItem> collectedMovies = contentDirectory.SearchAsync(new MediaItemQuery(types, null, null), true, userProfile, false).Result;

            if (collectedMovies.Any())
            {
                syncMoviesResult.CollectedInLibrary = collectedMovies.Count;
                _mediaPortalServices.GetLogger().Info("Trakt: found {0} collected movies available to sync in media library", collectedMovies.Count);
            }

            List <MediaItem> watchedMovies = collectedMovies.Where(MediaItemAspectsUtl.IsWatched).ToList();

            if (watchedMovies.Any())
            {
                syncMoviesResult.WatchedInLibrary = watchedMovies.Count;
                _mediaPortalServices.GetLogger().Info("Trakt: found {0} watched movies available to sync in media library", watchedMovies.Count);
            }

            #endregion

            #region Mark movies as unwatched in local database

            _mediaPortalServices.GetLogger().Info("Trakt: start marking movies as unwatched in media library");
            if (traktUnWatchedMovies.Any())
            {
                foreach (var movie in traktUnWatchedMovies)
                {
                    var localMovie = watchedMovies.FirstOrDefault(m => MovieMatch(m, movie));
                    if (localMovie == null)
                    {
                        continue;
                    }

                    _mediaPortalServices.GetLogger().Info(
                        "Marking movie as unwatched in library, movie is not watched on trakt. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'",
                        movie.Title, movie.Year.HasValue ? movie.Year.ToString() : "<empty>", movie.Imdb ?? "<empty>",
                        movie.Tmdb.HasValue ? movie.Tmdb.ToString() : "<empty>");

                    if (_mediaPortalServices.MarkAsUnWatched(localMovie).Result)
                    {
                        syncMoviesResult.MarkedAsUnWatchedInLibrary++;
                    }
                }

                // update watched set
                watchedMovies = collectedMovies.Where(MediaItemAspectsUtl.IsWatched).ToList();
            }

            #endregion

            #region Mark movies as watched in local database

            _mediaPortalServices.GetLogger().Info("Trakt: start marking movies as watched in media library");
            if (traktWatchedMovies.Any())
            {
                foreach (var twm in traktWatchedMovies)
                {
                    var localMovie = collectedMovies.FirstOrDefault(m => MovieMatch(m, twm));
                    if (localMovie == null)
                    {
                        continue;
                    }

                    _mediaPortalServices.GetLogger().Info(
                        "Marking movie as watched in library, movie is watched on trakt. Plays = '{0}', Title = '{1}', Year = '{2}', IMDb ID = '{3}', TMDb ID = '{4}'",
                        twm.Plays, twm.Title, twm.Year.HasValue ? twm.Year.ToString() : "<empty>",
                        twm.Imdb ?? "<empty>", twm.Tmdb.HasValue ? twm.Tmdb.ToString() : "<empty>");

                    if (_mediaPortalServices.MarkAsWatched(localMovie).Result)
                    {
                        syncMoviesResult.MarkedAsWatchedInLibrary++;
                    }
                }
            }

            #endregion

            #region Add movies to watched history at trakt.tv

            _mediaPortalServices.GetLogger().Info("Trakt: finding movies to add to watched history");

            List <TraktSyncHistoryPostMovie> syncWatchedMovies = (from movie in watchedMovies
                                                                  where !traktWatchedMovies.ToList().Exists(c => MovieMatch(movie, c))
                                                                  select new TraktSyncHistoryPostMovie
            {
                Ids = new TraktMovieIds
                {
                    Imdb = MediaItemAspectsUtl.GetMovieImdbId(movie),
                    Tmdb = MediaItemAspectsUtl.GetMovieTmdbId(movie)
                },
                Title = MediaItemAspectsUtl.GetMovieTitle(movie),
                Year = MediaItemAspectsUtl.GetMovieYear(movie),
                WatchedAt = MediaItemAspectsUtl.GetLastPlayedDate(movie),
            }).ToList();

            if (syncWatchedMovies.Any())
            {
                _mediaPortalServices.GetLogger().Info("Trakt: trying to add {0} watched movies to trakt watched history", syncWatchedMovies.Count);

                ITraktSyncHistoryPostResponse watchedResponse = _traktClient.AddWatchedHistoryItems(new TraktSyncHistoryPost {
                    Movies = syncWatchedMovies
                });
                syncMoviesResult.AddedToTraktWatchedHistory = watchedResponse.Added?.Movies;
                _traktCache.ClearLastActivity(FileName.WatchedMovies.Value);

                if (watchedResponse.Added?.Movies != null)
                {
                    _mediaPortalServices.GetLogger().Info("Trakt: successfully added {0} watched movies to trakt watched history", watchedResponse.Added.Movies.Value);
                }
            }

            #endregion

            #region Add movies to collection at trakt.tv

            _mediaPortalServices.GetLogger().Info("Trakt: finding movies to add to collection");

            List <TraktSyncCollectionPostMovie> syncCollectedMovies = (from movie in collectedMovies
                                                                       where !traktCollectedMovies.ToList().Exists(c => MovieMatch(movie, c))
                                                                       select new TraktSyncCollectionPostMovie
            {
                MediaType = MediaItemAspectsUtl.GetVideoMediaType(movie),
                MediaResolution = MediaItemAspectsUtl.GetVideoResolution(movie),
                Audio = MediaItemAspectsUtl.GetVideoAudioCodec(movie),
                AudioChannels = MediaItemAspectsUtl.GetVideoAudioChannel(movie),
                ThreeDimensional = false,

                Ids = new TraktMovieIds
                {
                    Imdb = MediaItemAspectsUtl.GetMovieImdbId(movie),
                    Tmdb = MediaItemAspectsUtl.GetMovieTmdbId(movie)
                },
                Title = MediaItemAspectsUtl.GetMovieTitle(movie),
                Year = MediaItemAspectsUtl.GetMovieYear(movie),
                CollectedAt = MediaItemAspectsUtl.GetDateAddedToDb(movie)
            }).ToList();

            if (syncCollectedMovies.Any())
            {
                _mediaPortalServices.GetLogger().Info("Trakt: trying to add {0} collected movies to trakt collection", syncCollectedMovies.Count);

                foreach (var traktSyncCollectionPostMovie in syncCollectedMovies)
                {
                    string audio     = traktSyncCollectionPostMovie.Audio?.DisplayName;
                    string channel   = traktSyncCollectionPostMovie.AudioChannels?.DisplayName;
                    string res       = traktSyncCollectionPostMovie.MediaResolution?.DisplayName;
                    string mediatype = traktSyncCollectionPostMovie.MediaType?.DisplayName;
                    string name      = traktSyncCollectionPostMovie.Title;
                    _mediaPortalServices.GetLogger().Info("Trakt: {0}, {1}, {2}, {3}, {4}", audio, channel, res, mediatype, name);
                }
                ITraktSyncCollectionPostResponse collectionResponse = _traktClient.AddCollectionItems(new TraktSyncCollectionPost {
                    Movies = syncCollectedMovies
                });
                syncMoviesResult.AddedToTraktCollection = collectionResponse.Added?.Movies;
                _traktCache.ClearLastActivity(FileName.CollectedMovies.Value);

                if (collectionResponse.Added?.Movies != null)
                {
                    _mediaPortalServices.GetLogger().Info("Trakt: successfully added {0} collected movies to trakt collection", collectionResponse.Added.Movies.Value);
                }
            }
            #endregion

            return(syncMoviesResult);
        }