import { Feed } from "feed"
import { Podcast } from 'podcast';
import getConfig from 'next/config'
import { getAllPodcastSeries, getAllPosts, getProjectDetails } from "../external/cms"
import fs from "fs"
import config from './config'
import htmlFindReplaceElementAttrs from "html-find-replace-element-attrs"
import Image from "next/legacy/image"
export const generateRssFeed = async (filter) => {
const project = await getProjectDetails(filter);
const posts = typeof filter === "undefined" ? await getAllPosts() : await getAllPosts(project.data[0].attributes.Slug);
const siteURL = config.siteURL;
const { serverRuntimeConfig, publicRuntimeConfig } = getConfig()
const date = new Date();
const Title = typeof filter === "undefined" ? "Angry Beanie" : project.data[0].attributes.Title
const Description = typeof filter == "undefined" ? "A place for all my thoughts and projects" : project.data[0].attributes.Description
const feedTitle = typeof filter === "undefined" ? "Angry-Beanie" : project.data[0].attributes.Slug
const author = {
name: "James Purser",
email: "james@angrybeanie.com",
link: "https://twitter.com/purserj",
};
const feed = new Feed({
title: Title,
description: Description,
id: siteURL,
link: siteURL,
image: `${siteURL}/public/images/logo.svg`,
favicon: `${siteURL}/public/images/favicon.png`,
copyright: `All rights reserved ${date.getFullYear()}, James Purser`,
updated: date,
generator: "Feed for Node.js",
feedLinks: {
rss2: `${siteURL}/feed/${feedTitle}-feed.xml`,
json: `${siteURL}/feed/${feedTitle}-feed.json`,
atom: `${siteURL}/feed/${feedTitle}-atom.xml`,
},
author,
});
posts.data.forEach((post) => {
const url = `${siteURL}/news/${post.attributes.Slug}`;
const body = htmlFindReplaceElementAttrs.replace(
post.attributes.FullBody,
item => item.parsedUrl,
{
tag: "img",
attr: "src",
parseAttrValueAsUrl: true,
baseUrl: config.siteURL,
urlProtocol: "https",
}
)
var fullbody;
if (post.attributes.FeatureImage.data) {
const imagepath = serverRuntimeConfig.media_path + post.attributes.FeatureImage.data.attributes.formats.large.url
const featuredImage =