X-Git-Url: https://fortfriendship.online/gitweb/gnargle.github.io.git/blobdiff_plain/644daf75452e1a5df0e365cb4a8409379fc519a2..dd16d1fac664cbc63415c53330aee44027cf96b8:/RSSGen/Program.cs?ds=inline diff --git a/RSSGen/Program.cs b/RSSGen/Program.cs index a574f9a..1d49776 100644 --- a/RSSGen/Program.cs +++ b/RSSGen/Program.cs @@ -8,17 +8,9 @@ using System.Runtime.InteropServices; // See https://aka.ms/new-console-template for more information Console.WriteLine("Scanning entries folder for latest files"); -var folder = String.Empty; +var folder = FindDirectory("entries"); -if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) -{ - folder = Path.Combine(Directory.GetCurrentDirectory(), "../entries"); -} -else -{ - folder = Path.Combine(Directory.GetCurrentDirectory(), "../../../../entries"); -} -var filePaths = Directory.EnumerateFiles(folder); +var filePaths = Directory.EnumerateFiles(folder, "*.html"); var fileInfos = new List(); if (filePaths.Any()) @@ -34,16 +26,24 @@ if (filePaths.Any()) Console.WriteLine("Scanning projects folder for latest files"); -if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) -{ - folder = Path.Combine(Directory.GetCurrentDirectory(), "../projects"); -} -else +folder = FindDirectory("projects"); + +filePaths = Directory.EnumerateFiles(folder, "*.html"); + +if (filePaths.Any()) { - folder = Path.Combine(Directory.GetCurrentDirectory(), "../../../../projects"); + foreach (var path in filePaths) + { + var fInfo = new FileInfo(path); + fileInfos.Add(fInfo); + } } -filePaths = Directory.EnumerateFiles(folder); +Console.WriteLine("Scanning diversions folder for latest files"); + +folder = FindDirectory("diversions"); + +filePaths = Directory.EnumerateFiles(folder, "*.html"); if (filePaths.Any()) { @@ -54,7 +54,7 @@ if (filePaths.Any()) } } -fileInfos = fileInfos.OrderByDescending(f => f.CreationTimeUtc).Take(10).ToList(); +fileInfos = fileInfos.OrderByDescending(f => f.CreationTimeUtc).Take(20).ToList(); var myRSS = new rss(); @@ -79,11 +79,12 @@ foreach (var file in fileInfos) { var htmlString = File.ReadAllText(file.FullName); OpenGraph graph = OpenGraph.ParseHtml(htmlString); + var publishDate = DateTime.Parse(graph.Metadata["article:published_time"].First()); var item = new rssChannelItem() { title = graph.Title, description = graph.Metadata["og:description"].First(), - pubDate = file.CreationTimeUtc.ToString("r"), + pubDate = publishDate.ToString("r"), }; if (file.FullName.Contains("entries")) { @@ -93,6 +94,10 @@ foreach (var file in fileInfos) { item.link = "https://athene.gay/projects/" + Path.GetFileName(file.Name); } + else if (file.FullName.Contains("diversions")) + { + item.link = "https://athene.gay/diversions/" + Path.GetFileName(file.Name); + } item.guid = new rssChannelItemGuid() { isPermaLink = true, @@ -103,15 +108,90 @@ foreach (var file in fileInfos) var output = Generator.SerializeRSS(myRSS); -var rssPath = String.Empty; +var rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../feed.xml"); -if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) +if (!File.Exists(rssPath)) { - rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../feed.xml"); + rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../../../../feed.xml"); } -else + +if (File.Exists(rssPath)) { - rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../../../../feed.xml"); + File.Delete(rssPath); +} + +Console.WriteLine("Main RSS generated, outputting to file"); + +File.WriteAllText(rssPath, output); + +Console.WriteLine("Generating hentai subseries feed"); + +folder = FindDirectory("diversions/hentaigames"); + +filePaths = Directory.EnumerateFiles(folder, "*.html"); +fileInfos = new List(); + +if (filePaths.Any()) +{ + foreach (var path in filePaths) + { + if (Path.GetFileNameWithoutExtension(path).Equals("template", StringComparison.InvariantCultureIgnoreCase)) + continue; + if (Path.GetFileNameWithoutExtension(path).Equals("list", StringComparison.InvariantCultureIgnoreCase)) + continue; + var fInfo = new FileInfo(path); + fileInfos.Add(fInfo); + } +} + +fileInfos = fileInfos.OrderByDescending(f => f.CreationTimeUtc).Take(20).ToList(); + +myRSS = new rss(); + +myRSS.version = 2.0m; + +myRSS.channel = new rssChannel +{ + title = "athene.gay - hentai games subseries entries", + description = "entries in the hentai game sub-series for athene.gay", + language = "en-GB", + link = "https://athene.gay/hentaigames/list.html", + item = new List(), + link1 = new link + { + href = "https://athene.gay/hentaigames.xml", + rel = "self", + type = "application/rss+xml", + } +}; + +foreach (var file in fileInfos) +{ + var htmlString = File.ReadAllText(file.FullName); + OpenGraph graph = OpenGraph.ParseHtml(htmlString); + var publishDate = DateTime.Parse(graph.Metadata["article:published_time"].First()); + var item = new rssChannelItem() + { + title = graph.Title, + description = graph.Metadata["og:description"].First(), + pubDate = publishDate.ToString("r"), + link = "https://athene.gay/diversions/hentaigames/" + Path.GetFileName(file.Name) + }; + item.guid = new rssChannelItemGuid() + { + isPermaLink = true, + Value = item.link + }; + myRSS.channel.item.Add(item); +} + +output = Generator.SerializeRSS(myRSS); + +rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../hentaigames.xml"); + +if (!File.Exists(rssPath)) +{ + rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../../../../hentaigames.xml"); } if (File.Exists(rssPath)) @@ -119,7 +199,17 @@ if (File.Exists(rssPath)) File.Delete(rssPath); } -Console.WriteLine("RSS generated, outputting to console and file"); -Console.WriteLine(output); +Console.WriteLine("Hentai Games RSS generated, outputting to file"); -File.WriteAllText(rssPath, output); \ No newline at end of file +File.WriteAllText(rssPath, output); + + +string FindDirectory(string folderName) +{ + var folder = Path.Combine(Directory.GetCurrentDirectory(), $"../{folderName}"); + if (!Directory.Exists(folder)) + { + folder = Path.Combine(Directory.GetCurrentDirectory(), $"../../../../{folderName}"); + } + return folder; +} \ No newline at end of file