import * as express from 'express'
import { asyncMiddleware } from '../middlewares'
import { ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants'
-import * as sitemapModule from 'sitemap'
+import { SitemapStream, streamToPromise } from 'sitemap'
import { VideoModel } from '../models/video/video'
import { VideoChannelModel } from '../models/video/video-channel'
import { AccountModel } from '../models/account/account'
urls = urls.concat(await getSitemapVideoChannelUrls())
urls = urls.concat(await getSitemapAccountUrls())
- const sitemap = sitemapModule.createSitemap({
- hostname: WEBSERVER.URL,
- urls: urls
- })
+ const sitemapStream = new SitemapStream({ hostname: WEBSERVER.URL })
+
+ for (const urlObj of urls) {
+ sitemapStream.write(urlObj)
+ }
+ sitemapStream.end()
- const xml = sitemap.toXML()
+ const xml = await streamToPromise(sitemapStream)
res.header('Content-Type', 'application/xml')
res.send(xml)
})
return data.map(v => ({
- url: WEBSERVER.URL + '/videos/watch/' + v.uuid,
+ url: WEBSERVER.URL + '/w/' + v.uuid,
video: [
{
title: v.name,