|
@@ -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)
|
|
|
|