mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-03 19:27:08 -05:00 
			
		
		
		
	[downloader/hls] Ignore anvato ad fragments (closes #14496)
This commit is contained in:
		@@ -75,15 +75,29 @@ class HlsFD(FragmentFD):
 | 
			
		||||
                fd.add_progress_hook(ph)
 | 
			
		||||
            return fd.real_download(filename, info_dict)
 | 
			
		||||
 | 
			
		||||
        total_frags = 0
 | 
			
		||||
        def anvato_ad(s):
 | 
			
		||||
            return s.startswith('#ANVATO-SEGMENT-INFO') and 'type=ad' in s
 | 
			
		||||
 | 
			
		||||
        media_frags = 0
 | 
			
		||||
        ad_frags = 0
 | 
			
		||||
        ad_frag_next = False
 | 
			
		||||
        for line in s.splitlines():
 | 
			
		||||
            line = line.strip()
 | 
			
		||||
            if line and not line.startswith('#'):
 | 
			
		||||
                total_frags += 1
 | 
			
		||||
            if not line:
 | 
			
		||||
                continue
 | 
			
		||||
            if line.startswith('#'):
 | 
			
		||||
                if anvato_ad(line):
 | 
			
		||||
                    ad_frags += 1
 | 
			
		||||
                continue
 | 
			
		||||
            if ad_frag_next:
 | 
			
		||||
                ad_frag_next = False
 | 
			
		||||
                continue
 | 
			
		||||
            media_frags += 1
 | 
			
		||||
 | 
			
		||||
        ctx = {
 | 
			
		||||
            'filename': filename,
 | 
			
		||||
            'total_frags': total_frags,
 | 
			
		||||
            'total_frags': media_frags,
 | 
			
		||||
            'ad_frags': ad_frags,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        self._prepare_and_start_frag_download(ctx)
 | 
			
		||||
@@ -101,10 +115,14 @@ class HlsFD(FragmentFD):
 | 
			
		||||
        decrypt_info = {'METHOD': 'NONE'}
 | 
			
		||||
        byte_range = {}
 | 
			
		||||
        frag_index = 0
 | 
			
		||||
        ad_frag_next = False
 | 
			
		||||
        for line in s.splitlines():
 | 
			
		||||
            line = line.strip()
 | 
			
		||||
            if line:
 | 
			
		||||
                if not line.startswith('#'):
 | 
			
		||||
                    if ad_frag_next:
 | 
			
		||||
                        ad_frag_next = False
 | 
			
		||||
                        continue
 | 
			
		||||
                    frag_index += 1
 | 
			
		||||
                    if frag_index <= ctx['fragment_index']:
 | 
			
		||||
                        continue
 | 
			
		||||
@@ -175,6 +193,8 @@ class HlsFD(FragmentFD):
 | 
			
		||||
                        'start': sub_range_start,
 | 
			
		||||
                        'end': sub_range_start + int(splitted_byte_range[0]),
 | 
			
		||||
                    }
 | 
			
		||||
                elif anvato_ad(line):
 | 
			
		||||
                    ad_frag_next = True
 | 
			
		||||
 | 
			
		||||
        self._finish_frag_download(ctx)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user