|
@ -273,15 +273,21 @@ class F4mFD(FragmentFD): |
|
|
return fragments_list |
|
|
return fragments_list |
|
|
|
|
|
|
|
|
def _parse_bootstrap_node(self, node, base_url): |
|
|
def _parse_bootstrap_node(self, node, base_url): |
|
|
if node.text is None: |
|
|
|
|
|
|
|
|
# Sometimes non empty inline bootstrap info can be specified along |
|
|
|
|
|
# with bootstrap url attribute (e.g. dummy inline bootstrap info |
|
|
|
|
|
# contains whitespace characters in [1]). We will prefer bootstrap |
|
|
|
|
|
# url over inline bootstrap info when present. |
|
|
|
|
|
# 1. http://live-1-1.rutube.ru/stream/1024/HDS/SD/C2NKsS85HQNckgn5HdEmOQ/1454167650/S-s604419906/move/four/dirs/upper/1024-576p.f4m |
|
|
|
|
|
bootstrap_url = node.get('url') |
|
|
|
|
|
if bootstrap_url: |
|
|
bootstrap_url = compat_urlparse.urljoin( |
|
|
bootstrap_url = compat_urlparse.urljoin( |
|
|
base_url, node.attrib['url']) |
|
|
|
|
|
|
|
|
base_url, bootstrap_url) |
|
|
boot_info = self._get_bootstrap_from_url(bootstrap_url) |
|
|
boot_info = self._get_bootstrap_from_url(bootstrap_url) |
|
|
else: |
|
|
else: |
|
|
bootstrap_url = None |
|
|
bootstrap_url = None |
|
|
bootstrap = base64.b64decode(node.text.encode('ascii')) |
|
|
bootstrap = base64.b64decode(node.text.encode('ascii')) |
|
|
boot_info = read_bootstrap_info(bootstrap) |
|
|
boot_info = read_bootstrap_info(bootstrap) |
|
|
return (boot_info, bootstrap_url) |
|
|
|
|
|
|
|
|
return boot_info, bootstrap_url |
|
|
|
|
|
|
|
|
def real_download(self, filename, info_dict): |
|
|
def real_download(self, filename, info_dict): |
|
|
man_url = info_dict['url'] |
|
|
man_url = info_dict['url'] |
|
|