summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-08-29 19:10:01 -0700
committerChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2023-09-18 20:10:41 -0400
commitbb04bcc42c1b135aaf50de8799264f86bc42f4db (patch)
treedf2208384af2e182b78724b76b3c27221e37203c /src
parentf55b96a53bde8d8c6a24d4db4e9d10f14ffee585 (diff)
downloadinvidious-bb04bcc42c1b135aaf50de8799264f86bc42f4db.tar.gz
invidious-bb04bcc42c1b135aaf50de8799264f86bc42f4db.tar.bz2
invidious-bb04bcc42c1b135aaf50de8799264f86bc42f4db.zip
Apply suggestions from code review
add videoId to resolve_url function Co-Authored-By: Samantaz Fox <coding@samantaz.fr>
Diffstat (limited to 'src')
-rw-r--r--src/invidious/comments/youtube.cr4
-rw-r--r--src/invidious/routes/api/v1/channels.cr11
-rw-r--r--src/invidious/routes/api/v1/misc.cr10
-rw-r--r--src/invidious/routes/channels.cr2
-rw-r--r--src/invidious/views/post.ecr2
5 files changed, 16 insertions, 13 deletions
diff --git a/src/invidious/comments/youtube.cr b/src/invidious/comments/youtube.cr
index 01c2564f..185d8e43 100644
--- a/src/invidious/comments/youtube.cr
+++ b/src/invidious/comments/youtube.cr
@@ -37,14 +37,14 @@ module Invidious::Comments
},
}
- objectParsed = object.try { |i| Protodec::Any.cast_json(i) }
+ object_parsed = object.try { |i| Protodec::Any.cast_json(i) }
.try { |i| Protodec::Any.from_json(i) }
.try { |i| Base64.urlsafe_encode(i) }
object2 = {
"80226972:embedded" => {
"2:string" => ucid,
- "3:string" => objectParsed,
+ "3:string" => object_parsed,
},
}
diff --git a/src/invidious/routes/api/v1/channels.cr b/src/invidious/routes/api/v1/channels.cr
index 0d2d2eb1..a5ae16a8 100644
--- a/src/invidious/routes/api/v1/channels.cr
+++ b/src/invidious/routes/api/v1/channels.cr
@@ -347,9 +347,8 @@ module Invidious::Routes::API::V1::Channels
locale = env.get("preferences").as(Preferences).locale
env.response.content_type = "application/json"
-
id = env.params.url["id"].to_s
- ucid = env.params.query["ucid"]
+ ucid = env.params.query["ucid"]?
thin_mode = env.params.query["thin_mode"]?
thin_mode = thin_mode == "true"
@@ -357,6 +356,14 @@ module Invidious::Routes::API::V1::Channels
format = env.params.query["format"]?
format ||= "json"
+ if ucid.nil?
+ response = YoutubeAPI.resolve_url("https://www.youtube.com/post/#{id}")
+ return error_json(400, "Invalid post ID") if response["error"]?
+ ucid = response.dig("endpoint", "browseEndpoint", "browseId").as_s
+ else
+ ucid = ucid.to_s
+ end
+
begin
fetch_channel_community_post(ucid, id, locale, format, thin_mode)
rescue ex
diff --git a/src/invidious/routes/api/v1/misc.cr b/src/invidious/routes/api/v1/misc.cr
index 6118a0d1..5dfc4afa 100644
--- a/src/invidious/routes/api/v1/misc.cr
+++ b/src/invidious/routes/api/v1/misc.cr
@@ -162,21 +162,19 @@ module Invidious::Routes::API::V1::Misc
resolved_url = YoutubeAPI.resolve_url(url.as(String))
endpoint = resolved_url["endpoint"]
pageType = endpoint.dig?("commandMetadata", "webCommandMetadata", "webPageType").try &.as_s || ""
- if sub_endpoint = endpoint["watchEndpoint"]?
- resolved_ucid = sub_endpoint["videoId"]?
- elsif sub_endpoint = endpoint["browseEndpoint"]?
- resolved_ucid = sub_endpoint["browseId"]?
- elsif pageType == "WEB_PAGE_TYPE_UNKNOWN"
+ if pageType == "WEB_PAGE_TYPE_UNKNOWN"
return error_json(400, "Unknown url")
end
+ sub_endpoint = endpoint["watchEndpoint"]? || endpoint["browseEndpoint"]? || endpoint
params = sub_endpoint.try &.dig?("params")
rescue ex
return error_json(500, ex)
end
JSON.build do |json|
json.object do
- json.field "ucid", resolved_ucid.try &.as_s || ""
+ json.field "ucid", sub_endpoint["browseId"].try &.as_s if sub_endpoint["browseId"]?
+ json.field "videoId", sub_endpoint["videoId"].try &.as_s if sub_endpoint["videoId"]?
json.field "params", params.try &.as_s
json.field "pageType", pageType
end
diff --git a/src/invidious/routes/channels.cr b/src/invidious/routes/channels.cr
index 20b02dc1..29995bf6 100644
--- a/src/invidious/routes/channels.cr
+++ b/src/invidious/routes/channels.cr
@@ -205,8 +205,6 @@ module Invidious::Routes::Channels
thin_mode = env.params.query["thin_mode"]? || prefs.thin_mode
thin_mode = thin_mode == "true"
- client_config = YoutubeAPI::ClientConfig.new(region: region)
-
if !ucid.nil?
ucid = ucid.to_s
post_response = fetch_channel_community_post(ucid, id, locale, "json", thin_mode)
diff --git a/src/invidious/views/post.ecr b/src/invidious/views/post.ecr
index b2cd778c..071d1c88 100644
--- a/src/invidious/views/post.ecr
+++ b/src/invidious/views/post.ecr
@@ -22,7 +22,7 @@
"comments": ["youtube"]
},
"preferences" => prefs,
- "base_url" => "/api/v1/post/" + id + "/comments",
+ "base_url" => "/api/v1/post/#{URI.encode_www_form(id)}/comments",
"ucid" => ucid
}.to_pretty_json
%>