]> fortfriendship.online Git - gnargle.github.io.git/blobdiff - RSSGen/Program.cs
soem format fixes
[gnargle.github.io.git] / RSSGen / Program.cs
index 12241921f4ea31b9147f0a4d182eed8214a0491c..a8ebb786edaa0552f1ebb2c6fa34ede5cd967592 100644 (file)
@@ -8,16 +8,8 @@ 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 fileInfos = new List<FileInfo>();
 
@@ -34,15 +26,23 @@ 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);
+
+if (filePaths.Any())
 {
-    folder = Path.Combine(Directory.GetCurrentDirectory(), "../../../../projects");
+    foreach (var path in filePaths)
+    {
+        var fInfo = new FileInfo(path);
+        fileInfos.Add(fInfo);
+    }
 }
 
+Console.WriteLine("Scanning diversions folder for latest files");
+
+folder = FindDirectory("diversions");
+
 filePaths = Directory.EnumerateFiles(folder);
 
 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();
 
@@ -94,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,
@@ -104,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);
+fileInfos = new List<FileInfo>();
+
+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<rssChannelItem>(),
+    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))
@@ -120,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