mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[utils] Introduce url_or_none
This commit is contained in:
		| @@ -78,6 +78,7 @@ from youtube_dl.utils import ( | |||||||
|     uppercase_escape, |     uppercase_escape, | ||||||
|     lowercase_escape, |     lowercase_escape, | ||||||
|     url_basename, |     url_basename, | ||||||
|  |     url_or_none, | ||||||
|     base_url, |     base_url, | ||||||
|     urljoin, |     urljoin, | ||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
| @@ -507,6 +508,16 @@ class TestUtil(unittest.TestCase): | |||||||
|         self.assertEqual(urljoin('http://foo.de/', ['foobar']), None) |         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') |         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): |     def test_parse_age_limit(self): | ||||||
|         self.assertEqual(parse_age_limit(None), None) |         self.assertEqual(parse_age_limit(None), None) | ||||||
|         self.assertEqual(parse_age_limit(False), None) |         self.assertEqual(parse_age_limit(False), None) | ||||||
|   | |||||||
| @@ -1866,6 +1866,13 @@ def strip_or_none(v): | |||||||
|     return None if v is None else v.strip() |     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): | def parse_duration(s): | ||||||
|     if not isinstance(s, compat_basestring): |     if not isinstance(s, compat_basestring): | ||||||
|         return None |         return None | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user