[downloader/hls] Ignore anvato ad fragments (closes #14496)
This commit is contained in:
		
							parent
							
								
									5efaf43c93
								
							
						
					
					
						commit
						74c42d9ec3
					
				
					 1 changed files with 24 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue