Sergey M․
7 years ago
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
1 changed files with
24 additions and
4 deletions
-
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) |
|
|
|
|
|
|
|