[utils] Add support TV Parental Guidelines ratings in parse_age_limit
This commit is contained in:
parent
d34995a9e3
commit
a8795327ca
|
@ -42,6 +42,7 @@ from youtube_dl.utils import (
|
||||||
ohdave_rsa_encrypt,
|
ohdave_rsa_encrypt,
|
||||||
OnDemandPagedList,
|
OnDemandPagedList,
|
||||||
orderedSet,
|
orderedSet,
|
||||||
|
parse_age_limit,
|
||||||
parse_duration,
|
parse_duration,
|
||||||
parse_filesize,
|
parse_filesize,
|
||||||
parse_count,
|
parse_count,
|
||||||
|
@ -432,6 +433,20 @@ class TestUtil(unittest.TestCase):
|
||||||
url_basename('http://media.w3.org/2010/05/sintel/trailer.mp4'),
|
url_basename('http://media.w3.org/2010/05/sintel/trailer.mp4'),
|
||||||
'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):
|
def test_parse_duration(self):
|
||||||
self.assertEqual(parse_duration(None), None)
|
self.assertEqual(parse_duration(None), None)
|
||||||
self.assertEqual(parse_duration(False), 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):
|
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
|
return None
|
||||||
m = re.match(r'^(?P<age>\d{1,2})\+?$', s)
|
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):
|
def strip_jsonp(code):
|
||||||
|
|
Loading…
Reference in New Issue