summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorchunky programmer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-04-19 20:59:06 -0400
committerchunky programmer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-04-30 18:58:08 -0400
commitd420741cc15dce656da641f5143120ec88e59bc8 (patch)
treeca400617addc3de138976b558368793a82646124 /src
parent97e3938f5f6741d8645c1bdd37deebc6ddc06151 (diff)
downloadinvidious-d420741cc15dce656da641f5143120ec88e59bc8.tar.gz
invidious-d420741cc15dce656da641f5143120ec88e59bc8.tar.bz2
invidious-d420741cc15dce656da641f5143120ec88e59bc8.zip
Allow channel urls to be displayed in YT description
Diffstat (limited to 'src')
-rw-r--r--src/invidious/videos/description.cr18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/invidious/videos/description.cr b/src/invidious/videos/description.cr
index 2017955d..0a9d84f8 100644
--- a/src/invidious/videos/description.cr
+++ b/src/invidious/videos/description.cr
@@ -6,13 +6,19 @@ def parse_command(command : JSON::Any?, string : String) : String?
# 3rd party URL, extract original URL from YouTube tracking URL
if url_endpoint = on_tap.try &.["urlEndpoint"]?
- youtube_url = URI.parse url_endpoint["url"].as_s
-
- original_url = youtube_url.query_params["q"]?
- if original_url.nil?
- return ""
+ if url_endpoint["url"].as_s.includes? "youtube.com/redirect"
+ youtube_url = URI.parse url_endpoint["url"].as_s
+ original_url = youtube_url.query_params["q"]?
+ if original_url.nil?
+ return ""
+ else
+ return "<a href=\"#{original_url}\">#{original_url}</a>"
+ end
else
- return "<a href=\"#{original_url}\">#{original_url}</a>"
+ # not a redirect url, some first party url
+ # see https://github.com/iv-org/invidious/issues/3751
+ first_party_url = url_endpoint["url"].as_s
+ return "<a href=\"#{first_party_url.sub("https://www.youtube.com", "")}\">#{first_party_url}</a>"
end
# 1st party watch URL
elsif watch_endpoint = on_tap.try &.["watchEndpoint"]?