diff --git a/src/invidious.cr b/src/invidious.cr index 2daec20a9..7a2fea107 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -1557,6 +1557,23 @@ end # Channels +# YouTube appears to let users set a "brand" URL that +# is different from their username, so we convert that here +get "/c/:user" do |env| + client = make_client(YT_URL) + user = env.params.url["user"] + + response = client.get("/c/#{user}") + document = XML.parse_html(response.body) + + anchor = document.xpath_node(%q(//a[contains(@class,"branded-page-header-title-link")])) + if !anchor + next env.redirect "/" + end + + env.redirect anchor["href"] +end + get "/user/:user" do |env| user = env.params.url["user"] env.redirect "/channel/#{user}"