Add ffprobe helper

pull/4654/head
Chocobozzz 2021-12-16 17:00:46 +01:00
parent 2e9c7877eb
commit 754c52b9b9
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
4 changed files with 31 additions and 0 deletions

View File

@ -1,5 +1,6 @@
import express from 'express'
import { join } from 'path'
import { ffprobePromise } from '@server/helpers/ffprobe-utils'
import { buildLogger } from '@server/helpers/logger'
import { CONFIG } from '@server/initializers/config'
import { WEBSERVER } from '@server/initializers/constants'
@ -88,6 +89,10 @@ function buildVideosHelpers () {
})
},
ffprobe: (path: string) => {
return ffprobePromise(path)
},
getFiles: async (id: number | string) => {
const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id)
if (!video) return undefined

View File

@ -111,6 +111,13 @@ async function register ({
return res.json(details)
})
router.get('/ffprobe', async (req, res) => {
const result = await peertubeHelpers.videos.ffprobe(req.query.path)
if (!result) return res.sendStatus(404)
return res.json(result)
})
}
}

View File

@ -224,6 +224,7 @@ describe('Test plugin helpers', function () {
describe('Videos', function () {
let videoUUID: string
let videoPath: string
before(async () => {
this.timeout(240000)
@ -260,6 +261,8 @@ describe('Test plugin helpers', function () {
await makeRawRequest(file.url, HttpStatusCode.OK_200)
}
}
videoPath = body.webtorrent.videoFiles[0].path
}
// Thumbnails check
@ -278,6 +281,20 @@ describe('Test plugin helpers', function () {
}
})
it('Should probe a file', async function () {
const { body } = await makeGetRequest({
url: servers[0].url,
path: '/plugins/test-four/router/ffprobe',
query: {
path: videoPath
},
expectedStatus: HttpStatusCode.OK_200
})
expect(body.streams).to.be.an('array')
expect(body.streams).to.have.lengthOf(2)
})
it('Should remove a video after a view', async function () {
this.timeout(40000)

View File

@ -37,6 +37,8 @@ export type PeerTubeHelpers = {
removeVideo: (videoId: number) => Promise<void>
ffprobe: (path: string) => Promise<any>
getFiles: (id: number | string) => Promise<{
webtorrent: {
videoFiles: {