const getDate = (date) => {
if (date) {
return new Date(date).toUTCString();
} else {
return new Date().toUTCString();
}
}
const writeFile = async (obj) => {
const parseData = JSON.stringify(obj);
const rss = await createRss(obj);
fs.writeFileSync("./src/routes/blog/_posts.json", parseData);
console.log("Datos guardados");
fs.writeFileSync('./static/rss.xml', rss);
console.log('Update rss.xml');
};
const createRss = async (data) => {
const parseItems = await data.map(item => {
const pubDate = getDate(item.createdAt);
return `
<item>
<title><![CDATA[${item.title}]]></title>
<link> ${blogUrl}/blog/${item.slug} </link>
<description><![CDATA[${item.desc}]]></description>
<category>
<![CDATA[${item.tag}]]>
</category>
<dc:creator>
<![CDATA[${blogTitle}]]>
</dc:creator>
<pubDate>
${pubDate}
</pubDate>
<media:content url="${blogCover}" medium="image" />
<content:encoded>
<![CDATA[${item.html}]]>
</content:encoded>
</item>
`
}).join('');
const template = `
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title> <![CDATA[${blogTitle}]]> </title>
<description>
<![CDATA[${blogDesc}]]>
</description>
<image>
<![CDATA[${blogFavicon}]]>
<title>
<![CDATA[${blogTitle}]]>
</title>
<link>${blogUrl}</link>
</image>
<generator>
SveltePractico
</generator>
<latBuildDate>
${getDate()}
</latBuildDate>
<atom:link href="${blogUrl}/rss.xml" rel="selft" type="application/rss+xml" />
<ttl>60</ttl>
${parseItems}
</channel>
</rss>
`
return template;
};
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?