Introducing Gallery Image feed
This commit is contained in:
parent
23c9584cfe
commit
cf440e2160
3 changed files with 103 additions and 4 deletions
1
data/external/cms.js
vendored
1
data/external/cms.js
vendored
|
|
@ -317,6 +317,7 @@ export const getAllGalleryImages = async () => {
|
|||
const { serverRuntimeConfig } = getConfig()
|
||||
const qs = require('qs')
|
||||
var query = qs.stringify({
|
||||
sort: ['createdAt:desc'],
|
||||
populate: '*'
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Feed } from "feed"
|
||||
import { Podcast } from 'podcast';
|
||||
import getConfig from 'next/config'
|
||||
import { getAllPodcastSeries, getAllPosts, getProjectDetails } from "../external/cms"
|
||||
import { getAllGalleryImages, getAllPodcastSeries, getAllPosts, getProjectDetails } from "../external/cms"
|
||||
import fs from "fs"
|
||||
import config from './config'
|
||||
import htmlFindReplaceElementAttrs from "html-find-replace-element-attrs"
|
||||
|
|
@ -31,7 +31,7 @@ export const generateRssFeed = async (filter) => {
|
|||
|
||||
email: "james@angrybeanie.com",
|
||||
|
||||
link: "https://twitter.com/purserj",
|
||||
link: "https://www.angrybeanie.com",
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -235,3 +235,100 @@ export const generatePodcastFeeds = async () => {
|
|||
})
|
||||
}
|
||||
|
||||
export const generateGalleryImageFeed = async () => {
|
||||
const galleryImages = await getAllGalleryImages()
|
||||
|
||||
const Title = "Angry Beanie Gallery Image feed"
|
||||
|
||||
const Description = "A feed of the photos that I post"
|
||||
|
||||
const feedTitle = "gallery-image-feed"
|
||||
|
||||
const siteURL = config.siteURL;
|
||||
|
||||
const date = new Date();
|
||||
|
||||
const author = {
|
||||
|
||||
name: "James Purser",
|
||||
|
||||
email: "james@angrybeanie.com",
|
||||
|
||||
link: "https://www.angrybeanie.com",
|
||||
|
||||
};
|
||||
|
||||
const feed = new Feed({
|
||||
|
||||
title: Title,
|
||||
|
||||
description: Description,
|
||||
|
||||
id: siteURL,
|
||||
|
||||
link: siteURL,
|
||||
|
||||
image: `${siteURL}/public/images/logo.png`,
|
||||
|
||||
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,
|
||||
|
||||
});
|
||||
|
||||
galleryImages.data.forEach((post) => {
|
||||
const siteURL = config.siteURL;
|
||||
|
||||
const { serverRuntimeConfig, publicRuntimeConfig } = getConfig()
|
||||
|
||||
const imgUrl = `${siteURL}${post.attributes.Image.data.attributes.url}?width=700`
|
||||
|
||||
var postBody = `<img src="${imgUrl}" alt="${post.attributes.Image.data.attributes.alternativeText}" />`
|
||||
|
||||
const url = `${siteURL}/${post.attributes.galleries.data[0].attributes.Slug}/${post.attributes.Slug}`
|
||||
|
||||
feed.addItem({
|
||||
|
||||
title: post.attributes.Title,
|
||||
|
||||
id: url,
|
||||
|
||||
link: url,
|
||||
|
||||
description: postBody,
|
||||
|
||||
content: postBody,
|
||||
|
||||
author: [author],
|
||||
|
||||
contributor: [author],
|
||||
|
||||
date: new Date(post.attributes.publishedAt),
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
fs.writeFileSync(`./public/feed/${feedTitle}-feed.xml`, feed.rss2());
|
||||
|
||||
fs.writeFileSync(`./public/feed/${feedTitle}-atom.xml`, feed.atom1());
|
||||
|
||||
fs.writeFileSync(`./public/feed/${feedTitle}-feed.json`, feed.json1());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,15 +4,16 @@ import PublishedInfo from '../components/publishedinfo.js'
|
|||
import getConfig from 'next/config'
|
||||
import Head from 'next/head'
|
||||
import config from '../data/internal/config'
|
||||
import { generatePodcastFeeds, generateRssFeed } from "../data/internal/feed-generator"
|
||||
import { generateGalleryImageFeed, generatePodcastFeeds, generateRssFeed } from "../data/internal/feed-generator"
|
||||
import { generateSitemap } from "../data/internal/sitemap-generator"
|
||||
import { getLatestContent, getLatestPodcastEpisode } from "../data/external/cms"
|
||||
import { getLatestGalleryImage } from "../data/external/cms"
|
||||
//import { getLatestGalleryImage } from "../data/external/cms"
|
||||
|
||||
export async function getStaticProps(context) {
|
||||
generateRssFeed()
|
||||
generateRssFeed('tech-and-disability')
|
||||
generatePodcastFeeds()
|
||||
generateGalleryImageFeed()
|
||||
generateSitemap()
|
||||
const { serverRuntimeConfig } = getConfig()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue