1
0
mirror of https://git.sr.ht/~cadence/bibliogram synced 2024-11-22 08:07:30 +00:00

Embed videos in feeds

This commit is contained in:
Cadence Ember 2020-07-10 22:34:06 +12:00
parent 8ed850edf2
commit c57d51e3eb
No known key found for this signature in database
GPG Key ID: 128B99B1B74A6412
2 changed files with 19 additions and 9 deletions

View File

@ -1,9 +1,16 @@
const config = require("../../../config") const constants = require("../constants")
const {proxyImage} = require("../utils/proxyurl")
const collectors = require("../collectors") const collectors = require("../collectors")
const TimelineBaseMethods = require("./TimelineBaseMethods") const TimelineBaseMethods = require("./TimelineBaseMethods")
const {compile} = require("pug")
require("../testimports")(collectors) require("../testimports")(collectors)
const rssImageTemplate = compile(`
img(src=constants.website_origin+entry.getDisplayUrlP() alt=entry.getAlt() width=entry.data.dimensions.width height=entry.data.dimensions.height)
`)
const rssVideoTemplate = compile(`
video(src=constants.website_origin+entry.getVideoUrlP() controls preload="auto" width=entry.data.dimensions.width height=entry.data.dimensions.height)
`)
class TimelineChild extends TimelineBaseMethods { class TimelineChild extends TimelineBaseMethods {
/** /**
* @param {import("../types").GraphChildAll} data * @param {import("../types").GraphChildAll} data
@ -12,6 +19,14 @@ class TimelineChild extends TimelineBaseMethods {
super() super()
this.data = data this.data = data
} }
getFeedItem() {
if (this.data.video_url) {
return rssVideoTemplate({entry: this, constants})
} else {
return rssImageTemplate({entry: this, constants})
}
}
} }
module.exports = TimelineChild module.exports = TimelineChild

View File

@ -10,7 +10,7 @@ require("../testimports")(collectors, TimelineChild, TimelineBaseMethods)
const rssDescriptionTemplate = compile(` const rssDescriptionTemplate = compile(`
p(style='white-space: pre-line')= caption p(style='white-space: pre-line')= caption
each child in children each child in children
img(alt=child.alt src=child.src width=child.width height=child.height) != child.getFeedItem()
`) `)
class TimelineEntry extends TimelineBaseMethods { class TimelineEntry extends TimelineBaseMethods {
@ -262,12 +262,7 @@ class TimelineEntry extends TimelineBaseMethods {
title: this.getCaptionIntroduction() || `New post from @${this.getBasicOwner().username}`, title: this.getCaptionIntroduction() || `New post from @${this.getBasicOwner().username}`,
description: rssDescriptionTemplate({ description: rssDescriptionTemplate({
caption: this.getCaption(), caption: this.getCaption(),
children: children.map(child => ({ children
src: `${constants.website_origin}${child.getDisplayUrlP()}`,
alt: child.getAlt(),
width: child.data.dimensions.width,
height: child.data.dimensions.height
}))
}), }),
link: `${constants.website_origin}/p/${this.data.shortcode}`, link: `${constants.website_origin}/p/${this.data.shortcode}`,
id: `bibliogram:post/${this.data.shortcode}`, // Is it wise to keep the origin in here? The same post would have a different ID from different servers. id: `bibliogram:post/${this.data.shortcode}`, // Is it wise to keep the origin in here? The same post would have a different ID from different servers.