public static void AlgorithmMovieWeight(List <MovieMenuItem> allMovies)
        {
            Dictionary <MovieMenuItem, double> localmovieRatingsWeight = new Dictionary <MovieMenuItem, double>();

            MovieRatingsWeight = new Dictionary <MovieMenuItem, double>();

            foreach (var movie in allMovies)
            {
                if (!MySqlCommands.IsMovieRated(movie.MovieId))
                {
                    double movieWeight = 0;

                    if (User.Preferences["directors"].ContainsKey(movie.Director))                                  // weight for directors
                    {
                        movieWeight += User.Preferences["directors"][movie.Director][(int)UserRating.Weight];
                    }

                    string[] genres         = movie.Genre.Replace(" ", "").Split(',');                               // weight for genres
                    string   topGenre       = User.Preferences["genre"].Keys.FirstOrDefault(g => genres.Contains(g));
                    int      numberOfGenres = genres.Length;

                    foreach (var genre in genres)
                    {
                        try
                        {
                            if (topGenre == genre)
                            {
                                movieWeight += User.Preferences["genre"][genre][(int)UserRating.Weight];
                            }
                            else
                            {
                                movieWeight += User.Preferences["genre"][genre][(int)UserRating.Weight] / numberOfGenres;
                            }
                        }
                        catch (KeyNotFoundException)
                        {
                            movieWeight += 0;
                        }
                    }

                    foreach (var actor in movie.Actors)
                    {
                        if (User.Preferences["actors"].ContainsKey(actor))
                        {
                            movieWeight += User.Preferences["actors"][actor][(int)UserRating.Weight];
                        }
                    }

                    if (User.DebugState)
                    {
                        movie.Title += $" | {movieWeight:0.00}";
                    }

                    localmovieRatingsWeight.Add(movie, movieWeight);
                }
            }

            MovieRatingsWeight = localmovieRatingsWeight.OrderByDescending(m => m.Value);
        }
Пример #2
0
 private void updateMovies()
 {
     if (!_showRated)
     {
         MenuItems.Clear();
         List <MovieMenuItem> allMovies = MySqlCommands.GetMovies();
         foreach (var movie in allMovies)
         {
             if (!MySqlCommands.IsMovieRated(movie.MovieId))
             {
                 AddMenuItem(movie);
             }
         }
     }
 }