Add ability to set default feed items count

This commit is contained in:
Chocobozzz 2022-05-24 15:56:23 +02:00
parent 87a0cac618
commit db9d882c25
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
5 changed files with 36 additions and 15 deletions

View File

@ -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 # Set this to false if you don't want to allow config edition in the web interface by instance admins
allowed: true 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: cache:
previews: previews:
size: 500 # Max number of previews you want to cache size: 500 # Max number of previews you want to cache

View File

@ -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 # Set this to false if you don't want to allow config edition in the web interface by instance admins
allowed: true 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 # (local-production.json file). If you need to change some values, prefer to
# use the web interface because the configuration will be automatically # use the web interface because the configuration will be automatically
# reloaded without any need to restart PeerTube # reloaded without any need to restart PeerTube
# #
# /!\ If you already have a local-production.json file, the modification of the # /!\ If you already have a local-production.json file, modification of some of
# following keys will have no effect /!\ # the following keys will have no effect /!\
# #
############################################################################### ###############################################################################

View File

@ -1,13 +1,13 @@
import express from 'express' import express from 'express'
import { Feed } from '@peertube/feed'
import { extname } from 'path' import { extname } from 'path'
import { Feed } from '@peertube/feed'
import { mdToOneLinePlainText, toSafeHtml } from '@server/helpers/markdown' import { mdToOneLinePlainText, toSafeHtml } from '@server/helpers/markdown'
import { getServerActor } from '@server/models/application/application' import { getServerActor } from '@server/models/application/application'
import { getCategoryLabel } from '@server/models/video/formatter/video-format-utils' import { getCategoryLabel } from '@server/models/video/formatter/video-format-utils'
import { VideoInclude } from '@shared/models' import { VideoInclude } from '@shared/models'
import { buildNSFWFilter } from '../helpers/express-utils' import { buildNSFWFilter } from '../helpers/express-utils'
import { CONFIG } from '../initializers/config' 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 { import {
asyncMiddleware, asyncMiddleware,
commonVideosFiltersValidator, commonVideosFiltersValidator,
@ -76,7 +76,7 @@ async function generateVideoCommentsFeed (req: express.Request, res: express.Res
const comments = await VideoCommentModel.listForFeed({ const comments = await VideoCommentModel.listForFeed({
start, start,
count: FEEDS.COUNT, count: CONFIG.FEEDS.COMMENTS.COUNT,
videoId: video ? video.id : undefined, videoId: video ? video.id : undefined,
accountId: account ? account.id : undefined, accountId: account ? account.id : undefined,
videoChannelId: videoChannel ? videoChannel.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 server = await getServerActor()
const { data } = await VideoModel.listForApi({ const { data } = await VideoModel.listForApi({
start, start,
count: FEEDS.COUNT, count: CONFIG.FEEDS.VIDEOS.COUNT,
sort: req.query.sort, sort: req.query.sort,
displayOnlyForFollower: { displayOnlyForFollower: {
actorId: server.id, actorId: server.id,
@ -202,7 +202,7 @@ async function generateVideoFeedForSubscriptions (req: express.Request, res: exp
const { data } = await VideoModel.listForApi({ const { data } = await VideoModel.listForApi({
start, start,
count: FEEDS.COUNT, count: CONFIG.FEEDS.VIDEOS.COUNT,
sort: req.query.sort, sort: req.query.sort,
nsfw, nsfw,

View File

@ -247,6 +247,14 @@ const CONFIG = {
} }
} }
}, },
FEEDS: {
VIDEOS: {
COUNT: config.get<number>('feeds.videos.count')
},
COMMENTS: {
COUNT: config.get<number>('feeds.comments.count')
}
},
ADMIN: { ADMIN: {
get EMAIL () { return config.get<string>('admin.email') } get EMAIL () { return config.get<string>('admin.email') }
}, },

View File

@ -766,12 +766,6 @@ const CUSTOM_HTML_TAG_COMMENTS = {
SERVER_CONFIG: '<!-- server config -->' SERVER_CONFIG: '<!-- server config -->'
} }
// ---------------------------------------------------------------------------
const FEEDS = {
COUNT: 20
}
const MAX_LOGS_OUTPUT_CHARACTERS = 10 * 1000 * 1000 const MAX_LOGS_OUTPUT_CHARACTERS = 10 * 1000 * 1000
const LOG_FILENAME = 'peertube.log' const LOG_FILENAME = 'peertube.log'
const AUDIT_LOG_FILENAME = 'peertube-audit.log' const AUDIT_LOG_FILENAME = 'peertube-audit.log'
@ -939,7 +933,6 @@ export {
ROUTE_CACHE_LIFETIME, ROUTE_CACHE_LIFETIME,
SORTABLE_COLUMNS, SORTABLE_COLUMNS,
HLS_STREAMING_PLAYLIST_DIRECTORY, HLS_STREAMING_PLAYLIST_DIRECTORY,
FEEDS,
JOB_TTL, JOB_TTL,
DEFAULT_THEME_NAME, DEFAULT_THEME_NAME,
NSFW_POLICY_TYPES, NSFW_POLICY_TYPES,