[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)
 | 
					                fd.add_progress_hook(ph)
 | 
				
			||||||
            return fd.real_download(filename, info_dict)
 | 
					            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():
 | 
					        for line in s.splitlines():
 | 
				
			||||||
            line = line.strip()
 | 
					            line = line.strip()
 | 
				
			||||||
            if line and not line.startswith('#'):
 | 
					            if not line:
 | 
				
			||||||
                total_frags += 1
 | 
					                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 = {
 | 
					        ctx = {
 | 
				
			||||||
            'filename': filename,
 | 
					            'filename': filename,
 | 
				
			||||||
            'total_frags': total_frags,
 | 
					            'total_frags': media_frags,
 | 
				
			||||||
 | 
					            'ad_frags': ad_frags,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._prepare_and_start_frag_download(ctx)
 | 
					        self._prepare_and_start_frag_download(ctx)
 | 
				
			||||||
| 
						 | 
					@ -101,10 +115,14 @@ class HlsFD(FragmentFD):
 | 
				
			||||||
        decrypt_info = {'METHOD': 'NONE'}
 | 
					        decrypt_info = {'METHOD': 'NONE'}
 | 
				
			||||||
        byte_range = {}
 | 
					        byte_range = {}
 | 
				
			||||||
        frag_index = 0
 | 
					        frag_index = 0
 | 
				
			||||||
 | 
					        ad_frag_next = False
 | 
				
			||||||
        for line in s.splitlines():
 | 
					        for line in s.splitlines():
 | 
				
			||||||
            line = line.strip()
 | 
					            line = line.strip()
 | 
				
			||||||
            if line:
 | 
					            if line:
 | 
				
			||||||
                if not line.startswith('#'):
 | 
					                if not line.startswith('#'):
 | 
				
			||||||
 | 
					                    if ad_frag_next:
 | 
				
			||||||
 | 
					                        ad_frag_next = False
 | 
				
			||||||
 | 
					                        continue
 | 
				
			||||||
                    frag_index += 1
 | 
					                    frag_index += 1
 | 
				
			||||||
                    if frag_index <= ctx['fragment_index']:
 | 
					                    if frag_index <= ctx['fragment_index']:
 | 
				
			||||||
                        continue
 | 
					                        continue
 | 
				
			||||||
| 
						 | 
					@ -175,6 +193,8 @@ class HlsFD(FragmentFD):
 | 
				
			||||||
                        'start': sub_range_start,
 | 
					                        'start': sub_range_start,
 | 
				
			||||||
                        'end': sub_range_start + int(splitted_byte_range[0]),
 | 
					                        'end': sub_range_start + int(splitted_byte_range[0]),
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                elif anvato_ad(line):
 | 
				
			||||||
 | 
					                    ad_frag_next = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._finish_frag_download(ctx)
 | 
					        self._finish_frag_download(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue