ソースを参照

Add ability to set default feed items count

Chocobozzz 2 年 前
コミット
db9d882c25

+ 10 - 0
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

+ 13 - 3
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 /!\
 #
 ###############################################################################
 

+ 5 - 5
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,
 

+ 8 - 0
server/initializers/config.ts

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

+ 0 - 7
server/initializers/constants.ts

@@ -766,12 +766,6 @@ const CUSTOM_HTML_TAG_COMMENTS = {
   SERVER_CONFIG: '<!-- 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,