Merge remote-tracking branch 'Dineshs91/f4m-2.0'
[youtube-dl] / youtube_dl / downloader / __init__.py
index 0d9eb0001e774bdf75ccdf31c636947dfeecd330..31e28df58e828f8c5434390ff18a63358215924a 100644 (file)
@@ -1,8 +1,12 @@
+from __future__ import unicode_literals
+
 from .common import FileDownloader
 from .hls import HlsFD
+from .hls import NativeHlsFD
 from .http import HttpFD
 from .mplayer import MplayerFD
 from .rtmp import RtmpFD
+from .f4m import F4mFD
 
 from ..utils import (
     determine_ext,
@@ -12,12 +16,22 @@ from ..utils import (
 def get_suitable_downloader(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 determine_ext(url) == u'm3u8':
+    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
+
+__all__ = [
+    'get_suitable_downloader',
+    'FileDownloader',
+]