mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 07:47:08 -05:00 
			
		
		
		
	[utils] Add support TV Parental Guidelines ratings in parse_age_limit
This commit is contained in:
		@@ -42,6 +42,7 @@ from youtube_dl.utils import (
 | 
			
		||||
    ohdave_rsa_encrypt,
 | 
			
		||||
    OnDemandPagedList,
 | 
			
		||||
    orderedSet,
 | 
			
		||||
    parse_age_limit,
 | 
			
		||||
    parse_duration,
 | 
			
		||||
    parse_filesize,
 | 
			
		||||
    parse_count,
 | 
			
		||||
@@ -432,6 +433,20 @@ class TestUtil(unittest.TestCase):
 | 
			
		||||
            url_basename('http://media.w3.org/2010/05/sintel/trailer.mp4'),
 | 
			
		||||
            'trailer.mp4')
 | 
			
		||||
 | 
			
		||||
    def test_parse_age_limit(self):
 | 
			
		||||
        self.assertEqual(parse_age_limit(None), None)
 | 
			
		||||
        self.assertEqual(parse_age_limit(False), None)
 | 
			
		||||
        self.assertEqual(parse_age_limit('invalid'), None)
 | 
			
		||||
        self.assertEqual(parse_age_limit(0), 0)
 | 
			
		||||
        self.assertEqual(parse_age_limit(18), 18)
 | 
			
		||||
        self.assertEqual(parse_age_limit(21), 21)
 | 
			
		||||
        self.assertEqual(parse_age_limit(22), None)
 | 
			
		||||
        self.assertEqual(parse_age_limit('18'), 18)
 | 
			
		||||
        self.assertEqual(parse_age_limit('18+'), 18)
 | 
			
		||||
        self.assertEqual(parse_age_limit('PG-13'), 13)
 | 
			
		||||
        self.assertEqual(parse_age_limit('TV-14'), 14)
 | 
			
		||||
        self.assertEqual(parse_age_limit('TV-MA'), 17)
 | 
			
		||||
 | 
			
		||||
    def test_parse_duration(self):
 | 
			
		||||
        self.assertEqual(parse_duration(None), None)
 | 
			
		||||
        self.assertEqual(parse_duration(False), None)
 | 
			
		||||
 
 | 
			
		||||
@@ -1984,11 +1984,27 @@ US_RATINGS = {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TV_PARENTAL_GUIDELINES = {
 | 
			
		||||
    'TV-Y': 0,
 | 
			
		||||
    'TV-Y7': 7,
 | 
			
		||||
    'TV-G': 0,
 | 
			
		||||
    'TV-PG': 0,
 | 
			
		||||
    'TV-14': 14,
 | 
			
		||||
    'TV-MA': 17,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def parse_age_limit(s):
 | 
			
		||||
    if s is None:
 | 
			
		||||
    if type(s) == int:
 | 
			
		||||
        return s if 0 <= s <= 21 else None
 | 
			
		||||
    if not isinstance(s, compat_basestring):
 | 
			
		||||
        return None
 | 
			
		||||
    m = re.match(r'^(?P<age>\d{1,2})\+?$', s)
 | 
			
		||||
    return int(m.group('age')) if m else US_RATINGS.get(s)
 | 
			
		||||
    if m:
 | 
			
		||||
        return int(m.group('age'))
 | 
			
		||||
    if s in US_RATINGS:
 | 
			
		||||
        return US_RATINGS[s]
 | 
			
		||||
    return TV_PARENTAL_GUIDELINES.get(s)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def strip_jsonp(code):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user