diff options
| author | Yen Chi Hsuan <yan12125@gmail.com> | 2016-01-30 22:52:23 +0800 | 
|---|---|---|
| committer | Yen Chi Hsuan <yan12125@gmail.com> | 2016-01-30 22:52:23 +0800 | 
| commit | 2d2fa82d172a10a49fb5449fa35bc409de778f05 (patch) | |
| tree | 3626756895331c3ae8ca71505a2ab07d437d873b | |
| parent | c94678957fbe4483b2b7c8b3e6824cb7a215d42d (diff) | |
[common] Add _extract_dash_manifest_formats
| -rw-r--r-- | youtube_dl/extractor/common.py | 15 | ||||
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 12 | 
2 files changed, 19 insertions, 8 deletions
| diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 5a2b7a721..199a04d1c 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -1330,6 +1330,21 @@ class InfoExtractor(object):              })          return entries +    def _download_dash_manifest(self, dash_manifest_url, video_id, fatal=True): +        return self._download_xml( +            dash_manifest_url, video_id, +            note='Downloading DASH manifest', +            errnote='Could not download DASH manifest', +            fatal=fatal) + +    def _extract_dash_manifest_formats(self, dash_manifest_url, video_id, fatal=True, namespace=None, formats_dict={}): +        dash_doc = self._download_dash_manifest(dash_manifest_url, video_id, fatal) +        if dash_doc is False: +            return [] + +        return self._parse_dash_manifest( +            dash_doc, namespace=namespace, formats_dict=formats_dict) +      def _parse_dash_manifest(self, dash_doc, namespace=None, formats_dict={}):          def _add_ns(path):              return self._xpath_ns(path, namespace) diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index a2f776050..d6fef39e9 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -1472,14 +1472,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor):                          return '/signature/%s' % dec_s                      dash_manifest_url = re.sub(r'/s/([a-fA-F0-9\.]+)', decrypt_sig, dash_manifest_url) -                    dash_doc = self._download_xml( -                        dash_manifest_url, video_id, -                        note='Downloading DASH manifest', -                        errnote='Could not download DASH manifest', -                        fatal=dash_mpd_fatal) - -                    for df in self._parse_dash_manifest( -                            dash_doc, namespace='urn:mpeg:DASH:schema:MPD:2011', formats_dict=self._formats): + +                    for df in self._extract_dash_manifest_formats( +                            dash_manifest_url, video_id, fatal=dash_mpd_fatal, +                            namespace='urn:mpeg:DASH:schema:MPD:2011', formats_dict=self._formats):                          # Do not overwrite DASH format found in some previous DASH manifest                          if df['format_id'] not in dash_formats:                              dash_formats[df['format_id']] = df | 
