X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fbots.ts;h=2b825a73093e7e0b88d21472ca10134b967ac8dd;hb=cffef25313bdf7a6c435f56ac6715fdd91acf7b3;hp=63db345bfe0ce0c866fa0d07a7bf366e6a6aa7c4;hpb=41fb13c330de629df2d23379209e79c7af0f2e9a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/bots.ts b/server/controllers/bots.ts index 63db345bf..2b825a730 100644 --- a/server/controllers/bots.ts +++ b/server/controllers/bots.ts @@ -1,6 +1,8 @@ import express from 'express' import { truncate } from 'lodash' -import { SitemapStream, streamToPromise } from 'sitemap' +import { ErrorLevel, SitemapStream, streamToPromise } from 'sitemap' +import { logger } from '@server/helpers/logger' +import { getServerActor } from '@server/models/application/application' import { buildNSFWFilter } from '../helpers/express-utils' import { ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants' import { asyncMiddleware } from '../middlewares' @@ -33,7 +35,18 @@ async function getSitemap (req: express.Request, res: express.Response) { urls = urls.concat(await getSitemapVideoChannelUrls()) urls = urls.concat(await getSitemapAccountUrls()) - const sitemapStream = new SitemapStream({ hostname: WEBSERVER.URL }) + const sitemapStream = new SitemapStream({ + hostname: WEBSERVER.URL, + errorHandler: (err: Error, level: ErrorLevel) => { + if (level === 'warn') { + logger.warn('Warning in sitemap generation.', { err }) + } else if (level === 'throw') { + logger.error('Error in sitemap generation.', { err }) + + throw err + } + } + }) for (const urlObj of urls) { sitemapStream.write(urlObj) @@ -63,14 +76,18 @@ async function getSitemapAccountUrls () { } async function getSitemapLocalVideoUrls () { + const serverActor = await getServerActor() + const { data } = await VideoModel.listForApi({ start: 0, count: undefined, sort: 'createdAt', - includeLocalVideos: true, + displayOnlyForFollower: { + actorId: serverActor.id, + orLocalVideos: true + }, + isLocal: true, nsfw: buildNSFWFilter(), - filter: 'local', - withFiles: false, countVideos: false }) @@ -78,7 +95,8 @@ async function getSitemapLocalVideoUrls () { url: WEBSERVER.URL + v.getWatchStaticPath(), video: [ { - title: v.name, + // Sitemap title should be < 100 characters + title: truncate(v.name, { length: 100, omission: '...' }), // Sitemap description should be < 2000 characters description: truncate(v.description || v.name, { length: 2000, omission: '...' }), player_loc: WEBSERVER.URL + v.getEmbedStaticPath(),