[YoutubeDL] Change how DashSegmentsFD is selected
authorYen Chi Hsuan <yan12125@gmail.com>
Thu, 4 Jun 2015 14:05:33 +0000 (22:05 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Thu, 4 Jun 2015 14:05:33 +0000 (22:05 +0800)
youtube_dl/downloader/__init__.py
youtube_dl/downloader/http.py
youtube_dl/extractor/youtube.py

index f110830c472eb451d77b48fa9337bd5feee55952..1b618ab54ae17ace63f60f9df173837a5e5a9171 100644 (file)
@@ -8,6 +8,7 @@ from .hls import NativeHlsFD
 from .http import HttpFD
 from .rtsp import RtspFD
 from .rtmp import RtmpFD
+from .dash import DashSegmentsFD
 
 from ..utils import (
     determine_protocol,
@@ -20,6 +21,7 @@ PROTOCOL_MAP = {
     'mms': RtspFD,
     'rtsp': RtspFD,
     'f4m': F4mFD,
+    'dash_segments': DashSegmentsFD,
 }
 
 
index ceacb8522b79ec4e4d3fbef83e242ed457be4a7c..b7f144af9ea33a102246632e04e71707be3d98ad 100644 (file)
@@ -6,7 +6,6 @@ import socket
 import time
 
 from .common import FileDownloader
-from .dash import DashSegmentsFD
 from ..compat import (
     compat_urllib_request,
     compat_urllib_error,
@@ -20,9 +19,6 @@ from ..utils import (
 
 class HttpFD(FileDownloader):
     def real_download(self, filename, info_dict):
-        if info_dict.get('initialization_url') and list(filter(None, info_dict.get('segment_urls', []))):
-            return DashSegmentsFD(self.ydl, self.params).real_download(filename, info_dict)
-
         url = info_dict['url']
         tmpfilename = self.temp_name(filename)
         stream = None
index 5d1297e0d27260dd1e0f389d5add17061fad0644..692d4d8db2f6f48feea2ea6b2f10bdf5949bf122 100644 (file)
@@ -819,7 +819,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                     if segment_list:
                         f.update({
                             'initialization_url': segment_list.find('{urn:mpeg:DASH:schema:MPD:2011}Initialization').attrib['sourceURL'],
-                            'segment_urls': [segment.attrib.get('media') for segment in segment_list.findall('{urn:mpeg:DASH:schema:MPD:2011}SegmentURL')]
+                            'segment_urls': [segment.attrib.get('media') for segment in segment_list.findall('{urn:mpeg:DASH:schema:MPD:2011}SegmentURL')],
+                            'protocol': 'dash_segments',
                         })
                     try:
                         existing_format = next(