summaryrefslogtreecommitdiffstats
path: root/src/invidious.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/invidious.cr')
-rw-r--r--src/invidious.cr41
1 files changed, 4 insertions, 37 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index d4878759..24f49930 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -399,6 +399,10 @@ Invidious::Routing.get "/s_p/:id/:name", Invidious::Routes::Images, :s_p_image
Invidious::Routing.get "/yts/img/:name", Invidious::Routes::Images, :yts_image
Invidious::Routing.get "/vi/:id/:name", Invidious::Routes::Images, :thumbnails
+Invidious::Routing.get "/channel/:ucid/live", Invidious::Routes::Live, :check
+Invidious::Routing.get "/user/:user/live", Invidious::Routes::Live, :check
+Invidious::Routing.get "/c/:user/live", Invidious::Routes::Live, :check
+
# API routes (macro)
define_v1_api_routes()
@@ -406,43 +410,6 @@ define_v1_api_routes()
define_api_manifest_routes()
define_video_playback_routes()
-# Channels
-
-{"/channel/:ucid/live", "/user/:user/live", "/c/:user/live"}.each do |route|
- get route do |env|
- locale = env.get("preferences").as(Preferences).locale
-
- # Appears to be a bug in routing, having several routes configured
- # as `/a/:a`, `/b/:a`, `/c/:a` results in 404
- value = env.request.resource.split("/")[2]
- body = ""
- {"channel", "user", "c"}.each do |type|
- response = YT_POOL.client &.get("/#{type}/#{value}/live?disable_polymer=1")
- if response.status_code == 200
- body = response.body
- end
- end
-
- video_id = body.match(/'VIDEO_ID': "(?<id>[a-zA-Z0-9_-]{11})"/).try &.["id"]?
- if video_id
- params = [] of String
- env.params.query.each do |k, v|
- params << "#{k}=#{v}"
- end
- params = params.join("&")
-
- url = "/watch?v=#{video_id}"
- if !params.empty?
- url += "&#{params}"
- end
-
- env.redirect url
- else
- env.redirect "/channel/#{value}"
- end
- end
-end
-
# Authenticated endpoints
# The notification APIs can't be extracted yet