aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-10-17 10:35:27 +0200
committerChocobozzz <florian.bigard@gmail.com>2017-10-17 10:35:27 +0200
commit164174a6abac3e391e95d479a98749e20eb86f34 (patch)
tree9fac6566299af7b86798cd07e181d269808eacbd
parent4b5dc9f1e452723503a3ef07405f80c793d7b5f7 (diff)
downloadPeerTube-164174a6abac3e391e95d479a98749e20eb86f34.tar.gz
PeerTube-164174a6abac3e391e95d479a98749e20eb86f34.tar.zst
PeerTube-164174a6abac3e391e95d479a98749e20eb86f34.zip
Use preview instead of thumbnail for oembed
-rw-r--r--server/controllers/services.ts16
-rw-r--r--server/helpers/ffmpeg-utils.ts2
-rw-r--r--server/initializers/constants.ts10
-rw-r--r--server/models/video/video.ts6
-rw-r--r--server/tests/api/services.ts8
5 files changed, 26 insertions, 16 deletions
diff --git a/server/controllers/services.ts b/server/controllers/services.ts
index 3ce6bd526..4bbe56a8a 100644
--- a/server/controllers/services.ts
+++ b/server/controllers/services.ts
@@ -1,6 +1,6 @@
1import * as express from 'express' 1import * as express from 'express'
2 2
3import { CONFIG, THUMBNAILS_SIZE } from '../initializers' 3import { CONFIG, PREVIEWS_SIZE, EMBED_SIZE } from '../initializers'
4import { oembedValidator } from '../middlewares' 4import { oembedValidator } from '../middlewares'
5import { VideoInstance } from '../models' 5import { VideoInstance } from '../models'
6 6
@@ -23,17 +23,17 @@ function generateOEmbed (req: express.Request, res: express.Response, next: expr
23 const maxWidth = parseInt(req.query.maxwidth, 10) 23 const maxWidth = parseInt(req.query.maxwidth, 10)
24 24
25 const embedUrl = webserverUrl + video.getEmbedPath() 25 const embedUrl = webserverUrl + video.getEmbedPath()
26 let thumbnailUrl = webserverUrl + video.getThumbnailPath() 26 let thumbnailUrl = webserverUrl + video.getPreviewPath()
27 let embedWidth = 560 27 let embedWidth = EMBED_SIZE.width
28 let embedHeight = 315 28 let embedHeight = EMBED_SIZE.height
29 29
30 if (maxHeight < embedHeight) embedHeight = maxHeight 30 if (maxHeight < embedHeight) embedHeight = maxHeight
31 if (maxWidth < embedWidth) embedWidth = maxWidth 31 if (maxWidth < embedWidth) embedWidth = maxWidth
32 32
33 // Our thumbnail is too big for the consumer 33 // Our thumbnail is too big for the consumer
34 if ( 34 if (
35 (maxHeight !== undefined && maxHeight < THUMBNAILS_SIZE.height) || 35 (maxHeight !== undefined && maxHeight < PREVIEWS_SIZE.height) ||
36 (maxWidth !== undefined && maxWidth < THUMBNAILS_SIZE.width) 36 (maxWidth !== undefined && maxWidth < PREVIEWS_SIZE.width)
37 ) { 37 ) {
38 thumbnailUrl = undefined 38 thumbnailUrl = undefined
39 } 39 }
@@ -54,8 +54,8 @@ function generateOEmbed (req: express.Request, res: express.Response, next: expr
54 54
55 if (thumbnailUrl !== undefined) { 55 if (thumbnailUrl !== undefined) {
56 json.thumbnail_url = thumbnailUrl 56 json.thumbnail_url = thumbnailUrl
57 json.thumbnail_width = THUMBNAILS_SIZE.width 57 json.thumbnail_width = PREVIEWS_SIZE.width
58 json.thumbnail_height = THUMBNAILS_SIZE.height 58 json.thumbnail_height = PREVIEWS_SIZE.height
59 } 59 }
60 60
61 return res.json(json) 61 return res.json(json)
diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts
index c35125ec1..913a90905 100644
--- a/server/helpers/ffmpeg-utils.ts
+++ b/server/helpers/ffmpeg-utils.ts
@@ -25,7 +25,7 @@ function getDurationFromVideoFile (path: string) {
25 }) 25 })
26} 26}
27 27
28function generateImageFromVideoFile (fromPath: string, folder: string, imageName: string, size?: string) { 28function generateImageFromVideoFile (fromPath: string, folder: string, imageName: string, size: string) {
29 const options = { 29 const options = {
30 filename: imageName, 30 filename: imageName,
31 count: 1, 31 count: 1,
diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts
index 6218644cf..491fb78f9 100644
--- a/server/initializers/constants.ts
+++ b/server/initializers/constants.ts
@@ -300,8 +300,13 @@ const THUMBNAILS_SIZE = {
300 height: 110 300 height: 110
301} 301}
302const PREVIEWS_SIZE = { 302const PREVIEWS_SIZE = {
303 width: 640, 303 width: 560,
304 height: 480 304 height: 315
305}
306
307const EMBED_SIZE = {
308 width: 560,
309 height: 315
305} 310}
306 311
307// Sub folders of cache directory 312// Sub folders of cache directory
@@ -343,6 +348,7 @@ export {
343 CACHE, 348 CACHE,
344 CONFIG, 349 CONFIG,
345 CONSTRAINTS_FIELDS, 350 CONSTRAINTS_FIELDS,
351 EMBED_SIZE,
346 FRIEND_SCORE, 352 FRIEND_SCORE,
347 JOB_STATES, 353 JOB_STATES,
348 JOBS_CONCURRENCY, 354 JOBS_CONCURRENCY,
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index 0d0048b4a..fb18a485a 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -48,6 +48,7 @@ import {
48 48
49 VideoMethods 49 VideoMethods
50} from './video-interface' 50} from './video-interface'
51import { PREVIEWS_SIZE } from '../../initializers/constants'
51 52
52let Video: Sequelize.Model<VideoInstance, VideoAttributes> 53let Video: Sequelize.Model<VideoInstance, VideoAttributes>
53let getOriginalFile: VideoMethods.GetOriginalFile 54let getOriginalFile: VideoMethods.GetOriginalFile
@@ -373,10 +374,13 @@ isOwned = function (this: VideoInstance) {
373} 374}
374 375
375createPreview = function (this: VideoInstance, videoFile: VideoFileInstance) { 376createPreview = function (this: VideoInstance, videoFile: VideoFileInstance) {
377 const imageSize = PREVIEWS_SIZE.width + 'x' + PREVIEWS_SIZE.height
378
376 return generateImageFromVideoFile( 379 return generateImageFromVideoFile(
377 this.getVideoFilePath(videoFile), 380 this.getVideoFilePath(videoFile),
378 CONFIG.STORAGE.PREVIEWS_DIR, 381 CONFIG.STORAGE.PREVIEWS_DIR,
379 this.getPreviewName() 382 this.getPreviewName(),
383 imageSize
380 ) 384 )
381} 385}
382 386
diff --git a/server/tests/api/services.ts b/server/tests/api/services.ts
index b396ea582..76911fdc5 100644
--- a/server/tests/api/services.ts
+++ b/server/tests/api/services.ts
@@ -42,16 +42,16 @@ describe('Test services', function () {
42 const res = await getOEmbed(server.url, oembedUrl) 42 const res = await getOEmbed(server.url, oembedUrl)
43 const expectedHtml = `<iframe width="560" height="315" src="http://localhost:9001/videos/embed/${server.video.uuid}" ` + 43 const expectedHtml = `<iframe width="560" height="315" src="http://localhost:9001/videos/embed/${server.video.uuid}" ` +
44 'frameborder="0" allowfullscreen></iframe>' 44 'frameborder="0" allowfullscreen></iframe>'
45 const expectedThumbnailUrl = 'http://localhost:9001/static/thumbnails/' + server.video.uuid + '.jpg' 45 const expectedThumbnailUrl = 'http://localhost:9001/static/previews/' + server.video.uuid + '.jpg'
46 46
47 expect(res.body.html).to.equal(expectedHtml) 47 expect(res.body.html).to.equal(expectedHtml)
48 expect(res.body.title).to.equal(server.video.name) 48 expect(res.body.title).to.equal(server.video.name)
49 expect(res.body.author_name).to.equal(server.video.author) 49 expect(res.body.author_name).to.equal(server.video.author)
50 expect(res.body.height).to.equal(315)
51 expect(res.body.width).to.equal(560) 50 expect(res.body.width).to.equal(560)
51 expect(res.body.height).to.equal(315)
52 expect(res.body.thumbnail_url).to.equal(expectedThumbnailUrl) 52 expect(res.body.thumbnail_url).to.equal(expectedThumbnailUrl)
53 expect(res.body.thumbnail_width).to.equal(200) 53 expect(res.body.thumbnail_width).to.equal(560)
54 expect(res.body.thumbnail_height).to.equal(110) 54 expect(res.body.thumbnail_height).to.equal(315)
55 }) 55 })
56 56
57 it('Should have a valid oEmbed response with small max height query', async function () { 57 it('Should have a valid oEmbed response with small max height query', async function () {