public override async Task Prepare(DataContainer dataContainer) { // Delete old data if (Reload) { Directory.Delete(Folder, true); } // Create folder Directory.CreateDirectory(Folder); // Inernal data _InternalData internalData = new _InternalData(); // Draw header base.DrawHeader(); // Download await Download(dataContainer.Products); // Parse Parse(internalData); // SeDeSerialize Cache(dataContainer, internalData); // End info Console.WriteLine(); }
private void Cache(DataContainer dataContainer, _InternalData internalData) { string prefix = "3/3 Caching..."; Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 0), ConsoleColor.Gray); try { // Serialize or deserialize _Cache cache = null; if (Reload || !File.Exists(SerializedFile)) { cache = new _Cache(internalData); Serializer.Serialize(SerializedFile, cache); } else { cache = (_Cache)Serializer.Deserialize(SerializedFile); } Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 50), ConsoleColor.Gray); int drawEvery = Utils.PercentIntervalByLength(cache.Name.Count * 2); // Save to datacontainer for (int i = 0; i < cache.Name.Count; ++i) { // Create forex data _WikiTrendsData wtd = new _WikiTrendsData() { Value = cache.Value[i] }; // Add to data container dataContainer.GetEvent(new DateTime(cache.Date[i])).WikiTrendsDatas.Add(cache.Name[i], wtd); if (i % drawEvery == 0) { Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 50 + (double)i / cache.Name.Count * 50), ConsoleColor.Gray); } } } catch (Exception ex) { Console.WriteLine(); Utils.DrawMessage("", ex.Message, ConsoleColor.Red); Console.WriteLine(); System.Environment.Exit(1); } Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 100), ConsoleColor.Green); Console.WriteLine(); }
public _Cache(_InternalData internalData) { Name = new List <string>(); Date = new List <long>(); Value = new List <double>(); for (int i = 0; i < internalData.Events.Count; ++i) { Name.Add(internalData.Events[i].Name); Date.Add(internalData.Events[i].Date.Ticks); Value.Add(internalData.Events[i].Value); } }
private void Parse(_InternalData internalData) { string prefix = "2/3 Parsing..."; Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 0), ConsoleColor.Gray); // Files to parse string[] files = Directory.GetFiles(Folder).Where(x => x.Contains(".csv")).ToArray(); // Count when we update progress bar int drawEvery = Utils.PercentIntervalByLength(files.Length); // Download try { if (Reload || !File.Exists(SerializedFile)) { for (int i = 0; i < files.Length; ++i) { // Load lines string[] lines = File.ReadAllLines(files[i]).Skip(2).Where(x => !String.IsNullOrWhiteSpace(x)).ToArray(); // Parse lines int previousValue = -1; foreach (string l in lines) { string[] parts = l.Split(new char[] { ',', '/', '"', '.' }).Where(x => !String.IsNullOrWhiteSpace(x)).Select(x => x.Trim()).ToArray(); int year = int.Parse(parts[0]); int month = int.Parse(parts[1]); int day = int.Parse(parts[2]); int value = int.Parse(parts[3]); // Do not save first zeros, or save previous value if (value == 0 && previousValue == -1) { continue; } else if (value == 0 && previousValue != -1) { value = previousValue; } previousValue = value; internalData.Events.Add(new _Event() { Name = Path.GetFileNameWithoutExtension(files[i]).Split(new char[] { '-' })[1], Date = new DateTime(year, month, day), Value = value }); } // Update progress bar if (i % drawEvery == 0) { Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, (double)i / files.Length * 100.0), ConsoleColor.Gray); } } } } catch (Exception ex) { Console.WriteLine(); Utils.DrawMessage("", ex.Message, ConsoleColor.Red); Console.WriteLine(); System.Environment.Exit(1); } Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 100), ConsoleColor.Green); Console.WriteLine(); }