ぼざクリ タグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

33 lines
1.1 KiB

  1. import axios from 'axios'
  2. import fs from 'fs'
  3. import path from 'path'
  4. const DOMAIN = 'https://hub.nizika.monster'
  5. const API_BASE_URL = 'https://hub.nizika.monster/api'
  6. const fetchPostIds =
  7. async () => (await axios.get (`${ API_BASE_URL }/posts`)).data.posts.map (post => post.id)
  8. const fetchTagNames =
  9. async () => (await axios.get (`${ API_BASE_URL }/tags`)).data.map (tag => tag.name)
  10. const fetchWikiTitles =
  11. async () => (await axios.get (`${ API_BASE_URL }/wiki`)).data.map (page => page.title)
  12. const routes = [
  13. '/',
  14. ...(await fetchTagNames ()).map (tags => `/posts?${ (new URLSearchParams ({ tags })).toString () }`),
  15. ...(await fetchPostIds ()).map (id => `/posts/${ id }`),
  16. '/tags',
  17. '/tags/nico',
  18. '/wiki',
  19. '/wiki/changes',
  20. ...(await fetchWikiTitles ()).map (title => `/wiki/${ encodeURIComponent (title) }`),
  21. '/users',
  22. '/users/settings']
  23. const xml = `<?xml version="1.0" encoding="UTF-8"?>
  24. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  25. ${ routes.map (route => ` <url><loc>${ DOMAIN }${ route }</loc></url>`).join ('\n') }
  26. </urlset>`