diff options
| author | Sergey M․ <dstftw@gmail.com> | 2018-07-21 18:01:06 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2018-07-21 18:03:58 +0700 | 
| commit | af03000ad5a445f03fbacb63ce626f8dcfe785c7 (patch) | |
| tree | 131b5dbb5b375b354e20f92db4ad55f78174cf18 | |
| parent | b96b4be4619b1e090650212380a92fb068f2fd21 (diff) | |
[utils] Introduce url_or_none
| -rw-r--r-- | test/test_utils.py | 11 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 7 | 
2 files changed, 18 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py index de841b1a0..8da5ccc56 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -78,6 +78,7 @@ from youtube_dl.utils import (      uppercase_escape,      lowercase_escape,      url_basename, +    url_or_none,      base_url,      urljoin,      urlencode_postdata, @@ -507,6 +508,16 @@ class TestUtil(unittest.TestCase):          self.assertEqual(urljoin('http://foo.de/', ['foobar']), None)          self.assertEqual(urljoin('http://foo.de/a/b/c.txt', '.././../d.txt'), 'http://foo.de/d.txt') +    def test_url_or_none(self): +        self.assertEqual(url_or_none(None), None) +        self.assertEqual(url_or_none(''), None) +        self.assertEqual(url_or_none('foo'), None) +        self.assertEqual(url_or_none('http://foo.de'), 'http://foo.de') +        self.assertEqual(url_or_none('https://foo.de'), 'https://foo.de') +        self.assertEqual(url_or_none('http$://foo.de'), None) +        self.assertEqual(url_or_none('http://foo.de'), 'http://foo.de') +        self.assertEqual(url_or_none('//foo.de'), '//foo.de') +      def test_parse_age_limit(self):          self.assertEqual(parse_age_limit(None), None)          self.assertEqual(parse_age_limit(False), None) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index b8700efcb..b84436ed6 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1866,6 +1866,13 @@ def strip_or_none(v):      return None if v is None else v.strip() +def url_or_none(url): +    if not url or not isinstance(url, compat_str): +        return None +    url = url.strip() +    return url if re.match(r'^(?:[a-zA-Z][\da-zA-Z.+-]*:)?//', url) else None + +  def parse_duration(s):      if not isinstance(s, compat_basestring):          return None  | 
