added RSS feed for devlog

This commit is contained in:
2025-12-23 18:12:07 +00:00
parent f52d94751b
commit 3489060156
4 changed files with 71 additions and 0 deletions

View File

@@ -45,6 +45,8 @@
<Content> <Content>
<h1 class="gradient-title"><i>Moin!</i> ~ welcome to my website :)</h1> <h1 class="gradient-title"><i>Moin!</i> ~ welcome to my website :)</h1>
<a href="/projects/projectn5/devlog/feed/">feed here</a>
<div class="container"> <div class="container">
<div class="subcontainer"> <div class="subcontainer">
<Gallery entries={[ <Gallery entries={[

View File

@@ -0,0 +1,30 @@
<script lang="ts">
import BannerTitleAlt from "$lib/banner-title-alt.svelte";
import Content from "$lib/content.svelte";
import LinkList, { type LinkEntry } from "$lib/link-list.svelte";
let feeds: LinkEntry[] = [
{
text: "Project N5 devlog",
link: "/projects/projectn5/devlog/feed.xml",
},
]
</script>
<svelte:head>
<title>Feeds | denizk0461</title>
</svelte:head>
<BannerTitleAlt
title="Feeds"
banner="/feeds/banner.webp"
bannerAlt="Mirror picture of me, pixelated beyond recognition"
subtitle="XML feeds"
pixelated
/>
<Content>
<p>This is a list of RSS feeds I maintain on this website. You can subscribe to them by adding the link of any feed to an RSS reader of your liking.</p>
<LinkList entries={feeds} />
</Content>

View File

@@ -0,0 +1,39 @@
export const prerender = true;
import { posts, type DevlogPost } from "../posts";
const xml = (tposts: Map<string, DevlogPost>) => `<?xml version="1.0" encoding="UTF-8" ?>
<rss xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:atom="https://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>denizk0461</title>
<link>https://denizk0461.dev/projects/projectn5/devlog/</link>
<description><![CDATA[Development log for the game Homesick by denizk0461]]></description>
${getEntries()}
</channel>
</rss>`;
function getEntries(): String {
var val = "";
var entries = posts.entries().map((post, index) =>
`<item>
<title><![CDATA[${post[1].title}]]></title>
<description><![CDATA[${post[1].description}]]></description>
<link>https://denizk0461.dev/projects/projectn5/devlog/${post[0]}</link>
<guid isPermaLink="true">https://denizk0461.dev/projects/projectn5/devlog/${post[0]}</guid>
<pubDate><![CDATA[${new Date(post[1].date)}]]></pubDate>
</item>
`)
entries.forEach(entry => {
val += entry;
})
return val;
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export async function GET() {
const headers = {
'Cache-Control': 'max-age=0, s-maxage=600',
'Content-Type': 'application/xml',
};
const body = xml(posts);
return new Response(body);
}

BIN
static/feeds/banner.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB