diff options
| -rw-r--r-- | youtube_dl/extractor/mediaset.py | 44 | 
1 files changed, 24 insertions, 20 deletions
| diff --git a/youtube_dl/extractor/mediaset.py b/youtube_dl/extractor/mediaset.py index 76a2ae125..9f2b60dcc 100644 --- a/youtube_dl/extractor/mediaset.py +++ b/youtube_dl/extractor/mediaset.py @@ -10,7 +10,6 @@ from ..utils import (      parse_duration,      try_get,      unified_strdate, -    ExtractorError  ) @@ -58,7 +57,7 @@ class MediasetIE(InfoExtractor):              'series': 'Matrix',              'categories': ['infotainment'],          }, -        'expected_warnings': ['is not a supported codec'], +        'expected_warnings': ['HTTP Error 403: Forbidden'],      }, {          # clip          'url': 'http://www.video.mediaset.it/video/gogglebox/clip/un-grande-classico-della-commedia-sexy_661680.html', @@ -87,13 +86,14 @@ class MediasetIE(InfoExtractor):      def _real_extract(self, url):          video_id = self._match_id(url) -        media_info = self._download_json( +        video = self._download_json(              'https://www.video.mediaset.it/html/metainfo.sjson',              video_id, 'Downloading media info', query={                  'id': video_id              })['video'] -        media_id = try_get(media_info, lambda x: x['guid']) or video_id +        title = video['title'] +        media_id = video.get('guid') or video_id          video_list = self._download_json(              'http://cdnsel01.mediaset.net/GetCdn2018.aspx', @@ -104,12 +104,17 @@ class MediasetIE(InfoExtractor):          formats = []          for format_url in video_list: -            if '.ism' in format_url: -                try: -                    formats.extend(self._extract_ism_formats( -                        format_url, video_id, ism_id='mss', fatal=False)) -                except ExtractorError: -                    pass +            ext = determine_ext(format_url) +            if ext == 'm3u8': +                formats.extend(self._extract_m3u8_formats( +                    format_url, video_id, 'mp4', entry_protocol='m3u8_native', +                    m3u8_id='hls', fatal=False)) +            elif ext == 'mpd': +                formats.extend(self._extract_mpd_formats( +                    format_url, video_id, mpd_id='dash', fatal=False)) +            elif ext == 'ism' or '.ism' in format_url: +                formats.extend(self._extract_ism_formats( +                    format_url, video_id, ism_id='mss', fatal=False))              else:                  formats.append({                      'url': format_url, @@ -117,24 +122,23 @@ class MediasetIE(InfoExtractor):                  })          self._sort_formats(formats) -        title = media_info['title'] -          creator = try_get( -            media_info, lambda x: x['brand-info']['publisher'], compat_str) +            video, lambda x: x['brand-info']['publisher'], compat_str)          category = try_get( -            media_info, lambda x: x['brand-info']['category'], compat_str) +            video, lambda x: x['brand-info']['category'], compat_str)          categories = [category] if category else None          return {              'id': video_id,              'title': title, -            'description': media_info.get('short-description'), -            'thumbnail': media_info.get('thumbnail'), -            'duration': parse_duration(media_info.get('duration')), +            'description': video.get('short-description'), +            'thumbnail': video.get('thumbnail'), +            'duration': parse_duration(video.get('duration')),              'creator': creator, -            'upload_date': unified_strdate(media_info.get('production-date')), -            'webpage_url': media_info.get('url'), -            'series': media_info.get('brand-value'), +            'upload_date': unified_strdate(video.get('production-date')), +            'webpage_url': video.get('url'), +            'series': video.get('brand-value'), +            'season': video.get('season'),              'categories': categories,              'formats': formats,          } | 
