diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2021-11-25 23:16:50 +0100 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2021-11-25 23:16:50 +0100 |
| commit | ceb1feb3502367ec41c8ae7e28a0cfbd7a2e2170 (patch) | |
| tree | 78b89e485873908d064d0b27cf5025510ddd8985 | |
| parent | 80a513baa5e595f62b08d7eed1ac709533fde838 (diff) | |
| download | invidious-ceb1feb3502367ec41c8ae7e28a0cfbd7a2e2170.tar.gz invidious-ceb1feb3502367ec41c8ae7e28a0cfbd7a2e2170.tar.bz2 invidious-ceb1feb3502367ec41c8ae7e28a0cfbd7a2e2170.zip | |
likes/dislikes: better fallback management
'.to_i64?' instead of '.to_i64' returns nil rather than raising
an exception when it's done on an empty string.
In some rare cases, rating can be equal to 5. In this case, the
value of player_response[videoDetails][averageRating] is an
Int and not a Float.
| -rw-r--r-- | src/invidious/videos.cr | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr index 1f9a6bc9..d04c6ecb 100644 --- a/src/invidious/videos.cr +++ b/src/invidious/videos.cr @@ -903,7 +903,7 @@ def extract_video_info(video_id : String, proxy_region : String? = nil, context_ if likes_button 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 + likes = likes_txt.as_s.gsub(/\D/, "").to_i64? if likes_txt LOGGER.trace("extract_video_info: Found \"likes\" button. Button text is \"#{likes_txt}\"") LOGGER.debug("extract_video_info: Likes count is #{likes}") if likes @@ -916,7 +916,7 @@ def extract_video_info(video_id : String, proxy_region : String? = nil, context_ if dislikes_button dislikes_txt = (dislikes_button["defaultText"] || dislikes_button["toggledText"]?) .try &.dig?("accessibility", "accessibilityData", "label") - dislikes = dislikes_txt.as_s.gsub(/\D/, "").to_i64 if dislikes_txt + dislikes = dislikes_txt.as_s.gsub(/\D/, "").to_i64? if dislikes_txt LOGGER.trace("extract_video_info: Found \"dislikes\" button. Button text is \"#{dislikes_txt}\"") LOGGER.debug("extract_video_info: Dislikes count is #{dislikes}") if dislikes @@ -924,7 +924,7 @@ def extract_video_info(video_id : String, proxy_region : String? = nil, context_ end if likes && likes != 0_i64 && (!dislikes || dislikes == 0_i64) - if rating = player_response.dig?("videoDetails", "averageRating").try &.as_f + if rating = player_response.dig?("videoDetails", "averageRating").try { |x| x.as_i64? || x.as_f? } dislikes = (likes * ((5 - rating)/(rating - 1))).round.to_i64 LOGGER.debug("extract_video_info: Dislikes count (using fallback method) is #{dislikes}") end |
