static void Main(string[] args) { if (!File.Exists("./items.json")) { ScrapeForDb(); } var db = File.ReadAllText("./items.json").ToLower(); var ge = new GrandExchange(db); ReadLine.AutoCompletionHandler = new AutoCompletionHandler(ge.ItemDb.Keys.ToArray()); while (true) { try { var line = ReadLine.Read("#id> "); if (string.IsNullOrEmpty(line) || string.IsNullOrWhiteSpace(line)) { continue; } var cmdline = line.Split(' '); if (int.TryParse(cmdline[0], out int id)) { var item = ge.GetItemDetails(id); if (item != null) { Console.WriteLine(item.ToString()); } } else if (cmdline[0] == "/graph") { if (cmdline.Length != 2) { continue; } if (!int.TryParse(cmdline[1], out int param)) { continue; } var data = ge.GetGraphData(param); if (data == null) { continue; } foreach (var kvp in data) { Console.WriteLine($"{kvp.Key}: {kvp.Value}"); } } else if (cmdline[0] == "/latest") { if (cmdline.Length != 2) { continue; } if (!int.TryParse(cmdline[1], out int param)) { continue; } var latestPrice = ge.GetLatestPrice(param); if (latestPrice < 0) { continue; } Console.WriteLine($"Current GE price for this item is {latestPrice}gp."); } else { var item = ge.GetItemDetails(line.ToLower()); if (item != null) { Console.WriteLine(item.ToString()); } } } catch (Exception e) { Console.WriteLine(e.Message); } } }