summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamantaz Fox <coding@samantaz.fr>2022-07-04 22:03:38 +0200
committerSamantaz Fox <coding@samantaz.fr>2022-07-04 22:03:38 +0200
commiteba84dcd78e5389767be3f6e25b3931fee872b91 (patch)
tree61be055af77b9ddcc79aa1f67ec5f6af72156e00
parent6c73614a47a5a88df45aa32fadb64e85595d2a18 (diff)
parent864f27ef72b084461e327640f80aa45a8f250b0f (diff)
downloadinvidious-eba84dcd78e5389767be3f6e25b3931fee872b91.tar.gz
invidious-eba84dcd78e5389767be3f6e25b3931fee872b91.tar.bz2
invidious-eba84dcd78e5389767be3f6e25b3931fee872b91.zip
Merge pull request #3183 from 11Tuvork28/fix-selected-key-missing
-rw-r--r--src/invidious/channels/community.cr4
-rw-r--r--src/invidious/yt_backend/extractors.cr2
-rw-r--r--src/invidious/yt_backend/extractors_utils.cr2
3 files changed, 3 insertions, 5 deletions
diff --git a/src/invidious/channels/community.cr b/src/invidious/channels/community.cr
index 4701ecbd..aaed9567 100644
--- a/src/invidious/channels/community.cr
+++ b/src/invidious/channels/community.cr
@@ -13,13 +13,11 @@ def fetch_channel_community(ucid, continuation, locale, format, thin_mode)
if !continuation || continuation.empty?
initial_data = extract_initial_data(response.body)
- body = initial_data["contents"]?.try &.["twoColumnBrowseResultsRenderer"]["tabs"].as_a.select { |tab| tab["tabRenderer"]?.try &.["selected"].as_bool.== true }[0]?
+ body = extract_selected_tab(initial_data["contents"]["twoColumnBrowseResultsRenderer"]["tabs"])["content"]["sectionListRenderer"]["contents"][0]["itemSectionRenderer"]
if !body
raise InfoException.new("Could not extract community tab.")
end
-
- body = body["tabRenderer"]["content"]["sectionListRenderer"]["contents"][0]["itemSectionRenderer"]
else
continuation = produce_channel_community_continuation(ucid, continuation)
diff --git a/src/invidious/yt_backend/extractors.cr b/src/invidious/yt_backend/extractors.cr
index c4326cab..b9609eb9 100644
--- a/src/invidious/yt_backend/extractors.cr
+++ b/src/invidious/yt_backend/extractors.cr
@@ -417,7 +417,7 @@ private module Extractors
# {"tabRenderer": {
# "endpoint": {...}
# "title": "Playlists",
- # "selected": true,
+ # "selected": true, # Is nil unless tab is selected
# "content": {...},
# ...
# }}
diff --git a/src/invidious/yt_backend/extractors_utils.cr b/src/invidious/yt_backend/extractors_utils.cr
index 3d5e5787..f8245160 100644
--- a/src/invidious/yt_backend/extractors_utils.cr
+++ b/src/invidious/yt_backend/extractors_utils.cr
@@ -84,7 +84,7 @@ end
def extract_selected_tab(tabs)
# Extract the selected tab from the array of tabs Youtube returns
- return selected_target = tabs.as_a.select(&.["tabRenderer"]?.try &.["selected"].as_bool)[0]["tabRenderer"]
+ return selected_target = tabs.as_a.select(&.["tabRenderer"]?.try &.["selected"]?.try &.as_bool)[0]["tabRenderer"]
end
def fetch_continuation_token(items : Array(JSON::Any))