49 lines
1.1 KiB
JavaScript
49 lines
1.1 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 () => {
|
|
let urls = await Promise.all([
|
|
getMenuUrls(),
|
|
getPageUrls(),
|
|
])
|
|
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" })
|
|
})()
|