mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[downloader/dash] Support range in fragment (format f'{start}-{end}')
				
					
				
			* adapted from https://github.com/ytdl-org/youtube-dl/pull/30279 * thx former GH user kikuyan
This commit is contained in:
		| @@ -35,6 +35,7 @@ class DashSegmentsFD(FragmentFD): | |||||||
|         for frag_index, fragment in enumerate(fragments, 1): |         for frag_index, fragment in enumerate(fragments, 1): | ||||||
|             if frag_index <= ctx['fragment_index']: |             if frag_index <= ctx['fragment_index']: | ||||||
|                 continue |                 continue | ||||||
|  |             success = False | ||||||
|             # In DASH, the first segment contains necessary headers to |             # In DASH, the first segment contains necessary headers to | ||||||
|             # generate a valid MP4 file, so always abort for the first segment |             # generate a valid MP4 file, so always abort for the first segment | ||||||
|             fatal = frag_index == 1 or not skip_unavailable_fragments |             fatal = frag_index == 1 or not skip_unavailable_fragments | ||||||
| @@ -42,10 +43,14 @@ class DashSegmentsFD(FragmentFD): | |||||||
|             if not fragment_url: |             if not fragment_url: | ||||||
|                 assert fragment_base_url |                 assert fragment_base_url | ||||||
|                 fragment_url = urljoin(fragment_base_url, fragment['path']) |                 fragment_url = urljoin(fragment_base_url, fragment['path']) | ||||||
|             success = False |             headers = info_dict.get('http_headers') | ||||||
|  |             fragment_range = fragment.get('range') | ||||||
|  |             if fragment_range: | ||||||
|  |                 headers = headers.copy() if headers else {} | ||||||
|  |                 headers['Range'] = 'bytes=%s' % (fragment_range,) | ||||||
|             for count in itertools.count(): |             for count in itertools.count(): | ||||||
|                 try: |                 try: | ||||||
|                     success, frag_content = self._download_fragment(ctx, fragment_url, info_dict) |                     success, frag_content = self._download_fragment(ctx, fragment_url, info_dict, headers) | ||||||
|                     if not success: |                     if not success: | ||||||
|                         return False |                         return False | ||||||
|                     self._append_fragment(ctx, frag_content) |                     self._append_fragment(ctx, frag_content) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user