mtg-rules-dler/Program.cs

65 lines
1.9 KiB
C#

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, "#"));
}
}
}