aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorXe Iaso <me@christine.website>2022-10-12 02:39:57 +0000
committerXe Iaso <me@christine.website>2022-10-12 02:39:57 +0000
commit96caa7cccd8bedd7ebfffc9095c4f8fe44c9aa9d (patch)
treec142d19c31ce35414eb68c32ce7518d1579a6b95 /lib
parent49fdd5ea3af11b965826543c4ee2cb5911fd82d4 (diff)
downloadxesite-96caa7cccd8bedd7ebfffc9095c4f8fe44c9aa9d.tar.xz
xesite-96caa7cccd8bedd7ebfffc9095c4f8fe44c9aa9d.zip
HLS support
Signed-off-by: Xe Iaso <me@christine.website>
Diffstat (limited to 'lib')
-rw-r--r--lib/xesite_markdown/src/lib.rs8
-rw-r--r--lib/xesite_templates/src/lib.rs33
2 files changed, 40 insertions, 1 deletions
diff --git a/lib/xesite_markdown/src/lib.rs b/lib/xesite_markdown/src/lib.rs
index b225c4a..fad2b3a 100644
--- a/lib/xesite_markdown/src/lib.rs
+++ b/lib/xesite_markdown/src/lib.rs
@@ -167,6 +167,14 @@ pub fn render(inp: &str) -> Result<String> {
el.replace(&xesite_templates::talk_warning().0, ContentType::Html);
Ok(())
}),
+ element!("xeblog-video", |el| {
+ let path = el
+ .get_attribute("path")
+ .ok_or(Error::MissingElementAttribute("path".to_string()))?;
+
+ el.replace(&xesite_templates::video(path).0, ContentType::Html);
+ Ok(())
+ }),
],
..RewriteStrSettings::default()
},
diff --git a/lib/xesite_templates/src/lib.rs b/lib/xesite_templates/src/lib.rs
index 32ec07f..2e095db 100644
--- a/lib/xesite_templates/src/lib.rs
+++ b/lib/xesite_templates/src/lib.rs
@@ -1,4 +1,4 @@
-use maud::{html, Markup};
+use maud::{html, Markup, PreEscaped};
pub fn talk_warning() -> Markup {
html! {
@@ -94,3 +94,34 @@ pub fn sticker(name: String, mood: String) -> Markup {
}
}
}
+
+pub fn video(path: String) -> Markup {
+ let hls_script = PreEscaped(format!(
+ r#"
+<script>
+ if (Hls.isSupported()) {{
+ var video = document.getElementById('video');
+ var hls = new Hls();
+ hls.on(Hls.Events.MEDIA_ATTACHED, function () {{
+ console.log('video and hls.js are now bound together !');
+ }});
+ hls.on(Hls.Events.MANIFEST_PARSED, function (event, data) {{
+ console.log(
+ 'manifest loaded, found ' + data.levels.length + ' quality level'
+ );
+ }});
+ hls.loadSource("https://cdn.xeiaso.net/file/christine-static/{}/index.m3u8");
+ // bind them together
+ hls.attachMedia(video);
+ }}
+</script>
+"#,
+ path
+ ));
+
+ html! {
+ script src="/static/js/hls.js" {}
+ video id="video" width="100%" controls {}
+ (hls_script)
+ }
+}