From 3eb32ab632a41a671f83e9c2452d39ea4f88a057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yusuf=20=C4=B0pek?= Date: Tue, 1 Mar 2022 15:02:12 +0300 Subject: [PATCH] generateRSS eklendi. --- .gitignore | 3 ++ generateRSS.js | 80 ++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- pages/rehber/[slug].js | 2 +- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 generateRSS.js diff --git a/.gitignore b/.gitignore index 217e6a3..9825c0e 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ yarn-error.log* blog/ tags/ + +#rss +public/rss diff --git a/generateRSS.js b/generateRSS.js new file mode 100644 index 0000000..5b8bc98 --- /dev/null +++ b/generateRSS.js @@ -0,0 +1,80 @@ +const { createClient } = require("contentful"); +const marked = require("marked"); +const fs = require("fs"); +const path = require("path"); + +marked.setOptions({ + renderer: new marked.Renderer(), + pedantic: false, + gfm: true, + breaks: false, + sanitize: false, + smartLists: true, + smartypants: false, + xhtml: true, +}); + + +const client = createClient({ + space: process.env.CONTENTFUL_SPACE_ID, + accessToken: process.env.CONTENTFUL_ACCESS_KEY, +}); + +const posts = async () => { + try { + let res = await client.getEntries({ content_type: "rehber" }); + return res; + } catch (err) { + console.log(err); + } +}; + +const fetchPosts = async () => { + let res = await posts(); + return res.items; +}; + +async function buildRssItems() { + const items = await fetchPosts(); + return items + .map((item) => { + const text = `${marked(item.fields.rehber)}`; + const summary = item.fields.description; + const link = `https://teknolojirehberleri.xyz/rehber/${item.fields.slug}`; + const title = item.fields.title; + + return ` + + ${title} + + ${link} + ${item.sys.updatedAt} + ${summary} + ${text} + + `; + }) + .join(""); +} + + +async function generateRSS() { + const rssFeed = ` + + Yusuf İpek + + ${await buildRssItems()} + `; + + const staticOutputPath = path.join(process.cwd(), "public"); + + fs.writeFile(`${staticOutputPath}/rss`, rssFeed, (err) => { + if (err) { + console.log(err); + } else { + console.log(`File written successfully.`); + } + }); +} + +generateRSS(); diff --git a/package.json b/package.json index bd19c56..375f415 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build", + "build": "next build && node generateRSS", "start": "next start", "lint": "next lint" }, diff --git a/pages/rehber/[slug].js b/pages/rehber/[slug].js index 298e80d..e78bec6 100644 --- a/pages/rehber/[slug].js +++ b/pages/rehber/[slug].js @@ -63,6 +63,6 @@ export async function getStaticProps({ params }) { return { props: { posts: items[0] }, - revalidate: 10, + revalidate: 300, }; }