summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2024-03-01 23:31:55 -0500
committerChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>2024-03-01 23:45:29 -0500
commit5ceeefa2362de32b97ca2d5c8b44e8d87f3e0ba9 (patch)
tree808f64049e96b318d467572743ba541871732aab /src
parente8a36985aff1a5b33ddf9abea85dd2c23422c2f7 (diff)
downloadinvidious-5ceeefa2362de32b97ca2d5c8b44e8d87f3e0ba9.tar.gz
invidious-5ceeefa2362de32b97ca2d5c8b44e8d87f3e0ba9.tar.bz2
invidious-5ceeefa2362de32b97ca2d5c8b44e8d87f3e0ba9.zip
add support for new likes format
Diffstat (limited to 'src')
-rw-r--r--src/invidious/videos/parser.cr16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr
index 77520dbe..c9aea47b 100644
--- a/src/invidious/videos/parser.cr
+++ b/src/invidious/videos/parser.cr
@@ -266,7 +266,18 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
.try &.dig?("videoActions", "menuRenderer", "topLevelButtons")
if toplevel_buttons
- likes_button = toplevel_buttons.try &.as_a
+ # New Format as of december 2023
+ likes_button = toplevel_buttons.dig?(0,
+ "segmentedLikeDislikeButtonViewModel",
+ "likeButtonViewModel",
+ "likeButtonViewModel",
+ "toggleButtonViewModel",
+ "toggleButtonViewModel",
+ "defaultButtonViewModel",
+ "buttonViewModel"
+ )
+
+ likes_button ||= toplevel_buttons.try &.as_a
.find(&.dig?("toggleButtonRenderer", "defaultIcon", "iconType").=== "LIKE")
.try &.["toggleButtonRenderer"]
@@ -279,9 +290,10 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any
)
if likes_button
+ likes_txt = likes_button.dig?("accessibilityText")
# Note: The like count from `toggledText` is off by one, as it would
# represent the new like count in the event where the user clicks on "like".
- likes_txt = (likes_button["defaultText"]? || likes_button["toggledText"]?)
+ likes_txt ||= (likes_button["defaultText"]? || likes_button["toggledText"]?)
.try &.dig?("accessibility", "accessibilityData", "label")
likes = likes_txt.as_s.gsub(/\D/, "").to_i64? if likes_txt