From db9d882c2567fba197754a1f6fd1d75114d33560 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 24 May 2022 15:56:23 +0200 Subject: [PATCH] Add ability to set default feed items count --- config/default.yaml | 10 ++++++++++ config/production.yaml.example | 16 +++++++++++++--- server/controllers/feeds.ts | 10 +++++----- server/initializers/config.ts | 8 ++++++++ server/initializers/constants.ts | 7 ------- 5 files changed, 36 insertions(+), 15 deletions(-) diff --git a/config/default.yaml b/config/default.yaml index c3e42350b..c0d17decf 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -297,6 +297,16 @@ webadmin: # Set this to false if you don't want to allow config edition in the web interface by instance admins allowed: true +# XML, Atom or JSON feeds +feeds: + videos: + # Default number of videos displayed in feeds + count: 20 + + comments: + # Default number of comments displayed in feeds + count: 20 + cache: previews: size: 500 # Max number of previews you want to cache diff --git a/config/production.yaml.example b/config/production.yaml.example index 4351a4b87..8fd8d805f 100644 --- a/config/production.yaml.example +++ b/config/production.yaml.example @@ -293,15 +293,25 @@ webadmin: # Set this to false if you don't want to allow config edition in the web interface by instance admins allowed: true +# XML, Atom or JSON feeds +feeds: + videos: + # Default number of videos displayed in feeds + count: 20 + + comments: + # Default number of comments displayed in feeds + count: 20 + ############################################################################### # -# From this point, all the following keys can be overridden by the web interface +# From this point, almost all following keys can be overridden by the web interface # (local-production.json file). If you need to change some values, prefer to # use the web interface because the configuration will be automatically # reloaded without any need to restart PeerTube # -# /!\ If you already have a local-production.json file, the modification of the -# following keys will have no effect /!\ +# /!\ If you already have a local-production.json file, modification of some of +# the following keys will have no effect /!\ # ############################################################################### diff --git a/server/controllers/feeds.ts b/server/controllers/feeds.ts index c929a6726..9eb31ed93 100644 --- a/server/controllers/feeds.ts +++ b/server/controllers/feeds.ts @@ -1,13 +1,13 @@ import express from 'express' -import { Feed } from '@peertube/feed' import { extname } from 'path' +import { Feed } from '@peertube/feed' import { mdToOneLinePlainText, toSafeHtml } from '@server/helpers/markdown' import { getServerActor } from '@server/models/application/application' import { getCategoryLabel } from '@server/models/video/formatter/video-format-utils' import { VideoInclude } from '@shared/models' import { buildNSFWFilter } from '../helpers/express-utils' import { CONFIG } from '../initializers/config' -import { FEEDS, MIMETYPES, PREVIEWS_SIZE, ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants' +import { MIMETYPES, PREVIEWS_SIZE, ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants' import { asyncMiddleware, commonVideosFiltersValidator, @@ -76,7 +76,7 @@ async function generateVideoCommentsFeed (req: express.Request, res: express.Res const comments = await VideoCommentModel.listForFeed({ start, - count: FEEDS.COUNT, + count: CONFIG.FEEDS.COMMENTS.COUNT, videoId: video ? video.id : undefined, accountId: account ? account.id : undefined, videoChannelId: videoChannel ? videoChannel.id : undefined @@ -166,7 +166,7 @@ async function generateVideoFeed (req: express.Request, res: express.Response) { const server = await getServerActor() const { data } = await VideoModel.listForApi({ start, - count: FEEDS.COUNT, + count: CONFIG.FEEDS.VIDEOS.COUNT, sort: req.query.sort, displayOnlyForFollower: { actorId: server.id, @@ -202,7 +202,7 @@ async function generateVideoFeedForSubscriptions (req: express.Request, res: exp const { data } = await VideoModel.listForApi({ start, - count: FEEDS.COUNT, + count: CONFIG.FEEDS.VIDEOS.COUNT, sort: req.query.sort, nsfw, diff --git a/server/initializers/config.ts b/server/initializers/config.ts index 2f59e3e3e..c76a839bc 100644 --- a/server/initializers/config.ts +++ b/server/initializers/config.ts @@ -247,6 +247,14 @@ const CONFIG = { } } }, + FEEDS: { + VIDEOS: { + COUNT: config.get('feeds.videos.count') + }, + COMMENTS: { + COUNT: config.get('feeds.comments.count') + } + }, ADMIN: { get EMAIL () { return config.get('admin.email') } }, diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 231b86821..824a30bd2 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -766,12 +766,6 @@ const CUSTOM_HTML_TAG_COMMENTS = { SERVER_CONFIG: '' } -// --------------------------------------------------------------------------- - -const FEEDS = { - COUNT: 20 -} - const MAX_LOGS_OUTPUT_CHARACTERS = 10 * 1000 * 1000 const LOG_FILENAME = 'peertube.log' const AUDIT_LOG_FILENAME = 'peertube-audit.log' @@ -939,7 +933,6 @@ export { ROUTE_CACHE_LIFETIME, SORTABLE_COLUMNS, HLS_STREAMING_PLAYLIST_DIRECTORY, - FEEDS, JOB_TTL, DEFAULT_THEME_NAME, NSFW_POLICY_TYPES,