[utils] Introduce url_or_none
This commit is contained in:
		
							parent
							
								
									b96b4be461
								
							
						
					
					
						commit
						af03000ad5
					
				
					 2 changed files with 18 additions and 0 deletions
				
			
		| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue