2 using RssFeedGenerator;
4 using System.Collections.Generic;
6 using System.Runtime.InteropServices;
8 // See https://aka.ms/new-console-template for more information
9 Console.WriteLine("Scanning entries folder for latest files");
11 var folder = String.Empty;
13 if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
15 folder = Path.Combine(Directory.GetCurrentDirectory(), "../entries");
19 folder = Path.Combine(Directory.GetCurrentDirectory(), "../../../../entries");
21 var filePaths = Directory.EnumerateFiles(folder);
22 var fileInfos = new List<FileInfo>();
26 foreach (var path in filePaths)
28 if (Path.GetFileNameWithoutExtension(path).Equals("template", StringComparison.InvariantCultureIgnoreCase))
30 var fInfo = new FileInfo(path);
35 Console.WriteLine("Scanning projects folder for latest files");
37 if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
39 folder = Path.Combine(Directory.GetCurrentDirectory(), "../projects");
43 folder = Path.Combine(Directory.GetCurrentDirectory(), "../../../../projects");
46 filePaths = Directory.EnumerateFiles(folder);
50 foreach (var path in filePaths)
52 var fInfo = new FileInfo(path);
57 fileInfos = fileInfos.OrderByDescending(f => f.CreationTimeUtc).Take(10).ToList();
59 var myRSS = new rss();
63 myRSS.channel = new rssChannel
65 title = "athene.gay entries",
66 description = "blog entries for athene.gay",
68 link = "https://athene.gay",
69 item = new List<rssChannelItem>(),
72 href = "https://athene.gay/feed.xml",
74 type = "application/rss+xml",
78 foreach (var file in fileInfos)
80 var htmlString = File.ReadAllText(file.FullName);
81 OpenGraph graph = OpenGraph.ParseHtml(htmlString);
82 var item = new rssChannelItem()
85 description = graph.Metadata["og:description"].First(),
86 pubDate = file.CreationTimeUtc.ToString("r"),
88 if (file.FullName.Contains("entries"))
90 item.link = "https://athene.gay/entries/" + Path.GetFileName(file.Name);
92 else if (file.FullName.Contains("projects"))
94 item.link = "https://athene.gay/projects/" + Path.GetFileName(file.Name);
96 item.guid = new rssChannelItemGuid()
101 myRSS.channel.item.Add(item);
104 var output = Generator.SerializeRSS(myRSS);
106 var rssPath = String.Empty;
108 if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
110 rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../feed.xml");
114 rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../../../../feed.xml");
117 if (File.Exists(rssPath))
119 File.Delete(rssPath);
122 Console.WriteLine("RSS generated, outputting to console and file");
123 Console.WriteLine(output);
125 File.WriteAllText(rssPath, output);