Files
hudozka/scripts/sitemap.js
T
2020-02-29 01:57:43 +03:00

58 lines
1.3 KiB
JavaScript

const sitemap = require('sitemap')
const axios = require('axios')
const fs = require('fs').promises
const homeUrl = 'https://art.shlisselburg.org'
const sitemapCacheTime = 600000
const api = axios.create({
baseURL: 'https://api.tmshv.com/hudozka',
})
async function getMenuUrls(frequency = 'daily') {
const menu = [
'/',
'/collective',
]
return menu
// .filter(i => 'url' in i)
.map(url => ({
url,
changefreq: frequency
}))
}
async function getPageUrls(frequency = 'daily') {
const res = await api.get('/api/pages/urls')
return res.data.items.map(url => ({
changefreq: frequency,
url,
}))
}
async function getArticleUrls() {
const res = await api.get('/api/articles/urls')
return res.data.items.map(url => ({
changefreq: 'monthly',
url,
}))
}
(async () => {
let urls = await Promise.all([
getMenuUrls(),
getPageUrls(),
getArticleUrls(),
])
urls = urls.reduce((urls, i) => urls.concat(i))
let map = sitemap.createSitemap({
hostname: homeUrl,
cacheTime: sitemapCacheTime,
urls
})
const content = map.toString()
await fs.writeFile('dist/sitemap.xml', content, { encoding: 'utf-8' })
})()