diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2022-02-01 21:40:06 +0100 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2022-02-02 00:41:02 +0100 |
| commit | 4e44a91d08e45103536235030407c871b3ec5082 (patch) | |
| tree | 63fb391b87612c58cd3fd44944c693d94919000e | |
| parent | fc5f84a0cd34d085c44a8fa28245883e47ef5bcf (diff) | |
| download | invidious-4e44a91d08e45103536235030407c871b3ec5082.tar.gz invidious-4e44a91d08e45103536235030407c871b3ec5082.tar.bz2 invidious-4e44a91d08e45103536235030407c871b3ec5082.zip | |
Add support for clips
| -rw-r--r-- | src/invidious.cr | 1 | ||||
| -rw-r--r-- | src/invidious/routes/watch.cr | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/invidious.cr b/src/invidious.cr index b09f31c2..f4cae7ea 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -339,6 +339,7 @@ end Invidious::Routing.post "/watch_ajax", Invidious::Routes::Watch, :mark_watched Invidious::Routing.get "/watch/:id", Invidious::Routes::Watch, :redirect Invidious::Routing.get "/shorts/:id", Invidious::Routes::Watch, :redirect + Invidious::Routing.get "/clip/:clip", Invidious::Routes::Watch, :clip Invidious::Routing.get "/w/:id", Invidious::Routes::Watch, :redirect Invidious::Routing.get "/v/:id", Invidious::Routes::Watch, :redirect Invidious::Routing.get "/e/:id", Invidious::Routes::Watch, :redirect diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr index 7d048ce8..42bc4219 100644 --- a/src/invidious/routes/watch.cr +++ b/src/invidious/routes/watch.cr @@ -266,4 +266,19 @@ module Invidious::Routes::Watch "{}" end end + + def self.clip(env) + clip_id = env.params.url["clip"]? + + return error_template(400, "A clip ID is required") if !clip_id + + response = YoutubeAPI.resolve_url("https://www.youtube.com/clip/#{clip_id}") + return error_template(400, "Invalid clip ID") if response["error"]? + + if video_id = response.dig?("endpoint", "watchEndpoint", "videoId") + return env.redirect "/watch?v=#{video_id}&#{env.params.query}" + else + return error_template(404, "The requested clip doesn't exist") + end + end end |
