Add ffprobe helper
This commit is contained in:
parent
2e9c7877eb
commit
754c52b9b9
4 changed files with 31 additions and 0 deletions
|
@ -1,5 +1,6 @@
|
||||||
import express from 'express'
|
import express from 'express'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
import { ffprobePromise } from '@server/helpers/ffprobe-utils'
|
||||||
import { buildLogger } from '@server/helpers/logger'
|
import { buildLogger } from '@server/helpers/logger'
|
||||||
import { CONFIG } from '@server/initializers/config'
|
import { CONFIG } from '@server/initializers/config'
|
||||||
import { WEBSERVER } from '@server/initializers/constants'
|
import { WEBSERVER } from '@server/initializers/constants'
|
||||||
|
@ -88,6 +89,10 @@ function buildVideosHelpers () {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ffprobe: (path: string) => {
|
||||||
|
return ffprobePromise(path)
|
||||||
|
},
|
||||||
|
|
||||||
getFiles: async (id: number | string) => {
|
getFiles: async (id: number | string) => {
|
||||||
const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id)
|
const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id)
|
||||||
if (!video) return undefined
|
if (!video) return undefined
|
||||||
|
|
|
@ -111,6 +111,13 @@ async function register ({
|
||||||
|
|
||||||
return res.json(details)
|
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)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,6 +224,7 @@ describe('Test plugin helpers', function () {
|
||||||
|
|
||||||
describe('Videos', function () {
|
describe('Videos', function () {
|
||||||
let videoUUID: string
|
let videoUUID: string
|
||||||
|
let videoPath: string
|
||||||
|
|
||||||
before(async () => {
|
before(async () => {
|
||||||
this.timeout(240000)
|
this.timeout(240000)
|
||||||
|
@ -260,6 +261,8 @@ describe('Test plugin helpers', function () {
|
||||||
await makeRawRequest(file.url, HttpStatusCode.OK_200)
|
await makeRawRequest(file.url, HttpStatusCode.OK_200)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
videoPath = body.webtorrent.videoFiles[0].path
|
||||||
}
|
}
|
||||||
|
|
||||||
// Thumbnails check
|
// 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 () {
|
it('Should remove a video after a view', async function () {
|
||||||
this.timeout(40000)
|
this.timeout(40000)
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,8 @@ export type PeerTubeHelpers = {
|
||||||
|
|
||||||
removeVideo: (videoId: number) => Promise<void>
|
removeVideo: (videoId: number) => Promise<void>
|
||||||
|
|
||||||
|
ffprobe: (path: string) => Promise<any>
|
||||||
|
|
||||||
getFiles: (id: number | string) => Promise<{
|
getFiles: (id: number | string) => Promise<{
|
||||||
webtorrent: {
|
webtorrent: {
|
||||||
videoFiles: {
|
videoFiles: {
|
||||||
|
|
Loading…
Reference in a new issue