Browse Source

[YoutubeDL] Change how DashSegmentsFD is selected

master
Yen Chi Hsuan 9 years ago
parent
commit
b9258c6178
3 changed files with 4 additions and 5 deletions
  1. 2
      youtube_dl/downloader/__init__.py
  2. 4
      youtube_dl/downloader/http.py
  3. 3
      youtube_dl/extractor/youtube.py

2
youtube_dl/downloader/__init__.py

@ -8,6 +8,7 @@ from .hls import NativeHlsFD
from .http import HttpFD from .http import HttpFD
from .rtsp import RtspFD from .rtsp import RtspFD
from .rtmp import RtmpFD from .rtmp import RtmpFD
from .dash import DashSegmentsFD
from ..utils import ( from ..utils import (
determine_protocol, determine_protocol,
@ -20,6 +21,7 @@ PROTOCOL_MAP = {
'mms': RtspFD, 'mms': RtspFD,
'rtsp': RtspFD, 'rtsp': RtspFD,
'f4m': F4mFD, 'f4m': F4mFD,
'dash_segments': DashSegmentsFD,
} }

4
youtube_dl/downloader/http.py

@ -6,7 +6,6 @@ import socket
import time import time
from .common import FileDownloader from .common import FileDownloader
from .dash import DashSegmentsFD
from ..compat import ( from ..compat import (
compat_urllib_request, compat_urllib_request,
compat_urllib_error, compat_urllib_error,
@ -20,9 +19,6 @@ from ..utils import (
class HttpFD(FileDownloader): class HttpFD(FileDownloader):
def real_download(self, filename, info_dict): 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'] url = info_dict['url']
tmpfilename = self.temp_name(filename) tmpfilename = self.temp_name(filename)
stream = None stream = None

3
youtube_dl/extractor/youtube.py

@ -819,7 +819,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
if segment_list: if segment_list:
f.update({ f.update({
'initialization_url': segment_list.find('{urn:mpeg:DASH:schema:MPD:2011}Initialization').attrib['sourceURL'], '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: try:
existing_format = next( existing_format = next(

Loading…
Cancel
Save