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