- opener = ydl._opener
- assert isinstance(ydl._opener, urllib.request.OpenerDirector)
- if isinstance(handler, (type, tuple)):
- find_cp = lambda x: isinstance(x, handler)
- else:
- find_cp = lambda x: x is handler
-
- removed = []
- for meth in dir(handler):
- if meth in ["redirect_request", "do_open", "proxy_open"]:
- # oops, coincidental match
- continue
-
- i = meth.find("_")
- protocol = meth[:i]
- condition = meth[i + 1:]
-
- if condition.startswith("error"):
- j = condition.find("_") + i + 1
- kind = meth[j + 1:]
- try:
- kind = int(kind)
- except ValueError:
- pass
- lookup = opener.handle_error.get(protocol, {})
- opener.handle_error[protocol] = lookup
- elif condition == "open":
- kind = protocol
- lookup = opener.handle_open
- elif condition == "response":
- kind = protocol
- lookup = opener.process_response
- elif condition == "request":
- kind = protocol
- lookup = opener.process_request
- else:
- continue
-
- handlers = lookup.setdefault(kind, [])
- if handlers:
- handlers[:] = [x for x in handlers if not find_cp(x)]
-
- removed.append(x for x in handlers if find_cp(x))
-
- if removed:
- for x in opener.handlers:
- if find_cp(x):
- x.add_parent(None)
- opener.handlers[:] = [x for x in opener.handlers if not find_cp(x)]
+ rh = ydl._request_director.handlers['Urllib']
+ if 'abematv-license' in rh._SUPPORTED_URL_SCHEMES:
+ return
+ headers = ydl.params['http_headers'].copy()
+ proxies = ydl.proxies.copy()
+ clean_proxies(proxies, headers)
+ opener = rh._get_instance(cookiejar=ydl.cookiejar, proxies=proxies)
+ assert isinstance(opener, urllib.request.OpenerDirector)
+ opener.add_handler(handler)
+ rh._SUPPORTED_URL_SCHEMES = (*rh._SUPPORTED_URL_SCHEMES, 'abematv-license')