diff options
Diffstat (limited to 'youtube_dl/downloader/hls.py')
| -rw-r--r-- | youtube_dl/downloader/hls.py | 28 | 
1 files changed, 24 insertions, 4 deletions
diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 46308cf07..7955ca510 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -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)  | 
