Merge pull request #314 from lbryio/304-truncate-description
304 truncate description
This commit is contained in:
commit
76fb1a5b92
2 changed files with 70 additions and 60 deletions
|
@ -1,5 +1,62 @@
|
||||||
const Handlebars = require('handlebars');
|
const Handlebars = require('handlebars');
|
||||||
const { site, analytics } = require('../config/speechConfig.js');
|
const { site, analytics, claim: claimDefaults } = require('../config/speechConfig.js');
|
||||||
|
|
||||||
|
function determineOgTitle (storedTitle, defaultTitle) {
|
||||||
|
return ifEmptyReturnOther(storedTitle, defaultTitle);
|
||||||
|
};
|
||||||
|
|
||||||
|
function determineOgDescription (storedDescription, defaultDescription) {
|
||||||
|
const length = 200;
|
||||||
|
let description = ifEmptyReturnOther(storedDescription, defaultDescription);
|
||||||
|
if (description.length >= length) {
|
||||||
|
description = `${description.substring(0, length)}...`;
|
||||||
|
};
|
||||||
|
return description;
|
||||||
|
};
|
||||||
|
|
||||||
|
function ifEmptyReturnOther (value, replacement) {
|
||||||
|
if (value === '') {
|
||||||
|
return replacement;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function determineContentTypeFromFileExtension (fileExtension) {
|
||||||
|
switch (fileExtension) {
|
||||||
|
case 'jpeg':
|
||||||
|
case 'jpg':
|
||||||
|
return 'image/jpeg';
|
||||||
|
case 'png':
|
||||||
|
return 'image/png';
|
||||||
|
case 'gif':
|
||||||
|
return 'image/gif';
|
||||||
|
case 'mp4':
|
||||||
|
return 'video/mp4';
|
||||||
|
default:
|
||||||
|
return 'image/jpeg';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function determineOgThumbnailContentType (thumbnail) {
|
||||||
|
if (thumbnail) {
|
||||||
|
if (thumbnail.lastIndexOf('.') !== -1) {
|
||||||
|
return determineContentTypeFromFileExtension(thumbnail.substring(thumbnail.lastIndexOf('.')));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function createOpenGraphDataFromClaim (claim, defaultTitle, defaultDescription) {
|
||||||
|
let openGraphData = {};
|
||||||
|
openGraphData['embedUrl'] = `${site.host}/${claim.claimId}/${claim.name}`;
|
||||||
|
openGraphData['showUrl'] = `${site.host}/${claim.claimId}/${claim.name}`;
|
||||||
|
openGraphData['source'] = `${site.host}/${claim.claimId}/${claim.name}.${claim.fileExt}`;
|
||||||
|
openGraphData['directFileUrl'] = `${site.host}/${claim.claimId}/${claim.name}.${claim.fileExt}`;
|
||||||
|
openGraphData['ogTitle'] = determineOgTitle(claim.title, defaultTitle);
|
||||||
|
openGraphData['ogDescription'] = determineOgDescription(claim.description, defaultDescription);
|
||||||
|
openGraphData['ogThumbnailContentType'] = determineOgThumbnailContentType(claim.thumbnail);
|
||||||
|
return openGraphData;
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
placeCommonHeaderTags () {
|
placeCommonHeaderTags () {
|
||||||
|
@ -16,7 +73,10 @@ module.exports = {
|
||||||
ga('send', 'pageview');</script>`;
|
ga('send', 'pageview');</script>`;
|
||||||
return new Handlebars.SafeString(gaCode);
|
return new Handlebars.SafeString(gaCode);
|
||||||
},
|
},
|
||||||
addOpenGraph ({ ogTitle, contentType, ogDescription, thumbnail, showUrl, source, ogThumbnailContentType }) {
|
addOpenGraph (claim) {
|
||||||
|
const { ogTitle, ogDescription, showUrl, source, ogThumbnailContentType } = createOpenGraphDataFromClaim(claim, claimDefaults.defaultTitle, claimDefaults.defaultDescription);
|
||||||
|
const thumbnail = claim.thumbnail;
|
||||||
|
const contentType = claim.contentType;
|
||||||
const ogTitleTag = `<meta property="og:title" content="${ogTitle}" />`;
|
const ogTitleTag = `<meta property="og:title" content="${ogTitle}" />`;
|
||||||
const ogUrlTag = `<meta property="og:url" content="${showUrl}" />`;
|
const ogUrlTag = `<meta property="og:url" content="${showUrl}" />`;
|
||||||
const ogSiteNameTag = `<meta property="og:site_name" content="${site.title}" />`;
|
const ogSiteNameTag = `<meta property="og:site_name" content="${site.title}" />`;
|
||||||
|
@ -42,8 +102,10 @@ module.exports = {
|
||||||
return new Handlebars.SafeString(`${basicTags} ${ogImageTag} ${ogImageTypeTag} ${ogTypeTag}`);
|
return new Handlebars.SafeString(`${basicTags} ${ogImageTag} ${ogImageTypeTag} ${ogTypeTag}`);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addTwitterCard ({ contentType, source, embedUrl, directFileUrl }) {
|
addTwitterCard (claim) {
|
||||||
|
const { embedUrl, directFileUrl } = createOpenGraphDataFromClaim(claim, claimDefaults.defaultTitle, claimDefaults.defaultDescription);
|
||||||
const basicTwitterTags = `<meta name="twitter:site" content="@spee_ch" >`;
|
const basicTwitterTags = `<meta name="twitter:site" content="@spee_ch" >`;
|
||||||
|
const contentType = claim.contentType;
|
||||||
if (contentType === 'video/mp4') {
|
if (contentType === 'video/mp4') {
|
||||||
const twitterName = '<meta name="twitter:card" content="player" >';
|
const twitterName = '<meta name="twitter:card" content="player" >';
|
||||||
const twitterPlayer = `<meta name="twitter:player" content="${embedUrl}" >`;
|
const twitterPlayer = `<meta name="twitter:player" content="${embedUrl}" >`;
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
const logger = require('winston');
|
const logger = require('winston');
|
||||||
const { returnShortId } = require('../helpers/sequelizeHelpers.js');
|
const { returnShortId } = require('../helpers/sequelizeHelpers.js');
|
||||||
const { claim, site } = require('../config/speechConfig.js');
|
const { claim } = require('../config/speechConfig.js');
|
||||||
const { defaultTitle, defaultThumbnail, defaultDescription } = claim;
|
const { defaultThumbnail } = claim;
|
||||||
const { host } = site;
|
|
||||||
|
|
||||||
function determineFileExtensionFromContentType (contentType) {
|
function determineFileExtensionFromContentType (contentType) {
|
||||||
switch (contentType) {
|
switch (contentType) {
|
||||||
|
@ -21,68 +20,17 @@ function determineFileExtensionFromContentType (contentType) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function determineContentTypeFromFileExtension (fileExtension) {
|
|
||||||
switch (fileExtension) {
|
|
||||||
case 'jpeg':
|
|
||||||
case 'jpg':
|
|
||||||
return 'image/jpeg';
|
|
||||||
case 'png':
|
|
||||||
return 'image/png';
|
|
||||||
case 'gif':
|
|
||||||
return 'image/gif';
|
|
||||||
case 'mp4':
|
|
||||||
return 'video/mp4';
|
|
||||||
default:
|
|
||||||
logger.debug('setting unknown file type as type image/jpeg');
|
|
||||||
return 'image/jpeg';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function ifEmptyReturnOther (value, replacement) {
|
|
||||||
if (value === '') {
|
|
||||||
return replacement;
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function determineThumbnail (storedThumbnail, defaultThumbnail) {
|
function determineThumbnail (storedThumbnail, defaultThumbnail) {
|
||||||
return ifEmptyReturnOther(storedThumbnail, defaultThumbnail);
|
if (storedThumbnail === '') {
|
||||||
};
|
return defaultThumbnail;
|
||||||
|
|
||||||
function determineOgTitle (storedTitle, defaultTitle) {
|
|
||||||
return ifEmptyReturnOther(storedTitle, defaultTitle);
|
|
||||||
};
|
|
||||||
|
|
||||||
function determineOgDescription (storedDescription, defaultDescription) {
|
|
||||||
return ifEmptyReturnOther(storedDescription, defaultDescription);
|
|
||||||
};
|
|
||||||
|
|
||||||
function determineOgThumbnailContentType (thumbnail) {
|
|
||||||
if (thumbnail) {
|
|
||||||
if (thumbnail.lastIndexOf('.') !== -1) {
|
|
||||||
return determineContentTypeFromFileExtension(thumbnail.substring(thumbnail.lastIndexOf('.')));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return '';
|
return storedThumbnail;
|
||||||
}
|
|
||||||
|
|
||||||
function addOpengraphDataToClaim (claim) {
|
|
||||||
claim['host'] = host;
|
|
||||||
claim['embedUrl'] = `${host}/${claim.claimId}/${claim.name}`;
|
|
||||||
claim['showUrl'] = `${host}/${claim.claimId}/${claim.name}`;
|
|
||||||
claim['source'] = `${host}/${claim.claimId}/${claim.name}.${claim.fileExt}`;
|
|
||||||
claim['directFileUrl'] = `${host}/${claim.claimId}/${claim.name}.${claim.fileExt}`;
|
|
||||||
claim['ogTitle'] = determineOgTitle(claim.title, defaultTitle);
|
|
||||||
claim['ogDescription'] = determineOgDescription(claim.description, defaultDescription);
|
|
||||||
claim['ogThumbnailContentType'] = determineOgThumbnailContentType(claim.thumbnail);
|
|
||||||
return claim;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function prepareClaimData (claim) {
|
function prepareClaimData (claim) {
|
||||||
// logger.debug('preparing claim data based on resolved data:', claim);
|
// logger.debug('preparing claim data based on resolved data:', claim);
|
||||||
claim['thumbnail'] = determineThumbnail(claim.thumbnail, defaultThumbnail);
|
claim['thumbnail'] = determineThumbnail(claim.thumbnail, defaultThumbnail);
|
||||||
claim['fileExt'] = determineFileExtensionFromContentType(claim.contentType);
|
claim['fileExt'] = determineFileExtensionFromContentType(claim.contentType);
|
||||||
claim = addOpengraphDataToClaim(claim);
|
|
||||||
return claim;
|
return claim;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue