feat: add a firehose feed

This commit is contained in:
Devin Haska 2025-01-27 21:29:42 -08:00
parent c2b918a3c6
commit 6898c03c8f
6 changed files with 42 additions and 1 deletions

View file

@ -86,6 +86,13 @@ export const filterFavourites = (collection) => {
);
};
export const filterByTags = (collection, tags = []) => {
return collection.filter(
(item) =>
item.data.tags && !item.data.tags.every((tag) => tags.includes(tag)),
);
};
export const isOld = (dateArg) => {
const date = dayjs(dateArg);
const now = dayjs();

View file

@ -10,6 +10,7 @@ import {
allTagCounts,
entries,
filter,
filterByTags,
filterFavourites,
formatDate,
isOld,
@ -51,6 +52,7 @@ export default function (eleventyConfig) {
eleventyConfig.addFilter("entries", entries);
eleventyConfig.addFilter("filter", filter);
eleventyConfig.addFilter("filterFavourites", filterFavourites);
eleventyConfig.addFilter("filterByTags", filterByTags);
eleventyConfig.addFilter("formatDate", formatDate);
eleventyConfig.addFilter("isOld", isOld);
eleventyConfig.addFilter("keys", keys);

View file

@ -30,6 +30,7 @@ export default class {
return {
permalink: `css/styles.css`,
excludeFromSitemap: true,
eleventyExcludeFromCollections: true,
rawFilepath,
rawCss: css,
};

View file

@ -24,4 +24,8 @@ description: Feed yourself a veritable bevy of feeds.
Feeding all watching content. Also available in <a href="/feeds/movies.xml">movies</a> and <a href="/feeds/shows.xml">shows</a> varieties.
</p>
</li>
<li>
<a href="/feeds/all.xml">Firehose</a>
<p>The Firehose - you get everything!</p>
</li>
</ul>

27
src/pages/feeds/all.njk Normal file
View file

@ -0,0 +1,27 @@
---
permalink: /feeds/all.xml
layout: null
eleventyExcludeFromCollections: true
excludeFromSitemap: true
---<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>{{ meta.siteName }}</title>
<subtitle>{{ meta.siteDescription }}</subtitle>
<link href="{{ meta.url }}/feeds/all.xml" rel="self" />
<link href="{{ meta.url }}/" rel="alternate" type="text/html" />
<id>{{ meta.url }}/</id>
<author>
<name>{{ meta.author }}</name>
</author>
{% for item in collections.all | filterByTags(["page"]) %}
<entry>
<id>{{ meta.url }}{{ item.url }}</id>
<title>{{ item.data.title | escape }}</title>
<link href="{{ item.url }}{{ post.url }}" />
<pubDate>{{ item.date }}</pubDate>
{# The first tag is always a type e.g. post, page, etc. #}
{%- for tag in item.data.tags %}{% if not loop.first %}<category term="{{ tag }}" />{% endif %}{%- endfor %}
<content type="html">{{ item.content | escape }}</content>
</entry>
{% endfor %}
</feed>

View file

@ -5,7 +5,7 @@ eleventyExcludeFromCollections: true
excludeFromSitemap: true
---<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>{{ meta.siteName }}</title>
<title>Posts • {{ meta.siteName }}</title>
<subtitle>{{ meta.siteDescription }}</subtitle>
<link href="{{ meta.url }}/feeds/posts.xml" rel="self" />
<link href="{{ meta.url }}/" rel="alternate" type="text/html" />