diff options
| author | Sergey M․ <dstftw@gmail.com> | 2019-12-15 23:15:24 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2019-12-15 23:15:24 +0700 | 
| commit | 42db58ec7367e7ee6555e5f14107712add61d013 (patch) | |
| tree | 9af78bcdd1121277ebd14be175119604c6a7fa5c | |
| parent | 73d8f3a63426e8517143e3a5554e12d614c5cdec (diff) | |
[utils] Improve str_to_int
| -rw-r--r-- | test/test_utils.py | 5 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 8 | 
2 files changed, 10 insertions, 3 deletions
diff --git a/test/test_utils.py b/test/test_utils.py index fed94a906..0896f4150 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -500,6 +500,11 @@ class TestUtil(unittest.TestCase):          self.assertEqual(str_to_int('123,456'), 123456)          self.assertEqual(str_to_int('123.456'), 123456)          self.assertEqual(str_to_int(523), 523) +        # Python 3 has no long +        if sys.version_info < (3, 0): +            eval('self.assertEqual(str_to_int(123456L), 123456)') +        self.assertEqual(str_to_int('noninteger'), None) +        self.assertEqual(str_to_int([]), None)      def test_url_basename(self):          self.assertEqual(url_basename('http://foo.de/'), '') diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 328f037a8..f6204692a 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -46,6 +46,7 @@ from .compat import (      compat_html_entities,      compat_html_entities_html5,      compat_http_client, +    compat_integer_types,      compat_kwargs,      compat_os_name,      compat_parse_qs, @@ -3519,10 +3520,11 @@ def str_or_none(v, default=None):  def str_to_int(int_str):      """ A more relaxed version of int_or_none """ -    if not isinstance(int_str, compat_str): +    if isinstance(int_str, compat_integer_types):          return int_str -    int_str = re.sub(r'[,\.\+]', '', int_str) -    return int(int_str) +    elif isinstance(int_str, compat_str): +        int_str = re.sub(r'[,\.\+]', '', int_str) +        return int_or_none(int_str)  def float_or_none(v, scale=1, invscale=1, default=None):  | 
