private static void FillTitlesInImdbTitleFile(string pathTitleAkaImdbFile, ref List <Film> listOfMoviesUnexistingOrIncompleteInDb) { Console.WriteLine($"Number of unexisting or uncomplete movies : {listOfMoviesUnexistingOrIncompleteInDb.Count}"); Console.WriteLine("Starting check in title file at : " + DateTime.Now.ToString("t")); if (listOfMoviesUnexistingOrIncompleteInDb.Count == 0) { return; } var listTitleOfAMovie = new List <LigneTitleAkaImdb>(); string previousId = string.Empty; string currentId = string.Empty; string line = string.Empty; string chosenTitle = string.Empty; int numberOfTitlesChecked = 0; int numberOfLinesChecked = 0; using (StreamReader sr = File.OpenText(pathTitleAkaImdbFile)) { sr.ReadLine(); // column names while ((line = sr.ReadLine()) != null) { numberOfLinesChecked++; if (numberOfLinesChecked % 100000 == 0) { Console.WriteLine($"{numberOfLinesChecked} lines checked, at :" + DateTime.Now.ToString("t")); } string[] ligne = line.Split("\t"); if (ligne.Length != 8) { throw new InvalidDataException("ligne.Length != 8, value : " + line); } if (!listOfMoviesUnexistingOrIncompleteInDb.Any(m => m.Id == ligne[0])) { continue; } currentId = ligne[0]; if (!string.IsNullOrEmpty(previousId) && currentId != previousId) { chosenTitle = FindTheFrenchTitle(listTitleOfAMovie); listOfMoviesUnexistingOrIncompleteInDb.Find(m => m.Id == previousId).Name = chosenTitle; listTitleOfAMovie.Clear(); numberOfTitlesChecked++; } previousId = currentId; var ligneFilm = new LigneTitleAkaImdb() { ImdbId = ligne[0], Ordering = ligne[1], Title = ligne[2], Region = ligne[3], Language = ligne[4], Type = ligne[5] }; listTitleOfAMovie.Add(ligneFilm); } if (listTitleOfAMovie.Count > 0) { // One last time chosenTitle = FindTheFrenchTitle(listTitleOfAMovie); listOfMoviesUnexistingOrIncompleteInDb.Find(m => m.Id == previousId).Name = chosenTitle; } } Console.WriteLine("Checked titles : " + numberOfTitlesChecked); Console.WriteLine("Checked lines : " + numberOfLinesChecked); }
private void FillTitlesInImdbTitleFile(string pathTitleAkaImdbFile, ref List <TopRatedMovie> listExistingMovies) { Console.WriteLine("Starting check in title file at : " + DateTime.Now.ToString("t")); if (listExistingMovies.Count == 0) { Console.WriteLine("listExistingMovies.Count == 0 at : " + DateTime.Now.ToString("t")); return; } var listTitleOfAMovie = new List <LigneTitleAkaImdb>(); List <TopRatedMovie> listMoviesToUpdate = new List <TopRatedMovie>(); string previousId = string.Empty; string currentId = string.Empty; string line = string.Empty; string chosenTitle = string.Empty; int totalToUpdate = 0; using (StreamReader sr = File.OpenText(pathTitleAkaImdbFile)) { for (var i = 1; i < START_AT_LINE; i++) { sr.ReadLine(); } Console.WriteLine($"{START_AT_LINE} skipped lines, at :" + DateTime.Now.ToString("t")); while ((line = sr.ReadLine()) != null) { NumberOfLinesChecked++; if (NumberOfLinesChecked % 100000 == 0) { Console.WriteLine($"{NumberOfLinesChecked} lines checked, at :" + DateTime.Now.ToString("t")); } string[] ligne = line.Split("\t"); if (ligne.Length != 8) { throw new InvalidDataException("ligne.Length != 8, value : " + line); } if (!listExistingMovies.Any(m => m.Id == ligne[0])) { continue; } currentId = ligne[0]; if (!string.IsNullOrEmpty(previousId) && currentId != previousId) { chosenTitle = FindTheFrenchTitle(listTitleOfAMovie); var film = listExistingMovies.Find(m => m.Id == previousId); film.Name = chosenTitle; listMoviesToUpdate.Add(film); if (CheckAndSaveInDatabaseEachXMovies(listMoviesToUpdate, ref totalToUpdate)) { listMoviesToUpdate = new List <TopRatedMovie>(); } listTitleOfAMovie.Clear(); NumberOfTitlesChecked++; } previousId = currentId; var ligneFilm = new LigneTitleAkaImdb() { ImdbId = ligne[0], Ordering = ligne[1], Title = ligne[2], Region = ligne[3], Language = ligne[4], Type = ligne[5] }; listTitleOfAMovie.Add(ligneFilm); } if (listTitleOfAMovie.Count > 0) { // One last time chosenTitle = FindTheFrenchTitle(listTitleOfAMovie); var film = listExistingMovies.Find(m => m.Id == previousId); film.Name = chosenTitle; listMoviesToUpdate.Add(film); savingTasks.Add(SaveInDatabaseMoviesSync(listMoviesToUpdate, totalToUpdate)); Task.WaitAll(savingTasks.ToArray()); NumberOfTitlesChecked++; } } Console.WriteLine("Checked titles : " + NumberOfTitlesChecked); Console.WriteLine("Checked lines : " + NumberOfLinesChecked); }