mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-24 11:11:54 +00:00
[utils] Add support TV Parental Guidelines ratings in parse_age_limit
This commit is contained in:
parent
d34995a9e3
commit
a8795327ca
2 changed files with 33 additions and 2 deletions
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue