public void MineBoxOfficeMojoHistory_MineWeekend_ThisWeek_Filtered()
        {
            var weekendEnding = MovieDateUtil.LastSunday(DateTime.Now);
            var test          = new MineBoxOfficeMojo(weekendEnding);

            var actual = test.MineWeekend(weekendEnding);

            Assert.IsNotNull(actual);
            Assert.IsTrue(actual.Any(), "The list was empty.");
            Logger.WriteLine($"Contains Estimates: {test.ContainsEstimates}");

            actual = FilterMovies(actual);

            foreach (var movie in actual)
            {
                var history = new MineBoxOfficeMojoHistory(movie.Identifier);
                var movies  = history.Mine();

                movie.SetBoxOfficeHistory(movies.First().BoxOfficeHistory);
            }

            Logger.WriteLine($"Weekend Ending: {weekendEnding}");

            WriteMovies(actual.OrderByDescending(item => item.Earnings));
        }
Exemple #2
0
        /// <summary>
        /// Load the compound movies for the previous week.
        /// </summary>
        /// <param name="lastMojoMiner"></param>
        /// <param name="firstCompoundMovie"></param>
        private void LoadLastBoxOfficeMojoCompound(MineBoxOfficeMojo lastMojoMiner, IMovie firstCompoundMovie)
        {
            var mojoMovies = lastMojoMiner.Movies;                          // A copy of its movie list

            // Last week's BO Mojo movies need to be loaded on their own and NOT rely on the current compound movie spread.
            // (Only this miner mines the Identifier so you have to pull the movie from this miner's list of movies.)

            var firstMojoMovie = mojoMovies.FirstOrDefault(item => item.Equals(firstCompoundMovie));
            var dailyMiner     = new MineBoxOfficeMojoDaily(firstMojoMovie?.Identifier, lastMojoMiner.WeekendEnding);

            var movies = dailyMiner.Mine();                     // Each movie will have their corresponding DayOfWeek set.

            foreach (var movie in movies)
            {
                movie.Name = firstMojoMovie.MovieName;
                var found = mojoMovies.FirstOrDefault(item => item.Equals(movie));

                if (found != null)
                {
                    found.Earnings      = movie.Earnings;
                    found.WeekendEnding = movie.WeekendEnding;
                }
            }

            lastMojoMiner.SetCompoundLoaded(true);
            lastMojoMiner.SetMovies(mojoMovies);
        }
        public void MineBoxOfficeMojo_Mine()
        {
            var test = new MineBoxOfficeMojo();

            var actual = test.Mine();

            Assert.IsNotNull(actual);
            Assert.IsTrue(actual.Any(), "The list was empty.");

            Logger.WriteLine(test.UrlSource);
            WriteMovies(actual.OrderByDescending(item => item.Earnings));
        }
        public void MineBoxOfficeMojo_Mine_Previous3Weeks()
        {
            var weekendEnding = MovieDateUtil.LastSunday(DateTime.Now).AddDays(-14);
            var test          = new MineBoxOfficeMojo(weekendEnding);

            var actual = test.Mine();

            Assert.IsNotNull(actual);
            Assert.IsTrue(actual.Any(), "The list was empty.");

            Logger.WriteLine($"Weekend Ending: {weekendEnding}");
            WriteMovies(actual.OrderByDescending(item => item.Earnings));
        }
        public void MineBoxOfficeMojo_MineWeekend_ThisWeek_Filtered()
        {
            var weekendEnding = MovieDateUtil.LastSunday(DateTime.Now);
            var test          = new MineBoxOfficeMojo(weekendEnding);

            var actual = test.MineWeekend(weekendEnding);

            Assert.IsNotNull(actual);
            Assert.IsTrue(actual.Any(), "The list was empty.");

            actual = FilterMovies(actual);

            Logger.WriteLine($"Weekend Ending: {weekendEnding}");
            WriteMovies(actual.OrderByDescending(item => item.Earnings));

            foreach (var item in actual.OrderByDescending(item => item.Cost))
            {
                //Logger.WriteLine($"{item.Name} {item.Cost}  {item.EarningsBase}");
                Logger.WriteLine($"{item.EarningsBase}");
            }
        }
Exemple #6
0
        /// <summary>
        /// Replace the estimates in the FML Miner with the Box Office Mojo estimates.
        /// </summary>
        /// <param name="fmlMiner">The FML Miner with estimate data.</param>
        private void LoadBoxOfficeMojoEstimates(IMiner fmlMiner)
        {
            //var gameSunday = MovieDateUtil.LastSunday();
            var gameSunday    = MovieDateUtil.GameSunday();
            var mojoEstimates = new MineBoxOfficeMojo(gameSunday);
            var mojoMovies    = mojoEstimates.Mine();

            FilterMinerMovies(mojoEstimates, gameSunday);

            if (fmlMiner.Movies != null && fmlMiner.Movies.Any() &&
                mojoMovies != null && mojoMovies.Any())
            {
                foreach (var fmlMovie in fmlMiner.Movies)
                {
                    var found = mojoMovies.FirstOrDefault(item => item.Equals(fmlMovie));

                    if (found != null && found.WeekendEnding == fmlMovie.WeekendEnding)
                    {
                        fmlMovie.Earnings = found.EarningsBase;                             // DON'T assign the bonus (if there is one).
                    }
                }
            }
        }
        public void MineAll_MojoHistory()
        {
            var  nerdMiner     = new MineNerd();
            var  nerdMovies    = nerdMiner.Mine();
            var  referenceDate = nerdMovies[0].WeekendEnding.AddDays(-7);
            var  movieHistory  = new Dictionary <int, List <IMovie> >();
            bool foundHistory  = false;
            bool firstPass     = true;

            do
            {
                var mojoMiner  = new MineBoxOfficeMojo(referenceDate);
                var mojoMovies = mojoMiner.Mine();

                foundHistory = false;

                foreach (var movie in nerdMovies)
                {
                    IMovie foundMovie = (firstPass) ? mojoMovies.FirstOrDefault(item => item.Equals(movie))                         // Use fuzzy search on first pass.
                                                                                                        : mojoMovies.FirstOrDefault(item => item.Name == movie.Name);

                    if (foundMovie != null)
                    {
                        if (movieHistory.ContainsKey(movie.Id))
                        {
                            movieHistory[movie.Id].Add(foundMovie);
                        }
                        else
                        {
                            movieHistory.Add(movie.Id, new List <IMovie> {
                                foundMovie
                            });
                        }

                        foundHistory = true;

                        if (firstPass)
                        {
                            // Use Mojo's name (hopefully) they don't change mid-stream.
                            movie.Name = foundMovie.Name;
                        }
                    }
                }

                firstPass = false;

                referenceDate = referenceDate.AddDays(-7);
            } while (foundHistory);

            foreach (var movie in nerdMovies)
            {
                List <IMovie> movies  = movieHistory.ContainsKey(movie.Id) ? movieHistory[movie.Id] : null;
                string        history = null;

                if (movies != null)
                {
                    foreach (var hist in movies)
                    {
                        if (history != null)
                        {
                            history += ", ";
                        }

                        history += hist.Earnings.ToString("N0");
                    }
                }

                Logger.WriteLine($"{movie.Name,-30} {history}");
            }

            foreach (var movie in nerdMovies)
            {
                List <IMovie> movies  = movieHistory.ContainsKey(movie.Id) ? movieHistory[movie.Id] : null;
                string        history = null;

                if (movies != null)
                {
                    foreach (var hist in movies)
                    {
                        if (history != null)
                        {
                            history += ", ";
                        }

                        history += hist.Earnings.ToString("N0");
                    }
                }

                Logger.WriteLine($"{movie.Name,-30} {history}");
            }
        }