]> fortfriendship.online Git - gnargle.github.io.git/blob - RSSGen/Program.cs
19f6832f2b59a8b5a476f019cba08abda86e8afa
[gnargle.github.io.git] / RSSGen / Program.cs
1 using RssFeedGenerator;
2 using System;
3 using System.Collections.Generic;
4 using System.IO;
5 using System.Runtime.InteropServices;
6
7 // See https://aka.ms/new-console-template for more information
8 Console.WriteLine("Scanning entries folder for latest files");
9
10 var folder = String.Empty;
11
12 if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
13 {
14 folder = Path.Combine(Directory.GetCurrentDirectory(), "../entries");
15 }
16 else
17 {
18 folder = Path.Combine(Directory.GetCurrentDirectory(), "../../../../entries");
19 }
20 var filePaths = Directory.EnumerateFiles(folder);
21 var fileInfos = new List<FileInfo>();
22
23 if (filePaths.Any())
24 {
25 foreach (var path in filePaths)
26 {
27 if (Path.GetFileNameWithoutExtension(path).Equals("template", StringComparison.InvariantCultureIgnoreCase))
28 continue;
29 var fInfo = new FileInfo(path);
30 fileInfos.Add(fInfo);
31 }
32 }
33
34 Console.WriteLine("Scanning projects folder for latest files");
35
36 if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
37 {
38 folder = Path.Combine(Directory.GetCurrentDirectory(), "../projects");
39 }
40 else
41 {
42 folder = Path.Combine(Directory.GetCurrentDirectory(), "../../../../projects");
43 }
44
45 filePaths = Directory.EnumerateFiles(folder);
46
47 if (filePaths.Any())
48 {
49 foreach (var path in filePaths)
50 {
51 var fInfo = new FileInfo(path);
52 fileInfos.Add(fInfo);
53 }
54 }
55
56 fileInfos = fileInfos.OrderByDescending(f => f.CreationTimeUtc).Take(10).ToList();
57
58 var myRSS = new rss();
59
60 myRSS.version = 2.0m;
61
62 myRSS.channel = new rssChannel
63 {
64 title = "athene.gay entries",
65 description = "blog entries for athene.gay",
66 language = "en-GB",
67 link = "https://athene.gay",
68 item = new List<rssChannelItem>(),
69 link1 = new link
70 {
71 href = "https://athene.gay/feed.xml",
72 rel = "self",
73 type = "application/rss+xml",
74 }
75 };
76
77 foreach (var file in fileInfos)
78 {
79 var item = new rssChannelItem()
80 {
81 title = Path.GetFileNameWithoutExtension(file.Name),
82 pubDate = file.CreationTimeUtc.ToString("r"),
83 };
84 if (file.FullName.Contains("entries"))
85 {
86 item.link = "https://athene.gay/entries/" + Path.GetFileName(file.Name);
87 }
88 else if (file.FullName.Contains("projects"))
89 {
90 item.link = "https://athene.gay/projects/" + Path.GetFileName(file.Name);
91 }
92 item.guid = new rssChannelItemGuid()
93 {
94 isPermaLink = true,
95 Value = item.link
96 };
97 myRSS.channel.item.Add(item);
98 }
99
100 var output = Generator.SerializeRSS(myRSS);
101
102 var rssPath = Path.Combine(Directory.GetCurrentDirectory(), "../../../../feed.xml");
103
104 if (File.Exists(rssPath))
105 {
106 File.Delete(rssPath);
107 }
108
109 Console.WriteLine("RSS generated, outputting to console and file");
110 Console.WriteLine(output);
111
112 File.WriteAllText(rssPath, output);