aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/compat/youtube.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/compat/youtube.rs')
-rw-r--r--server/src/routes/compat/youtube.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/server/src/routes/compat/youtube.rs b/server/src/routes/compat/youtube.rs
index 732431e..5880044 100644
--- a/server/src/routes/compat/youtube.rs
+++ b/server/src/routes/compat/youtube.rs
@@ -42,3 +42,18 @@ pub fn r_youtube_channel(_session: Session, db: &State<Database>, id: &str) -> M
let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?;
Ok(Redirect::to(rocket::uri!(r_library_node(&node.slug))))
}
+
+#[get("/embed/<v>")]
+pub fn r_youtube_embed(_session: Session, db: &State<Database>, v: &str) -> MyResult<Redirect> {
+ if v.len() != 11 {
+ Err(anyhow!("video id length incorrect"))?
+ }
+ let Some(id) = db.get_node_external_id("youtube:video", v)? else {
+ Err(anyhow!("element not found"))?
+ };
+ let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?;
+ Ok(Redirect::to(rocket::uri!(r_player(
+ &node.slug,
+ PlayerConfig::default()
+ ))))
+}