示例#1
0
        protected override bool GrabFileDetails()
        {
            try {
                selectedMovie = MyFilmsDetail.GetCurrentMovie();

                _mediaDetail = new BasicMediaDetail();

                _mediaDetail.Title = selectedMovie.Title;
                _mediaDetail.Year = selectedMovie.Year;
                _mediaDetail.ImdbID = selectedMovie.IMDBNumber;

                _mediaDetail.Thumb = selectedMovie.Picture;
                _mediaDetail.FanArt = selectedMovie.Fanart;

                _mediaDetail.Files = new List<FileInfo>();

                string[] files = selectedMovie.File.Trim().Split(new Char[] { ';' });
                foreach (string file in files) {
                    _mediaDetail.Files.Add(new FileInfo(file));
                }
                return true;
            }
            catch (Exception e) {
                logger.ErrorException(string.Format("Unexpected error when pulling data from MyFilms{0}", Environment.NewLine), e);
                return false;
            }
        }
        public static bool GetCurrentMediaItem(out MediaItem currentMediaItem)
        {
            FileLog.Info("Getting selected movie information from My Films.");

            currentMediaItem = new MediaItem();
            selectedMovie = MyFilmsDetail.GetCurrentMovie();

            currentMediaItem.Title = selectedMovie.Title;
            currentMediaItem.Year = selectedMovie.Year;
            currentMediaItem.Poster = selectedMovie.Picture;
            currentMediaItem.Plot = GUIPropertyManager.GetProperty("#myfilms.db.description.value").Trim();

            // Get local file information
            currentMediaItem.FullPath = selectedMovie.File;

            // Check if TMDb ID is available
            int tmdbid = 0;
            if (int.TryParse(selectedMovie.TMDBNumber, out tmdbid))
            {
                if (tmdbid > 0) currentMediaItem.TMDb = tmdbid.ToString();
            }

            // Next best ID to use
            string imdbid = selectedMovie.IMDBNumber;
            if (!string.IsNullOrEmpty(imdbid) && imdbid.Length == 9) currentMediaItem.IMDb = imdbid;

            return true;
        }
示例#3
0
        public static TraktRateMovie CreateRateData(MFMovie movie, String rating)
        {
            string username = TraktSettings.Username;
            string password = TraktSettings.Password;

            if (String.IsNullOrEmpty(username) || String.IsNullOrEmpty(password))
                return null;

            TraktRateMovie rateData = new TraktRateMovie
            {
                Title = movie.Title,
                Year = movie.Year.ToString(),
                IMDBID = movie.IMDBNumber,
                TMDBID = null,
                UserName = username,
                Password = password,
                Rating = rating
            };
            return rateData;
        }
示例#4
0
        /// <summary>
        /// Creates Scrobble data based on a MFMovie object
        /// </summary>
        /// <param name="movie">The movie to base the object on</param>
        /// <returns>The Trakt scrobble data to send</returns>
        public static TraktScrobbleMovie CreateScrobbleData(MFMovie movie)
        {
            double duration = g_Player.Duration;
            double progress = 0.0;

            // get current progress of player (in seconds) to work out percent complete
            if (duration > 0.0)
                progress = (g_Player.CurrentPosition / duration) * 100.0;

            var scrobbleData = new TraktScrobbleMovie
            {
                Movie = new TraktMovie
                {
                    Ids = new TraktMovieId { Imdb = movie.IMDBNumber.ToNullIfEmpty(), Tmdb = movie.TMDBNumber.ToNullableInt32() },
                    Title = movie.Title,
                    Year = movie.Year
                },
                Progress = Math.Round(progress, 2),
                AppVersion = TraktSettings.Version,
                AppDate = TraktSettings.BuildDate
            };

            return scrobbleData;
        }
示例#5
0
        private void OnToggleWatched(MFMovie movie, bool watched, int count)
        {
            TraktLogger.Info("Received togglewatched event from MyFilms");

            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            // don't do anything if movie is blocked
            if (TraktSettings.BlockedFilenames.Contains(movie.File) || TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Movie {0} is on the blocked list so we didn't update Trakt", movie.Title);
                return;
            }

            Thread toggleWatchedThread = new Thread((o) =>
            {
                MFMovie tMovie = o as MFMovie;
                TraktResponse response = TraktAPI.TraktAPI.SyncMovieLibrary(CreateSyncData(tMovie), watched ? TraktSyncModes.seen : TraktSyncModes.unseen);
                TraktAPI.TraktAPI.LogTraktResponse(response);
            })
            {
                IsBackground = true,
                Name = "My Films Toggle Watched"
            };

            toggleWatchedThread.Start(movie);
        }
示例#6
0
        private void OnStoppedMovie(MFMovie movie)
        {
            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            if (!TraktSettings.BlockedFilenames.Contains(movie.File) && !TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Stopped My Films movie playback: '{0}'", movie.Title);

                CurrentMovie = null;
                StopScrobble();

                // send cancelled watching state
                Thread cancelWatching = new Thread(delegate()
                {
                    TraktMovieScrobble scrobbleData = new TraktMovieScrobble { UserName = TraktSettings.Username, Password = TraktSettings.Password };
                    TraktResponse response = TraktAPI.TraktAPI.ScrobbleMovieState(scrobbleData, TraktScrobbleStates.cancelwatching);
                    TraktAPI.TraktAPI.LogTraktResponse(response);
                })
                {
                    IsBackground = true,
                    Name = "Cancel Watching Movie"
                };

                cancelWatching.Start();
            }
        }
示例#7
0
        private void OnStartedMovie(MFMovie movie)
        {
            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            if (!TraktSettings.BlockedFilenames.Contains(movie.File) && !TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Starting My Films movie playback: '{0}'", movie.Title);
                CurrentMovie = movie;
            }
        }
示例#8
0
        private void OnRateItem(MFMovie movie, string value)
        {
            TraktLogger.Info("Recieved rating event from MyFilms");

            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            // don't do anything if movie is blocked
            if (TraktSettings.BlockedFilenames.Contains(movie.File) || TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Movie {0} is on the blocked list so we didn't update Trakt", movie.Title);
                return;
            }

            // My Films is a 100 point scale out of 10. Treat as decimal and then round off
            string rating = Math.Round(Convert.ToDecimal(value), MidpointRounding.AwayFromZero).ToString();
            TraktRateResponse response = null;

            Thread rateThread = new Thread((o) =>
            {
                MFMovie tMovie = o as MFMovie;

                response = TraktAPI.TraktAPI.RateMovie(CreateRateData(tMovie, rating));

                TraktAPI.TraktAPI.LogTraktResponse(response);
            })
            {
                IsBackground = true,
                Name = "My Films Rate"
            };

            rateThread.Start(movie);
        }
示例#9
0
        /// <summary>
        /// Creates Sync Data based on a single IMDBMovie object
        /// </summary>
        /// <param name="Movie">The movie to base the object on</param>
        /// <returns>The Trakt Sync data to send</returns>
        public static TraktMovieSync CreateSyncData(MFMovie Movie)
        {
            string username = TraktSettings.Username;
            string password = TraktSettings.Password;

            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
                return null;

            List<TraktMovieSync.Movie> moviesList = new List<TraktMovieSync.Movie>();
            moviesList.Add(new TraktMovieSync.Movie
            {
                IMDBID = Movie.IMDBNumber,
                Title = Movie.Title,
                Year = Movie.Year.ToString()
            });

            TraktMovieSync syncData = new TraktMovieSync
            {
                UserName = username,
                Password = password,
                MovieList = moviesList
            };
            return syncData;
        }
示例#10
0
        /// <summary>
        /// Shows the Rate Movie Dialog after playback has ended
        /// </summary>
        /// <param name="movie">The movie being rated</param>
        private void ShowRateDialog(MFMovie movie)
        {
            if (!TraktSettings.ShowRateDialogOnWatched) return;     // not enabled
            if (movie.RatingUser > 0) return;                       // already rated

            TraktLogger.Debug("Showing rate dialog for movie. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'", movie.Title, movie.Year, movie.IMDBNumber ?? "<empty>", movie.TMDBNumber ?? "<empty>");

            var rateThread = new Thread((objMovie) =>
            {
                var movieToRate = objMovie as MFMovie;
                if (movieToRate == null) return;

                var rateObject = new TraktSyncMovieRated
                {
                    Ids = new TraktMovieId { Imdb = movieToRate.IMDBNumber.ToNullIfEmpty(), Tmdb = movie.TMDBNumber.ToNullableInt32() },
                    Title = movieToRate.Title,
                    Year = movieToRate.Year,
                    RatedAt = DateTime.UtcNow.ToISO8601()
                };

                // get the rating submitted to trakt.tv
                int rating = GUI.GUIUtils.ShowRateDialog<TraktSyncMovieRated>(rateObject);

                if (rating > 0)
                {
                    TraktLogger.Debug("Rating {0} ({1}) as {2}/10", movieToRate.Title, movie.Year, rating.ToString());
                    movieToRate.RatingUser = (float)rating;
                    movieToRate.Username = TraktSettings.Username;
                    movieToRate.Commit();

                    // update skin properties if movie is still selected
                    if (GUICommon.GetProperty("#myfilms.user.mastertitle.value").Equals(movieToRate.Title))
                    {
                        GUICommon.SetProperty("#myfilms.user.rating.value", movieToRate.RatingUser.ToString());
                    }

                    // add to cache
                    TraktCache.AddMovieToRatings(rateObject, rating);
                }
            })
            {
                Name = "Rate",
                IsBackground = true
            };

            rateThread.Start(movie);
        }
        private void OnRateItem(MFMovie movie, string value)
        {
            TraktLogger.Info("Recieved rating event from MyFilms");

            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            // don't do anything if movie is blocked
            if (TraktSettings.BlockedFilenames.Contains(movie.File) || TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Movie {0} is on the blocked list so we didn't update Trakt", movie.Title);
                return;
            }

            // Add setting for this later to control love/hate value
            double rating = Convert.ToDouble(value);
            TraktRateResponse response = null;

            Thread rateThread = new Thread((o) =>
            {
                MFMovie tMovie = o as MFMovie;

                if (rating >= 7.0)
                    response = TraktAPI.TraktAPI.RateMovie(CreateRateData(tMovie, TraktRateValue.love.ToString()));
                else
                    response = TraktAPI.TraktAPI.RateMovie(CreateRateData(tMovie, TraktRateValue.hate.ToString()));

                TraktAPI.TraktAPI.LogTraktResponse(response);
            })
            {
                IsBackground = true,
                Name = "My Films Rate"
            };

            rateThread.Start(movie);
        }
示例#12
0
        private void OnToggleWatched(MFMovie movie, bool watched, int count)
        {
            TraktLogger.Info("Received togglewatched event from My Films. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'", movie.Title, movie.Year, movie.IMDBNumber ?? "<empty>", movie.TMDBNumber ?? "<empty>");

            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            // don't do anything if movie is blocked
            if (TraktSettings.BlockedFilenames.Contains(movie.File) || TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Movie {0} is on the blocked list so we didn't update Trakt", movie.Title);
                return;
            }

            var toggleWatchedThread = new Thread((o) =>
            {
                var tMovie = o as MFMovie;

                if (!watched)
                {
                    var traktMovie = new TraktMovie
                    {
                        Ids = new TraktMovieId { Imdb = tMovie.IMDBNumber, Tmdb = movie.TMDBNumber.ToNullableInt32() },
                        Title = tMovie.Title,
                        Year = tMovie.Year
                    };

                    // update local cache
                    TraktCache.RemoveMovieFromWatchHistory(traktMovie);

                    var response = TraktAPI.TraktAPI.RemoveMovieFromWatchedHistory(traktMovie);
                    TraktLogger.LogTraktResponse(response);
                }
                else
                {
                    // no longer need movie in recommendations or watchlist
                    RemoveMovieFromRecommendations(tMovie);
                    RemoveMovieFromWatchlist(tMovie);

                    var traktMovie = new TraktSyncMovieWatched
                    {
                        Ids = new TraktMovieId { Imdb = tMovie.IMDBNumber, Tmdb = movie.TMDBNumber.ToNullableInt32() },
                        Title = tMovie.Title,
                        Year = tMovie.Year,
                        WatchedAt = DateTime.UtcNow.ToISO8601()
                    };

                    var response = TraktAPI.TraktAPI.AddMovieToWatchedHistory(traktMovie);
                    TraktLogger.LogTraktResponse(response);

                    if (response != null && response.NotFound != null && response.NotFound.Movies.Count == 0)
                    {
                        // update local cache
                        TraktCache.AddMovieToWatchHistory(traktMovie);
                    }
                }
            })
            {
                IsBackground = true,
                Name = "ToggleWatched"
            };

            toggleWatchedThread.Start(movie);
        }
示例#13
0
        private void OnStoppedMovie(MFMovie movie)
        {
            CurrentMovie = null;
            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            if (!TraktSettings.BlockedFilenames.Contains(movie.File) && !TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Stopped My Films movie playback. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'", movie.Title, movie.Year, movie.IMDBNumber ?? "<empty>", movie.TMDBNumber ?? "<empty>");

                // stop scrobbling
                var scrobbleData = CreateScrobbleData(movie);
                var stopScrobble = new Thread(objScrobble =>
                {
                    var tScrobbleData = objScrobble as TraktScrobbleMovie;
                    if (tScrobbleData == null) return;

                    var response = TraktAPI.TraktAPI.PauseMovieScrobble(tScrobbleData);
                    TraktLogger.LogTraktResponse(response);

                    if (response != null && response.Movie != null && response.Action == "pause")
                    {
                        // add to cache
                        TraktCache.AddMovieToPausedData(response.Movie, response.Progress);
                    }
                })
                {
                    IsBackground = true,
                    Name = "Scrobble"
                };

                stopScrobble.Start(scrobbleData);
            }
        }
示例#14
0
        private void OnStartedMovie(MFMovie movie)
        {
            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            if (!TraktSettings.BlockedFilenames.Contains(movie.File) && !TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Starting My Films movie playback. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'", movie.Title, movie.Year, movie.IMDBNumber ?? "<empty>", movie.TMDBNumber ?? "<empty>");
                CurrentMovie = movie;
            }
        }
示例#15
0
        private void OnRateItem(MFMovie movie, string value)
        {
            TraktLogger.Info("Received rating event from MyFilms. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'", movie.Title, movie.Year, movie.IMDBNumber ?? "<empty>", movie.TMDBNumber ?? "<empty>");

            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            // don't do anything if movie is blocked
            if (TraktSettings.BlockedFilenames.Contains(movie.File) || TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("Movie {0} is on the blocked list so we didn't update Trakt", movie.Title);
                return;
            }

            var rateThread = new Thread((o) =>
            {
                var tMovie = o as MFMovie;

                // My Films is a 100 point scale out of 10. Treat as decimal and then round off
                int rating = Convert.ToInt32(Math.Round(Convert.ToDecimal(value), MidpointRounding.AwayFromZero));

                var rateMovie = new TraktSyncMovieRated
                {
                    Ids = new TraktMovieId { Imdb = tMovie.IMDBNumber, Tmdb = tMovie.TMDBNumber.ToNullableInt32() },
                    Title = tMovie.Title,
                    Year = tMovie.Year,
                    Rating = rating,
                    RatedAt = DateTime.UtcNow.ToISO8601()
                };

                var response = TraktAPI.TraktAPI.AddMovieToRatings(rateMovie);

                TraktLogger.LogTraktResponse(response);

                if (response != null && response.NotFound != null && response.NotFound.Movies.Count == 0)
                {
                    // update local cache
                    if (rating > 0)
                    {
                        TraktCache.AddMovieToRatings(rateMovie, rating);
                    }
                }
            })
            {
                IsBackground = true,
                Name = "Rate"
            };

            rateThread.Start(movie);
        }
示例#16
0
        private bool MovieMatch(MFMovie mfMovie, TraktMovie traktMovie)
        {
            // IMDb comparison
            if (!string.IsNullOrEmpty(traktMovie.Ids.Imdb) && !string.IsNullOrEmpty(BasicHandler.GetProperImdbId(mfMovie.IMDBNumber)))
            {
                return string.Compare(BasicHandler.GetProperImdbId(mfMovie.IMDBNumber), traktMovie.Ids.Imdb, true) == 0;
            }

            // TMDb comparison
            if (!string.IsNullOrEmpty(mfMovie.TMDBNumber) && traktMovie.Ids.Tmdb.HasValue)
            {
                return string.Compare(mfMovie.TMDBNumber, traktMovie.Ids.Tmdb.ToString(), true) == 0;
            }

            // Title & Year comparison
            return string.Compare(mfMovie.Title, traktMovie.Title, true) == 0 && mfMovie.Year.ToString() == traktMovie.Year.ToString();
        }
示例#17
0
        private void OnWatchedMovie(MFMovie movie)
        {
            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            CurrentMovie = null;

            if (!TraktSettings.BlockedFilenames.Contains(movie.File) && !TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                Thread scrobbleMovie = new Thread(delegate(object obj)
                {
                    MFMovie watchedMovie = obj as MFMovie;
                    if (watchedMovie == null) return;

                    // show trakt rating dialog
                    ShowRateDialog(watchedMovie);

                    TraktLogger.Info("My Films movie considered watched: '{0}'", watchedMovie.Title);

                    // get scrobble data to send to api
                    TraktMovieScrobble scrobbleData = CreateScrobbleData(watchedMovie);
                    if (scrobbleData == null) return;

                    // set duration/progress in scrobble data
                    scrobbleData.Duration = Convert.ToInt32(g_Player.Duration / 60).ToString();
                    scrobbleData.Progress = "100";

                    TraktResponse response = TraktAPI.TraktAPI.ScrobbleMovieState(scrobbleData, TraktScrobbleStates.scrobble);
                    TraktAPI.TraktAPI.LogTraktResponse(response);
                })
                {
                    IsBackground = true,
                    Name = "Scrobble Movie"
                };

                scrobbleMovie.Start(movie);
            }
        }
示例#18
0
        private void OnWatchedMovie(MFMovie movie)
        {
            CurrentMovie = null;
            if (TraktSettings.AccountStatus != ConnectionState.Connected) return;

            if (!TraktSettings.BlockedFilenames.Contains(movie.File) && !TraktSettings.BlockedFolders.Any(f => movie.File.ToLowerInvariant().Contains(f.ToLowerInvariant())))
            {
                TraktLogger.Info("My Films movie considered watched. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'", movie.Title, movie.Year, movie.IMDBNumber ?? "<empty>", movie.TMDBNumber ?? "<empty>");

                // show trakt rating dialog
                ShowRateDialog(movie);

                // no longer need movie in recommendations or watchlist
                RemoveMovieFromRecommendations(movie);
                RemoveMovieFromWatchlist(movie);

                // stop scrobbling
                var scrobbleData = CreateScrobbleData(movie);
                var stopScrobble = new Thread(objScrobble =>
                {
                    var tScrobbleData = objScrobble as TraktScrobbleMovie;
                    if (tScrobbleData == null) return;

                    // check progress is enough to mark as watched online
                    if (tScrobbleData.Progress < 80)
                        tScrobbleData.Progress = 100;

                    var response = TraktAPI.TraktAPI.StopMovieScrobble(tScrobbleData);
                    TraktLogger.LogTraktResponse(response);

                    if (response != null && response.Movie != null && response.Action == "scrobble")
                    {
                        // add to cache
                        TraktCache.AddMovieToWatchHistory(response.Movie);
                    }
                })
                {
                    IsBackground = true,
                    Name = "Scrobble"
                };

                stopScrobble.Start(scrobbleData);
            }
        }
示例#19
0
        /// <summary>
        /// Shows the Rate Movie Dialog after playback has ended
        /// </summary>
        /// <param name="movie">The movie being rated</param>
        private void ShowRateDialog(MFMovie movie)
        {
            if (!TraktSettings.ShowRateDialogOnWatched) return;     // not enabled
            if (movie.Rating > 0) return;                           // already rated

            TraktLogger.Debug("Showing rate dialog for '{0}'", movie.Title);

            new Thread((o) =>
            {
                MFMovie movieToRate = o as MFMovie;
                if (movieToRate == null) return;

                TraktRateMovie rateObject = new TraktRateMovie
                {
                    IMDBID = movieToRate.IMDBNumber,
                    TMDBID = movieToRate.TMDBNumber,
                    Title = movieToRate.Title,
                    Year = movieToRate.Year.ToString(),
                    UserName = TraktSettings.Username,
                    Password = TraktSettings.Password
                };

                // get the rating submitted to trakt
                int rating = int.Parse(GUIUtils.ShowRateDialog<TraktRateMovie>(rateObject));

                if (rating > 0)
                {
                    TraktLogger.Debug("Rating {0} as {1}/10", movieToRate.Title, rating.ToString());
                    movieToRate.Rating = (float)rating;
                    movieToRate.Username = TraktSettings.Username;
                    movieToRate.Commit();
                }
            })
            {
                Name = "Rate",
                IsBackground = true
            }.Start(movie);
        }
示例#20
0
        /// <summary>
        /// Creates Scrobble data based on a IMDBMovie object
        /// </summary>
        /// <param name="movie">The movie to base the object on</param>
        /// <returns>The Trakt scrobble data to send</returns>
        public static TraktMovieScrobble CreateScrobbleData(MFMovie movie)
        {
            string username = TraktSettings.Username;
            string password = TraktSettings.Password;

            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
                return null;

            TraktMovieScrobble scrobbleData = new TraktMovieScrobble
            {
                Title = movie.Title,
                Year = movie.Year.ToString(),
                IMDBID = movie.IMDBNumber,
                PluginVersion = TraktSettings.Version,
                MediaCenter = "Mediaportal",
                MediaCenterVersion = Assembly.GetEntryAssembly().GetName().Version.ToString(),
                MediaCenterBuildDate = String.Empty,
                UserName = username,
                Password = password
            };
            return scrobbleData;
        }
示例#21
0
 private MFMovie GetCurrentMovie()
 {
     var movie = new MFMovie
     {
       ID = this.ID,
       Title = this.Title,
       TranslatedTitle = this.TranslatedTitle,
       FormattedTitle = this.FormattedTitle,
       GroupName = this.GroupName,
       CategoryTrakt = this.CategoryTrakt,
       Edition = this.Edition,
       IMDBNumber = this.IMDBNumber,
       TMDBNumber = this.TMDBNumber,
       Year = this.Year,
       Category = this.Category,
       Length = this.Length,
       Rating = this.Rating,
       RatingUser = this.RatingUser,
       Watched = this.Watched,
       WatchedCount = this.WatchedCount,
       DateTime = this.DateTime,
       DateAdded = this.DateAdded,
       File = this.File,
       Trailer = this.Trailer,
       Path = this.Path,
       Picture = this.Picture,
       Fanart = this.Fanart,
       Config = this.Config,
       Username = this.Username,
       ReadOnly = this.ReadOnly
     };
       return movie;
 }
示例#22
0
        /// <summary>
        /// Removes movie from Watchlist
        /// </summary>
        private void RemoveMovieFromWatchlist(MFMovie movie)
        {
            if (movie.CategoryTrakt == null) return;

            if (movie.CategoryTrakt.Contains(Translation.Recommendations))
            {
                TraktLogger.Info("Removing movie from trakt watchlist. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TMDb ID = '{3}'", movie.Title, movie.Year, movie.IMDBNumber ?? "<empty>", movie.TMDBNumber ?? "<empty>");
                movie.CategoryTrakt.Remove(Translation.WatchList);
                movie.Username = TraktSettings.Username;
                movie.Commit();
            }
        }