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)); }
/// <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}"); } }
/// <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}"); } }