mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-15 06:35:20 -07:00
Move buildVideoStructuredData to helper
This commit is contained in:
parent
911b67d569
commit
f45d48db1d
2 changed files with 50 additions and 38 deletions
45
helpers/structured-data.js
Normal file
45
helpers/structured-data.js
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
function makeFeaturedAppsString ( featuredApps ) {
|
||||||
|
return featuredApps.slice(0, 5).map(app => app.name).join(', ')
|
||||||
|
}
|
||||||
|
|
||||||
|
export function buildVideoStructuredData ( video, featuredApps, options ) {
|
||||||
|
// console.log('video', video)
|
||||||
|
|
||||||
|
const {
|
||||||
|
siteUrl
|
||||||
|
} = options
|
||||||
|
|
||||||
|
const thumbnailUrls = video.thumbnail.srcset.split(',').map( srcSetImage => {
|
||||||
|
const [ imageUrl ] = srcSetImage.trim().split(' ')
|
||||||
|
|
||||||
|
return imageUrl
|
||||||
|
})
|
||||||
|
|
||||||
|
const featuredAppsString = makeFeaturedAppsString( featuredApps )
|
||||||
|
|
||||||
|
const embedUrl = new URL( `${ siteUrl }/embed/rich-results-player` )
|
||||||
|
|
||||||
|
embedUrl.searchParams.append( 'youtube-id', video.id )
|
||||||
|
embedUrl.searchParams.append( 'name', video.name )
|
||||||
|
|
||||||
|
return {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
// https://developers.google.com/search/docs/data-types/video
|
||||||
|
// https://schema.org/VideoObject
|
||||||
|
"@type": "VideoObject",
|
||||||
|
"name": video.name,
|
||||||
|
"description": `Includes the following apps: ${featuredAppsString}`,
|
||||||
|
"thumbnailUrl": thumbnailUrls,
|
||||||
|
// https://en.wikipedia.org/wiki/ISO_8601
|
||||||
|
"uploadDate": video.lastUpdated.raw,
|
||||||
|
// "duration": "PT1M54S", // Need to updaet Youtube API Request for this
|
||||||
|
// "contentUrl": "https://www.example.com/video/123/file.mp4",
|
||||||
|
"embedUrl": embedUrl.href,
|
||||||
|
// "interactionStatistic": {
|
||||||
|
// "@type": "InteractionCounter",
|
||||||
|
// "interactionType": { "@type": "http://schema.org/WatchAction" },
|
||||||
|
// "userInteractionCount": 5647018
|
||||||
|
// },
|
||||||
|
// "regionsAllowed": "US,NL"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -81,6 +81,8 @@
|
||||||
|
|
||||||
import { getAppEndpoint } from '~/helpers/app-derived.js'
|
import { getAppEndpoint } from '~/helpers/app-derived.js'
|
||||||
|
|
||||||
|
import { buildVideoStructuredData } from '~/helpers/structure-data.js'
|
||||||
|
|
||||||
import LinkButton from '~/components/link-button.vue'
|
import LinkButton from '~/components/link-button.vue'
|
||||||
import EmailSubscribe from '~/components/email-subscribe.vue'
|
import EmailSubscribe from '~/components/email-subscribe.vue'
|
||||||
import VideoRow from '~/components/video/row.vue'
|
import VideoRow from '~/components/video/row.vue'
|
||||||
|
|
@ -93,43 +95,6 @@ function makeFeaturedAppsString ( featuredApps ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function buildVideoStructuredData ( video, featuredApps ) {
|
|
||||||
// console.log('video', video)
|
|
||||||
|
|
||||||
const thumbnailUrls = video.thumbnail.srcset.split(',').map( srcSetImage => {
|
|
||||||
const [ imageUrl ] = srcSetImage.trim().split(' ')
|
|
||||||
|
|
||||||
return imageUrl
|
|
||||||
})
|
|
||||||
|
|
||||||
const featuredAppsString = makeFeaturedAppsString( featuredApps )
|
|
||||||
|
|
||||||
const embedUrl = new URL( `${ this.$config.siteUrl }/embed/rich-results-player` )
|
|
||||||
|
|
||||||
embedUrl.searchParams.append( 'youtube-id', video.id )
|
|
||||||
embedUrl.searchParams.append( 'name', video.name )
|
|
||||||
|
|
||||||
return {
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
// https://developers.google.com/search/docs/data-types/video
|
|
||||||
// https://schema.org/VideoObject
|
|
||||||
"@type": "VideoObject",
|
|
||||||
"name": video.name,
|
|
||||||
"description": `Includes the following apps: ${featuredAppsString}`,
|
|
||||||
"thumbnailUrl": thumbnailUrls,
|
|
||||||
// https://en.wikipedia.org/wiki/ISO_8601
|
|
||||||
"uploadDate": video.lastUpdated.raw,
|
|
||||||
// "duration": "PT1M54S", // Need to updaet Youtube API Request for this
|
|
||||||
// "contentUrl": "https://www.example.com/video/123/file.mp4",
|
|
||||||
"embedUrl": embedUrl.href,
|
|
||||||
// "interactionStatistic": {
|
|
||||||
// "@type": "InteractionCounter",
|
|
||||||
// "interactionType": { "@type": "http://schema.org/WatchAction" },
|
|
||||||
// "userInteractionCount": 5647018
|
|
||||||
// },
|
|
||||||
// "regionsAllowed": "US,NL"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
LinkButton,
|
LinkButton,
|
||||||
|
|
@ -184,7 +149,9 @@ export default {
|
||||||
getAppEndpoint
|
getAppEndpoint
|
||||||
},
|
},
|
||||||
head() {
|
head() {
|
||||||
const structuredData = buildVideoStructuredData.bind(this)( this.video, this.featuredApps )
|
const structuredData = buildVideoStructuredData( this.video, this.featuredApps, {
|
||||||
|
siteUrl: this.$config.siteUrl
|
||||||
|
} )
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue