[YoutubeDL] Force redirect URL to unicode on python 2
This commit is contained in:
		
							parent
							
								
									e2f8bf5888
								
							
						
					
					
						commit
						fca6dba8b8
					
				
					 2 changed files with 12 additions and 1 deletions
				
			
		| 
						 | 
					@ -92,6 +92,7 @@ from .utils import (
 | 
				
			||||||
    YoutubeDLCookieJar,
 | 
					    YoutubeDLCookieJar,
 | 
				
			||||||
    YoutubeDLCookieProcessor,
 | 
					    YoutubeDLCookieProcessor,
 | 
				
			||||||
    YoutubeDLHandler,
 | 
					    YoutubeDLHandler,
 | 
				
			||||||
 | 
					    YoutubeDLRedirectHandler,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from .cache import Cache
 | 
					from .cache import Cache
 | 
				
			||||||
from .extractor import get_info_extractor, gen_extractor_classes, _LAZY_LOADER
 | 
					from .extractor import get_info_extractor, gen_extractor_classes, _LAZY_LOADER
 | 
				
			||||||
| 
						 | 
					@ -2343,6 +2344,7 @@ class YoutubeDL(object):
 | 
				
			||||||
        debuglevel = 1 if self.params.get('debug_printtraffic') else 0
 | 
					        debuglevel = 1 if self.params.get('debug_printtraffic') else 0
 | 
				
			||||||
        https_handler = make_HTTPS_handler(self.params, debuglevel=debuglevel)
 | 
					        https_handler = make_HTTPS_handler(self.params, debuglevel=debuglevel)
 | 
				
			||||||
        ydlh = YoutubeDLHandler(self.params, debuglevel=debuglevel)
 | 
					        ydlh = YoutubeDLHandler(self.params, debuglevel=debuglevel)
 | 
				
			||||||
 | 
					        redirect_handler = YoutubeDLRedirectHandler()
 | 
				
			||||||
        data_handler = compat_urllib_request_DataHandler()
 | 
					        data_handler = compat_urllib_request_DataHandler()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # When passing our own FileHandler instance, build_opener won't add the
 | 
					        # When passing our own FileHandler instance, build_opener won't add the
 | 
				
			||||||
| 
						 | 
					@ -2356,7 +2358,7 @@ class YoutubeDL(object):
 | 
				
			||||||
        file_handler.file_open = file_open
 | 
					        file_handler.file_open = file_open
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        opener = compat_urllib_request.build_opener(
 | 
					        opener = compat_urllib_request.build_opener(
 | 
				
			||||||
            proxy_handler, https_handler, cookie_processor, ydlh, data_handler, file_handler)
 | 
					            proxy_handler, https_handler, cookie_processor, ydlh, redirect_handler, data_handler, file_handler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Delete the default user-agent header, which would otherwise apply in
 | 
					        # Delete the default user-agent header, which would otherwise apply in
 | 
				
			||||||
        # cases where our custom HTTP handler doesn't come into play
 | 
					        # cases where our custom HTTP handler doesn't come into play
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2795,6 +2795,15 @@ class YoutubeDLCookieProcessor(compat_urllib_request.HTTPCookieProcessor):
 | 
				
			||||||
    https_response = http_response
 | 
					    https_response = http_response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class YoutubeDLRedirectHandler(compat_urllib_request.HTTPRedirectHandler):
 | 
				
			||||||
 | 
					    if sys.version_info[0] < 3:
 | 
				
			||||||
 | 
					        def redirect_request(self, req, fp, code, msg, headers, newurl):
 | 
				
			||||||
 | 
					            # On python 2 urlh.geturl() may sometimes return redirect URL
 | 
				
			||||||
 | 
					            # as byte string instead of unicode. This workaround allows
 | 
				
			||||||
 | 
					            # to force it always return unicode.
 | 
				
			||||||
 | 
					            return compat_urllib_request.HTTPRedirectHandler.redirect_request(self, req, fp, code, msg, headers, compat_str(newurl))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def extract_timezone(date_str):
 | 
					def extract_timezone(date_str):
 | 
				
			||||||
    m = re.search(
 | 
					    m = re.search(
 | 
				
			||||||
        r'^.{8,}?(?P<tz>Z$| ?(?P<sign>\+|-)(?P<hours>[0-9]{2}):?(?P<minutes>[0-9]{2})$)',
 | 
					        r'^.{8,}?(?P<tz>Z$| ?(?P<sign>\+|-)(?P<hours>[0-9]{2}):?(?P<minutes>[0-9]{2})$)',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue