diff options
| author | ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> | 2024-03-01 23:31:55 -0500 |
|---|---|---|
| committer | ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com> | 2024-03-01 23:45:29 -0500 |
| commit | 5ceeefa2362de32b97ca2d5c8b44e8d87f3e0ba9 (patch) | |
| tree | 808f64049e96b318d467572743ba541871732aab /src | |
| parent | e8a36985aff1a5b33ddf9abea85dd2c23422c2f7 (diff) | |
| download | invidious-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.cr | 16 |
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 |
