Fix broken replay with long live video name

This commit is contained in:
Chocobozzz 2023-06-29 08:57:19 +02:00
parent ba278fa51d
commit ae22c59f14
No known key found for this signature in database
GPG key ID: 583A612D890159BE
3 changed files with 17 additions and 3 deletions

View file

@ -20,6 +20,8 @@ import { MVideo, MVideoLive, MVideoLiveSession, MVideoWithAllFiles } from '@serv
import { ffprobePromise, getAudioStream, getVideoStreamDimensionsInfo, getVideoStreamFPS } from '@shared/ffmpeg'
import { ThumbnailType, VideoLiveEndingPayload, VideoState } from '@shared/models'
import { logger, loggerTagsFactory } from '../../../helpers/logger'
import { peertubeTruncate } from '@server/helpers/core-utils'
import { CONSTRAINTS_FIELDS } from '@server/initializers/constants'
const lTags = loggerTagsFactory('live', 'job')
@ -88,8 +90,13 @@ async function saveReplayToExternalVideo (options: {
const replaySettings = await VideoLiveReplaySettingModel.load(liveSession.replaySettingId)
const videoNameSuffix = ` - ${new Date(publishedAt).toLocaleString()}`
const truncatedVideoName = peertubeTruncate(liveVideo.name, {
length: CONSTRAINTS_FIELDS.VIDEOS.NAME.max - videoNameSuffix.length
})
const replayVideo = new VideoModel({
name: `${liveVideo.name} - ${new Date(publishedAt).toLocaleString()}`,
name: truncatedVideoName + videoNameSuffix,
isLive: false,
state: VideoState.TO_TRANSCODE,
duration: 0,

View file

@ -38,7 +38,7 @@ describe('Save replay setting', function () {
const attributes: LiveVideoCreate = {
channelId: servers[0].store.channel.id,
privacy: VideoPrivacy.PUBLIC,
name: 'my super live',
name: 'live'.repeat(30),
saveReplay: options.replay,
replaySettings: options.replaySettings,
permanentLive: options.permanent

View file

@ -1,4 +1,5 @@
import ffmpeg, { FfmpegCommand } from 'fluent-ffmpeg'
import { truncate } from 'lodash'
import { buildAbsoluteFixturePath, wait } from '@shared/core-utils'
import { VideoDetails, VideoInclude, VideoPrivacy } from '@shared/models'
import { PeerTubeServer } from '../server/server'
@ -104,7 +105,13 @@ async function findExternalSavedVideo (server: PeerTubeServer, liveDetails: Vide
const { data } = await server.videos.list({ token: server.accessToken, sort: '-publishedAt', include, privacyOneOf })
return data.find(v => v.name === liveDetails.name + ' - ' + new Date(liveDetails.publishedAt).toLocaleString())
const videoNameSuffix = ` - ${new Date(liveDetails.publishedAt).toLocaleString()}`
const truncatedVideoName = truncate(liveDetails.name, {
length: 120 - videoNameSuffix.length
})
const toFind = truncatedVideoName + videoNameSuffix
return data.find(v => v.name === toFind)
}
export {