mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[downloader/f4m] get the redirected f4m_url and handle url query string properly
This commit is contained in:
		| @@ -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') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 remitamine
					remitamine