[utils] Relax TV Parental Guidelines matching
[youtube-dl] / youtube_dl / utils.py
index b460393bf37106a47304dfa97dd7b1efa37117cd..d61af88378727f6e2df201f129e05554da52d3ae 100644 (file)
@@ -2253,12 +2253,12 @@ US_RATINGS = {
 
 
 TV_PARENTAL_GUIDELINES = {
-    'TV-Y': 0,
-    'TV-Y7': 7,
-    'TV-G': 0,
-    'TV-PG': 0,
-    'TV-14': 14,
-    'TV-MA': 17,
+    'Y': 0,
+    'Y7': 7,
+    'G': 0,
+    'PG': 0,
+    '14': 14,
+    'MA': 17,
 }
 
 
@@ -2272,7 +2272,10 @@ def parse_age_limit(s):
         return int(m.group('age'))
     if s in US_RATINGS:
         return US_RATINGS[s]
-    return TV_PARENTAL_GUIDELINES.get(s)
+    m = re.match(r'^TV[_-]?(%s)$' % '|'.join(TV_PARENTAL_GUIDELINES.keys()), s)
+    if m:
+        return TV_PARENTAL_GUIDELINES[m.group(1)]
+    return None
 
 
 def strip_jsonp(code):
@@ -3534,10 +3537,13 @@ class GeoUtils(object):
     }
 
     @classmethod
-    def random_ipv4(cls, code):
-        block = cls._country_ip_map.get(code.upper())
-        if not block:
-            return None
+    def random_ipv4(cls, code_or_block):
+        if len(code_or_block) == 2:
+            block = cls._country_ip_map.get(code_or_block.upper())
+            if not block:
+                return None
+        else:
+            block = code_or_block
         addr, preflen = block.split('/')
         addr_min = compat_struct_unpack('!L', socket.inet_aton(addr))[0]
         addr_max = addr_min | (0xffffffff >> int(preflen))