X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Ffeeds.ts;h=cdc6bfb8be176047b3dde2cd271b9c2daf8c3ebd;hb=9162fdd36300d2478f13d6ad346ec2c323f40faa;hp=e29a8fe1db9ee28efd7900935e6a7ac8d14c7943;hpb=f66db4d5c851fe87bb71cccee96926000f59a15b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/feeds.ts b/server/controllers/feeds.ts index e29a8fe1d..cdc6bfb8b 100644 --- a/server/controllers/feeds.ts +++ b/server/controllers/feeds.ts @@ -1,8 +1,10 @@ import * as express from 'express' import * as Feed from 'pfeed' +import { getCategoryLabel } from '@server/models/video/formatter/video-format-utils' +import { VideoFilter } from '../../shared/models/videos/video-query.type' import { buildNSFWFilter } from '../helpers/express-utils' import { CONFIG } from '../initializers/config' -import { FEEDS, ROUTE_CACHE_LIFETIME, THUMBNAILS_SIZE, WEBSERVER } from '../initializers/constants' +import { FEEDS, PREVIEWS_SIZE, ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants' import { asyncMiddleware, commonVideosFiltersValidator, @@ -14,21 +16,20 @@ import { videosSortValidator, videoSubscriptionFeedsValidator } from '../middlewares' -import { cacheRoute } from '../middlewares/cache' +import { cacheRouteFactory } from '../middlewares/cache/cache' import { VideoModel } from '../models/video/video' import { VideoCommentModel } from '../models/video/video-comment' -import { VideoFilter } from '../../shared/models/videos/video-query.type' const feedsRouter = express.Router() +const cacheRoute = cacheRouteFactory({ + headerBlacklist: [ 'Content-Type' ] +}) + feedsRouter.get('/feeds/video-comments.:format', feedsFormatValidator, setFeedFormatContentType, - asyncMiddleware(cacheRoute({ - headerBlacklist: [ - 'Content-Type' - ] - })(ROUTE_CACHE_LIFETIME.FEEDS)), + cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS), asyncMiddleware(videoFeedsValidator), asyncMiddleware(videoCommentsFeedsValidator), asyncMiddleware(generateVideoCommentsFeed) @@ -39,11 +40,7 @@ feedsRouter.get('/feeds/videos.:format', setDefaultVideosSort, feedsFormatValidator, setFeedFormatContentType, - asyncMiddleware(cacheRoute({ - headerBlacklist: [ - 'Content-Type' - ] - })(ROUTE_CACHE_LIFETIME.FEEDS)), + cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS), commonVideosFiltersValidator, asyncMiddleware(videoFeedsValidator), asyncMiddleware(generateVideoFeed) @@ -54,11 +51,7 @@ feedsRouter.get('/feeds/subscriptions.:format', setDefaultVideosSort, feedsFormatValidator, setFeedFormatContentType, - asyncMiddleware(cacheRoute({ - headerBlacklist: [ - 'Content-Type' - ] - })(ROUTE_CACHE_LIFETIME.FEEDS)), + cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS), commonVideosFiltersValidator, asyncMiddleware(videoSubscriptionFeedsValidator), asyncMiddleware(generateVideoFeedForSubscriptions) @@ -167,7 +160,7 @@ async function generateVideoFeed (req: express.Request, res: express.Response) { videoChannelId: videoChannel ? videoChannel.id : null } - const resultList = await VideoModel.listForApi({ + const { data } = await VideoModel.listForApi({ start, count: FEEDS.COUNT, sort: req.query.sort, @@ -175,10 +168,11 @@ async function generateVideoFeed (req: express.Request, res: express.Response) { nsfw, filter: req.query.filter as VideoFilter, withFiles: true, + countVideos: false, ...options }) - addVideosToFeed(feed, resultList.data) + addVideosToFeed(feed, data) // Now the feed generation is done, let's send it! return sendFeed(feed, req, res) @@ -198,20 +192,22 @@ async function generateVideoFeedForSubscriptions (req: express.Request, res: exp queryString: new URL(WEBSERVER.URL + req.url).search }) - const resultList = await VideoModel.listForApi({ + const { data } = await VideoModel.listForApi({ start, count: FEEDS.COUNT, sort: req.query.sort, includeLocalVideos: false, nsfw, filter: req.query.filter as VideoFilter, + withFiles: true, + countVideos: false, followerActorId: res.locals.user.Account.Actor.id, user: res.locals.user }) - addVideosToFeed(feed, resultList.data) + addVideosToFeed(feed, data) // Now the feed generation is done, let's send it! return sendFeed(feed, req, res) @@ -283,14 +279,14 @@ function addVideosToFeed (feed, videos: VideoModel[]) { if (video.category) { categories.push({ value: video.category, - label: VideoModel.getCategoryLabel(video.category) + label: getCategoryLabel(video.category) }) } feed.addItem({ title: video.name, id: video.url, - link: WEBSERVER.URL + '/videos/watch/' + video.uuid, + link: WEBSERVER.URL + '/w/' + video.uuid, description: video.getTruncatedDescription(), content: video.description, author: [ @@ -318,9 +314,9 @@ function addVideosToFeed (feed, videos: VideoModel[]) { }, thumbnail: [ { - url: WEBSERVER.URL + video.getMiniatureStaticPath(), - height: THUMBNAILS_SIZE.height, - width: THUMBNAILS_SIZE.width + url: WEBSERVER.URL + video.getPreviewStaticPath(), + height: PREVIEWS_SIZE.height, + width: PREVIEWS_SIZE.width } ] })