]> jfr.im git - yt-dlp.git/commitdiff
Handle negative duration from extractor
authorpukkandan <redacted>
Fri, 4 Mar 2022 14:10:10 +0000 (19:40 +0530)
committerpukkandan <redacted>
Fri, 4 Mar 2022 14:19:36 +0000 (19:49 +0530)
Closes #2921

yt_dlp/YoutubeDL.py
yt_dlp/utils.py

index 10eebecf2f578c36bae97a598bd2dfdc5aff1667..9672d0cd3b5d9dcb162d1ca6ea9fa86b54428cd0 100644 (file)
@@ -2392,6 +2392,8 @@ def sanitize_numeric_fields(info):
 
         sanitize_string_field(info_dict, 'id')
         sanitize_numeric_fields(info_dict)
+        if (info_dict.get('duration') or 0) <= 0 and info_dict.pop('duration', None):
+                self.report_warning('"duration" field is negative, there is an error in extractor')
 
         if 'playlist' not in info_dict:
             # It isn't part of a playlist
index 4134acfdc17c6f34fef79c8fec57f147195dd4b1..ef2c6bb2451a64159004d2e4c518261b46fb0155 100644 (file)
@@ -2257,7 +2257,7 @@ def unsmuggle_url(smug_url, default=None):
 def format_decimal_suffix(num, fmt='%d%s', *, factor=1000):
     """ Formats numbers with decimal sufixes like K, M, etc """
     num, factor = float_or_none(num), float(factor)
-    if num is None:
+    if num is None or num < 0:
         return None
     exponent = 0 if num == 0 else int(math.log(num, factor))
     suffix = ['', *'kMGTPEZY'][exponent]