|
@ -9,27 +9,26 @@ from .rtmp import RtmpFD |
|
|
from .f4m import F4mFD |
|
|
from .f4m import F4mFD |
|
|
|
|
|
|
|
|
from ..utils import ( |
|
|
from ..utils import ( |
|
|
determine_ext, |
|
|
|
|
|
|
|
|
determine_protocol, |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
PROTOCOL_MAP = { |
|
|
|
|
|
'rtmp': RtmpFD, |
|
|
|
|
|
'm3u8_native': NativeHlsFD, |
|
|
|
|
|
'm3u8': HlsFD, |
|
|
|
|
|
'mms': MplayerFD, |
|
|
|
|
|
'rtsp': MplayerFD, |
|
|
|
|
|
'f4m': F4mFD, |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
def get_suitable_downloader(info_dict): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_suitable_downloader(info_dict, params={}): |
|
|
"""Get the downloader class that can handle the info dict.""" |
|
|
"""Get the downloader class that can handle the info dict.""" |
|
|
url = info_dict['url'] |
|
|
|
|
|
protocol = info_dict.get('protocol') |
|
|
|
|
|
|
|
|
|
|
|
if url.startswith('rtmp'): |
|
|
|
|
|
return RtmpFD |
|
|
|
|
|
if protocol == 'm3u8_native': |
|
|
|
|
|
return NativeHlsFD |
|
|
|
|
|
if (protocol == 'm3u8') or (protocol is None and determine_ext(url) == 'm3u8'): |
|
|
|
|
|
return HlsFD |
|
|
|
|
|
if url.startswith('mms') or url.startswith('rtsp'): |
|
|
|
|
|
return MplayerFD |
|
|
|
|
|
if determine_ext(url) == 'f4m': |
|
|
|
|
|
return F4mFD |
|
|
|
|
|
else: |
|
|
|
|
|
return HttpFD |
|
|
|
|
|
|
|
|
protocol = determine_protocol(info_dict) |
|
|
|
|
|
info_dict['protocol'] = protocol |
|
|
|
|
|
|
|
|
|
|
|
return PROTOCOL_MAP.get(protocol, HttpFD) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__all__ = [ |
|
|
__all__ = [ |
|
|
'get_suitable_downloader', |
|
|
'get_suitable_downloader', |
|
|