diff options
Diffstat (limited to 'youtube_dl/extractor/dramafever.py')
| -rw-r--r-- | youtube_dl/extractor/dramafever.py | 50 | 
1 files changed, 40 insertions, 10 deletions
| diff --git a/youtube_dl/extractor/dramafever.py b/youtube_dl/extractor/dramafever.py index b3b21d65f..d35e88881 100644 --- a/youtube_dl/extractor/dramafever.py +++ b/youtube_dl/extractor/dramafever.py @@ -12,6 +12,7 @@ from ..compat import (  from ..utils import (      ExtractorError,      clean_html, +    int_or_none,      sanitized_Request,  ) @@ -66,13 +67,15 @@ class DramaFeverBaseIE(AMPIE):  class DramaFeverIE(DramaFeverBaseIE):      IE_NAME = 'dramafever'      _VALID_URL = r'https?://(?:www\.)?dramafever\.com/drama/(?P<id>[0-9]+/[0-9]+)(?:/|$)' -    _TEST = { +    _TESTS = [{          'url': 'http://www.dramafever.com/drama/4512/1/Cooking_with_Shin/',          'info_dict': {              'id': '4512.1', -            'ext': 'flv', +            'ext': 'mp4',              'title': 'Cooking with Shin 4512.1',              'description': 'md5:a8eec7942e1664a6896fcd5e1287bfd0', +            'episode': 'Episode 1', +            'episode_number': 1,              'thumbnail': 're:^https?://.*\.jpg',              'timestamp': 1404336058,              'upload_date': '20140702', @@ -82,7 +85,25 @@ class DramaFeverIE(DramaFeverBaseIE):              # m3u8 download              'skip_download': True,          }, -    } +    }, { +        'url': 'http://www.dramafever.com/drama/4826/4/Mnet_Asian_Music_Awards_2015/?ap=1', +        'info_dict': { +            'id': '4826.4', +            'ext': 'mp4', +            'title': 'Mnet Asian Music Awards 2015 4826.4', +            'description': 'md5:3ff2ee8fedaef86e076791c909cf2e91', +            'episode': 'Mnet Asian Music Awards 2015 - Part 3', +            'episode_number': 4, +            'thumbnail': 're:^https?://.*\.jpg', +            'timestamp': 1450213200, +            'upload_date': '20151215', +            'duration': 5602, +        }, +        'params': { +            # m3u8 download +            'skip_download': True, +        }, +    }]      def _real_extract(self, url):          video_id = self._match_id(url).replace('/', '.') @@ -105,13 +126,22 @@ class DramaFeverIE(DramaFeverBaseIE):              video_id, 'Downloading episode info JSON', fatal=False)          if episode_info:              value = episode_info.get('value') -            if value: -                subfile = value[0].get('subfile') or value[0].get('new_subfile') -                if subfile and subfile != 'http://www.dramafever.com/st/': -                    info.setdefault('subtitles', {}).setdefault('English', []).append({ -                        'ext': 'srt', -                        'url': subfile, -                    }) +            if isinstance(value, list): +                for v in value: +                    if v.get('type') == 'Episode': +                        subfile = v.get('subfile') or v.get('new_subfile') +                        if subfile and subfile != 'http://www.dramafever.com/st/': +                            info.setdefault('subtitles', {}).setdefault('English', []).append({ +                                'ext': 'srt', +                                'url': subfile, +                            }) +                        episode_number = int_or_none(v.get('number')) +                        episode_fallback = 'Episode' +                        if episode_number: +                            episode_fallback += ' %d' % episode_number +                        info['episode'] = v.get('title') or episode_fallback +                        info['episode_number'] = episode_number +                        break          return info | 
