summaryrefslogtreecommitdiff
path: root/src/build/rss.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'src/build/rss.mjs')
-rw-r--r--src/build/rss.mjs49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/build/rss.mjs b/src/build/rss.mjs
new file mode 100644
index 0000000..6394af5
--- /dev/null
+++ b/src/build/rss.mjs
@@ -0,0 +1,49 @@
+import RSS from 'rss';
+import i18n from './i18n.mjs';
+
+const getRSS = (articles, baseUrl, lang) => {
+ console.log(i18n[lang]['rss']['title']);
+ const rssFeed = new RSS({
+ title: i18n[lang]['rss']['title'],
+ description: i18n[lang]['rss']['description'],
+ // eslint-disable-next-line camelcase
+ custom_namespaces: {
+ 'visible_description': i18n[lang]['rss']['description']
+ },
+ site_url: "https://ache.one",
+ feed_url: `${baseUrl}rss.xml`,
+ canonical: `${baseUrl}rss.xml`,
+ // eslint-disable-next-line camelcase
+ site_url: baseUrl,
+ // eslint-disable-next-line camelcase
+ image_url: `${baseUrl}ache.svg`,
+ language: lang,
+ pubDate: Date(),
+ ttl: '1440',
+ });
+
+ for (const article of articles.slice(0, 10)) {
+ let image_url = (article.imageUrl[0] != '/') ? `/${article.imageUrl}` : article.imageUrl;
+
+ rssFeed.item({
+ title: article.title,
+ description: '<article>' + article.content + '</article>',
+ // eslint-disable-next-line camelcase
+ image_url,
+ url: `${baseUrl}articles/${article.name}`,
+ guid: article.domTitle,
+ author: 'ache',
+ date: article.metaData.pubDateISO,
+ categories: article.metaData.tags,
+ // eslint-disable-next-line camelcase
+ custom_elements: [
+ {logo: image_url},
+ {intro: article.introDesc},
+ ],
+ });
+ }
+
+ return rssFeed.xml({indent: false}).replace(/<\?xml version="1.0" encoding="UTF-8"\?>/g, '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/style.xsl"?>');
+};
+
+export default getRSS;