summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDUOLabs333 <dvdugo333@gmail.com>2023-01-03 20:18:10 -0500
committerDUOLabs333 <dvdugo333@gmail.com>2023-01-03 20:18:10 -0500
commit85dd3533bb4f9bc8e007d3b5de158f56db1445ce (patch)
treeffc5027185782dfc6814a0aa0ad4f0413e77e71f
parent865704dc7b0dee818b0f7636a085fcf1736635a7 (diff)
downloadinvidious-85dd3533bb4f9bc8e007d3b5de158f56db1445ce.tar.gz
invidious-85dd3533bb4f9bc8e007d3b5de158f56db1445ce.tar.bz2
invidious-85dd3533bb4f9bc8e007d3b5de158f56db1445ce.zip
Fix for the ArithmeticOverflow Problem
-rw-r--r--src/invidious/helpers/utils.cr2
-rw-r--r--src/invidious/yt_backend/extractors.cr5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr
index ed0cca38..59d8953a 100644
--- a/src/invidious/helpers/utils.cr
+++ b/src/invidious/helpers/utils.cr
@@ -162,7 +162,7 @@ def number_with_separator(number)
end
def short_text_to_number(short_text : String) : Int64
- matches = /(?<number>\d+(\.\d+)?)\s?(?<suffix>[mMkKbB])?/.match(short_text)
+ matches = /(?<number>\d+(\.\d+)?)\s?(?<suffix>[mMkKbB]|())?/.match(short_text)
number = matches.try &.["number"].to_f || 0.0
case matches.try &.["suffix"].downcase
diff --git a/src/invidious/yt_backend/extractors.cr b/src/invidious/yt_backend/extractors.cr
index edc722cf..326d2d62 100644
--- a/src/invidious/yt_backend/extractors.cr
+++ b/src/invidious/yt_backend/extractors.cr
@@ -169,7 +169,12 @@ private module Parsers
# When public subscriber count is disabled, the subscriberCountText isn't sent by InnerTube.
# Always simpleText
# TODO change default value to nil
+
subscriber_count = item_contents.dig?("subscriberCountText", "simpleText")
+ if !subscriber_count || !subscriber_count.as_s.includes? " subscriber"
+ subscriber_count = item_contents.dig?("videoCountText", "simpleText")
+ end
+ subscriber_count = subscriber_count
.try { |s| short_text_to_number(s.as_s.split(" ")[0]).to_i32 } || 0
# Auto-generated channels doesn't have videoCountText