[downloader/f4m] get the redirected f4m_url and handle url query string properly
This commit is contained in:
		
							parent
							
								
									3711304510
								
							
						
					
					
						commit
						324ac0a243
					
				
					 1 changed files with 10 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -11,6 +11,7 @@ from .fragment import FragmentFD
 | 
			
		|||
from ..compat import (
 | 
			
		||||
    compat_urlparse,
 | 
			
		||||
    compat_urllib_error,
 | 
			
		||||
    compat_urllib_parse_urlparse,
 | 
			
		||||
)
 | 
			
		||||
from ..utils import (
 | 
			
		||||
    encodeFilename,
 | 
			
		||||
| 
						 | 
				
			
			@ -285,7 +286,9 @@ class F4mFD(FragmentFD):
 | 
			
		|||
        man_url = info_dict['url']
 | 
			
		||||
        requested_bitrate = info_dict.get('tbr')
 | 
			
		||||
        self.to_screen('[%s] Downloading f4m manifest' % self.FD_NAME)
 | 
			
		||||
        manifest = self.ydl.urlopen(man_url).read()
 | 
			
		||||
        urlh = self.ydl.urlopen(man_url)
 | 
			
		||||
        man_url = urlh.geturl()
 | 
			
		||||
        manifest = urlh.read()
 | 
			
		||||
 | 
			
		||||
        doc = etree.fromstring(manifest)
 | 
			
		||||
        formats = [(int(f.attrib.get('bitrate', -1)), f)
 | 
			
		||||
| 
						 | 
				
			
			@ -329,20 +332,22 @@ class F4mFD(FragmentFD):
 | 
			
		|||
        if not live:
 | 
			
		||||
            write_metadata_tag(dest_stream, metadata)
 | 
			
		||||
 | 
			
		||||
        base_url_parsed = compat_urllib_parse_urlparse(base_url)
 | 
			
		||||
 | 
			
		||||
        self._start_frag_download(ctx)
 | 
			
		||||
 | 
			
		||||
        frags_filenames = []
 | 
			
		||||
        while fragments_list:
 | 
			
		||||
            seg_i, frag_i = fragments_list.pop(0)
 | 
			
		||||
            name = 'Seg%d-Frag%d' % (seg_i, frag_i)
 | 
			
		||||
            url = base_url + name
 | 
			
		||||
            url_parsed = base_url_parsed._replace(path=base_url_parsed.path + name)
 | 
			
		||||
            if akamai_pv:
 | 
			
		||||
                url += '?' + akamai_pv.strip(';')
 | 
			
		||||
                url_parsed = url_parsed._replace(query=url_parsed.query + akamai_pv.strip(';'))
 | 
			
		||||
            if info_dict.get('extra_param_to_segment_url'):
 | 
			
		||||
                url += info_dict.get('extra_param_to_segment_url')
 | 
			
		||||
                url_parsed = url_parsed._replace(query=url_parsed.query + info_dict.get('extra_param_to_segment_url'))
 | 
			
		||||
            frag_filename = '%s-%s' % (ctx['tmpfilename'], name)
 | 
			
		||||
            try:
 | 
			
		||||
                success = ctx['dl'].download(frag_filename, {'url': url})
 | 
			
		||||
                success = ctx['dl'].download(frag_filename, {'url': url_parsed.geturl()})
 | 
			
		||||
                if not success:
 | 
			
		||||
                    return False
 | 
			
		||||
                (down, frag_sanitized) = sanitize_open(frag_filename, 'rb')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue