using System; using System.IO; using System.Net; using System.Text.RegularExpressions; using HtmlAgilityPack; namespace mtg_rules_dler { class Program { static void Main(string[] args) { HtmlWeb web = new HtmlWeb(); var htmlDoc = web.Load("https://magic.wizards.com/en/game-info/gameplay/rules-and-formats/rules"); var links = htmlDoc.DocumentNode.SelectNodes("//div[contains(@id,'comprehensive-rules')]//a"); if (links == null || links.Count == 0) { Console.Error.WriteLine("can't find any links."); return; } var linkTarget = ""; var found = false; foreach (var link in links) { linkTarget = link.Attributes["href"]?.Value; if (linkTarget?.EndsWith(".txt") == true) { found = true; break; } } if (!found) { Console.Error.WriteLine("couldn't find link to rules.txt"); return; } var request = WebRequest.Create(linkTarget); var response = request.GetResponse(); var responseAsText = ""; using (var dataStream = new StreamReader(response.GetResponseStream())) { responseAsText = dataStream.ReadToEnd(); } if (File.Exists("MagicCompRules.txt")) { if (File.ReadAllText("MagicCompRules.txt") == responseAsText) { Console.WriteLine("no update."); return; } } File.WriteAllText("MagicCompRules.txt", responseAsText); File.WriteAllText("MagicCompRules.NoNums.txt", new Regex("\\b\\d+(\\.\\d+)?([\\w]+)?\\b").Replace(responseAsText, "#")); } } }