65 lines
1.9 KiB
C#
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, "#"));
|
|
}
|
|
}
|
|
}
|