public List <string> GetTvSeriesIdsFromIMDB(string destinationFilePath) { List <string> ids = new List <string>(); CsvReader csvReader = new CsvReader(new StreamReader(_originalFilePath), new Configuration() { Delimiter = "\t", HasHeaderRecord = true, BadDataFound = null, IgnoreQuotes = true }); var csvWriter = new CsvWriter(new StreamWriter(destinationFilePath), new Configuration() { Delimiter = "\t", IgnoreQuotes = true, HasHeaderRecord = true }); csvWriter.WriteHeader(typeof(ImdbTitleBasicsWithRating)); csvWriter.Flush(); csvWriter.Context.Writer.WriteLine(); int total = File.ReadLines(_originalFilePath).Count(); Dictionary <string, ImdbTitleBasics> filmsList = new Dictionary <string, ImdbTitleBasics>(); while (csvReader.Read()) { var record = csvReader.GetRecord <ImdbTitleBasics>(); if (record.titleType.Equals(TV_SERIE_TYPE) && !record.isAdultBool && record.startYearInt >= 2010 && record.startYearInt < 2019 && !record.GenresList.Any(t2 => NOT_ALLOWED_GENRES.Contains(t2))) { filmsList.Add(record.tconst, record); } } FillRatings(filmsList); foreach (ImdbTitleBasics basicFilm in filmsList.Values) { if (basicFilm is ImdbTitleBasicsWithRating) { ImdbTitleBasicsWithRating film = (ImdbTitleBasicsWithRating)basicFilm; if (film.averageRatingFloat > 8.0 && film.numVotesInt > 10000) { csvWriter.WriteRecord(film); csvWriter.Flush(); csvWriter.Context.Writer.WriteLine(); csvWriter.Flush(); ids.Add(film.tconst); } } } csvWriter.Dispose(); csvReader.Dispose(); return(ids); }
private void FillRatings(Dictionary <string, ImdbTitleBasics> filmsList) { CsvReader csvReader = new CsvReader(new StreamReader(_ratingFilePath), new Configuration() { Delimiter = "\t", HasHeaderRecord = true, BadDataFound = null, IgnoreQuotes = true }); while (csvReader.Read()) { var record = csvReader.GetRecord <ImdbTitleRating>(); if (filmsList.ContainsKey(record.tconst)) { ImdbTitleBasicsWithRating filmWithRating = new ImdbTitleBasicsWithRating(filmsList[record.tconst]); filmsList[record.tconst] = filmWithRating; filmWithRating.averageRating = record.averageRating; filmWithRating.numVotes = record.numVotes; } } }