diff --git a/lottery-co-uk-scraper/EuroMillions/DrawNumber.cs b/lottery-co-uk-scraper/EuroMillions/DrawNumber.cs new file mode 100644 index 0000000..e43582f --- /dev/null +++ b/lottery-co-uk-scraper/EuroMillions/DrawNumber.cs @@ -0,0 +1,56 @@ +using HtmlAgilityPack; +using lottery_co_uk_scraper.core.Models; +using lottery_co_uk_scraper.Utilities; +using System.Text.RegularExpressions; + +namespace lottery_co_uk_scraper.EuroMillions +{ + internal class DrawNumber + { + public static int ProcessDrawNumberFromMeta(HtmlDocument doc, EurosResult eurosResult) + { + var metaKeywords = doc.DocumentNode.Descendants("meta") + .FirstOrDefault(x => x.GetAttributeValue("name", "") == "keywords"); + + if (metaKeywords != null) + { + var keywordsText = metaKeywords.GetAttributeValue("content", ""); + var drawNumberMatch = Regex.Match(keywordsText, @"euromillions draw (\d+)"); + + if (drawNumberMatch.Success) + { + if (int.TryParse(drawNumberMatch.Groups[1].Value, out int drawNumber)) + { + Console.WriteLine("Draw Number: " + drawNumber); + + AssignDrawNumberToModelProperty(drawNumber, eurosResult); + return drawNumber; + } + else + { + Console.WriteLine("Failed to parse draw number."); + + return 0; + } + } + else + { + Console.WriteLine("Draw Number not found."); + + return 0; + } + } + else + { + Console.WriteLine("Meta keywords not found."); + + return 0; + } + } + + public static void AssignDrawNumberToModelProperty(int drawNumber, EurosResult eurosResult) + { + PropertyManager.SetProperty(nameof(eurosResult.DrawNumber), eurosResult, drawNumber); + } + } +} \ No newline at end of file