Server: use preview image for opengraph
authorChocobozzz <florian.bigard@gmail.com>
Fri, 11 Nov 2016 14:44:08 +0000 (15:44 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Wed, 16 Nov 2016 19:29:26 +0000 (20:29 +0100)
server/controllers/client.js
server/helpers/custom-validators/videos.js
server/initializers/constants.js
server/models/video.js

index 68ffdbcd57ec7b00154a1766df7ae56402706c4e..746c9b62bbf7945f3f432cd84fda56214b2d8326 100644 (file)
@@ -33,25 +33,36 @@ module.exports = router
 // ---------------------------------------------------------------------------
 
 function addOpenGraphTags (htmlStringPage, video) {
-  const thumbnailUrl = constants.CONFIG.WEBSERVER.URL + video.thumbnailPath
   const videoUrl = constants.CONFIG.WEBSERVER.URL + '/videos/watch/'
+  let baseUrlHttp
+
+  if (video.isOwned()) {
+    baseUrlHttp = constants.CONFIG.WEBSERVER.URL
+  } else {
+    baseUrlHttp = constants.REMOTE_SCHEME.HTTP + '://' + video.podUrl
+  }
+
+  // We fetch the remote preview (bigger than the thumbnail)
+  // This should not overhead the remote server since social websites put in a cache the OpenGraph tags
+  // We can't use the thumbnail because these social websites want bigger images (> 200x200 for Facebook for example)
+  const previewUrl = baseUrlHttp + constants.STATIC_PATHS.PREVIEWS + video.getPreviewName()
 
   const metaTags = {
     'og:type': 'video',
     'og:title': video.name,
-    'og:image': thumbnailUrl,
+    'og:image': previewUrl,
     'og:url': videoUrl,
     'og:description': video.description,
 
     'name': video.name,
     'description': video.description,
-    'image': thumbnailUrl,
+    'image': previewUrl,
 
     'twitter:card': 'summary_large_image',
     'twitter:site': '@Chocobozzz',
     'twitter:title': video.name,
     'twitter:description': video.description,
-    'twitter:image': thumbnailUrl
+    'twitter:image': previewUrl
   }
 
   let tagsString = ''
index 166158ef3700b13906ff3d7592c4817037384069..45acb7686de1e463d90891a0e4ce829b80983b3c 100644 (file)
@@ -31,7 +31,7 @@ function isEachRemoteVideosValid (requests) {
         isVideoDateValid(video.createdDate) &&
         isVideoDescriptionValid(video.description) &&
         isVideoDurationValid(video.duration) &&
-        isVideoMagnetValid(video.magnetUri) &&
+        isVideoMagnetValid(video.magnet) &&
         isVideoNameValid(video.name) &&
         isVideoPodUrlValid(video.podUrl) &&
         isVideoTagsValid(video.tags) &&
@@ -63,7 +63,7 @@ function isVideoDurationValid (value) {
 }
 
 function isVideoMagnetValid (value) {
-  return validator.isLength(value.infoHash, VIDEOS_CONSTRAINTS_FIELDS.MAGNET.XT)
+  return validator.isLength(value.infoHash, VIDEOS_CONSTRAINTS_FIELDS.MAGNET.INFO_HASH)
 }
 
 function isVideoNameValid (value) {
index 55129fa3e3a057e9671659797cd733ef47354f1b..c808aff5f58ee06f9316dbdd6ebfb0fa0ef8e978 100644 (file)
@@ -67,7 +67,7 @@ const CONSTRAINTS_FIELDS = {
     NAME: { min: 3, max: 50 }, // Length
     DESCRIPTION: { min: 3, max: 250 }, // Length
     MAGNET: {
-      XT: { min: 10 } // Length
+      INFO_HASH: { min: 10, max: 50 } // Length
     },
     DURATION: { min: 1, max: 7200 }, // Number
     TAGS: { min: 1, max: 3 }, // Number of total tags
index 4f2be5c964ab3566e23f2ee6ccfa1c6f78416c3b..0da2cb8ab5f5a9056236bfa785d662788ca62997 100644 (file)
@@ -160,7 +160,7 @@ function generateMagnetUri () {
     baseUrlHttp = constants.CONFIG.WEBSERVER.URL
     baseUrlWs = constants.CONFIG.WEBSERVER.WS + '://' + constants.CONFIG.WEBSERVER.HOSTNAME + ':' + constants.CONFIG.WEBSERVER.PORT
   } else {
-    baseUrlHttp = constants.REMOTE_SCHEME.HTTP + this.podUrl
+    baseUrlHttp = constants.REMOTE_SCHEME.HTTP + '://' + this.podUrl
     baseUrlWs = constants.REMOTE_SCHEME.WS + this.podUrl
   }