diff options
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 5 | ||||
| -rw-r--r-- | youtube_dl/extractor/hungama.py | 78 | 
2 files changed, 74 insertions, 9 deletions
| diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 5ff34216f..ddeb70284 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -469,7 +469,10 @@ from .hrti import (  )  from .huajiao import HuajiaoIE  from .huffpost import HuffPostIE -from .hungama import HungamaIE +from .hungama import ( +    HungamaIE, +    HungamaSongIE, +)  from .hypem import HypemIE  from .iconosquare import IconosquareIE  from .ign import ( diff --git a/youtube_dl/extractor/hungama.py b/youtube_dl/extractor/hungama.py index d9ad1281a..3fdaac5b6 100644 --- a/youtube_dl/extractor/hungama.py +++ b/youtube_dl/extractor/hungama.py @@ -2,11 +2,73 @@  from __future__ import unicode_literals  from .common import InfoExtractor -from ..utils import int_or_none +from ..utils import ( +    int_or_none, +    urlencode_postdata, +)  class HungamaIE(InfoExtractor): -    _VALID_URL = r'https?://(?:www\.)?hungama\.com/song/[^/]+/(?P<id>[0-9]+)' +    _VALID_URL = r'''(?x) +                    https?:// +                        (?:www\.)?hungama\.com/ +                        (?: +                            (?:video|movie)/[^/]+/| +                            tv-show/(?:[^/]+/){2}\d+/episode/[^/]+/ +                        ) +                        (?P<id>\d+) +                    ''' +    _TESTS = [{ +        'url': 'http://www.hungama.com/video/krishna-chants/39349649/', +        'md5': 'a845a6d1ebd08d80c1035126d49bd6a0', +        'info_dict': { +            'id': '2931166', +            'ext': 'mp4', +            'title': 'Lucky Ali - Kitni Haseen Zindagi', +            'track': 'Kitni Haseen Zindagi', +            'artist': 'Lucky Ali', +            'album': 'Aks', +            'release_year': 2000, +        } +    }, { +        'url': 'https://www.hungama.com/movie/kahaani-2/44129919/', +        'only_matching': True, +    }, { +        'url': 'https://www.hungama.com/tv-show/padded-ki-pushup/season-1/44139461/episode/ep-02-training-sasu-pathlaag-karing/44139503/', +        'only_matching': True, +    }] + +    def _real_extract(self, url): +        video_id = self._match_id(url) + +        webpage = self._download_webpage(url, video_id) + +        info = self._search_json_ld(webpage, video_id) + +        m3u8_url = self._download_json( +            'https://www.hungama.com/index.php', video_id, +            data=urlencode_postdata({'content_id': video_id}), headers={ +                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', +                'X-Requested-With': 'XMLHttpRequest', +            }, query={ +                'c': 'common', +                'm': 'get_video_mdn_url', +            })['stream_url'] + +        formats = self._extract_m3u8_formats( +            m3u8_url, video_id, ext='mp4', entry_protocol='m3u8_native', +            m3u8_id='hls') +        self._sort_formats(formats) + +        info.update({ +            'id': video_id, +            'formats': formats, +        }) +        return info + + +class HungamaSongIE(InfoExtractor): +    _VALID_URL = r'https?://(?:www\.)?hungama\.com/song/[^/]+/(?P<id>\d+)'      _TEST = {          'url': 'https://www.hungama.com/song/kitni-haseen-zindagi/2931166/',          'md5': 'a845a6d1ebd08d80c1035126d49bd6a0', @@ -22,21 +84,21 @@ class HungamaIE(InfoExtractor):      }      def _real_extract(self, url): -        video_id = self._match_id(url) +        audio_id = self._match_id(url)          data = self._download_json( -            'https://www.hungama.com/audio-player-data/track/%s' % video_id, -            video_id, query={'_country': 'IN'})[0] +            'https://www.hungama.com/audio-player-data/track/%s' % audio_id, +            audio_id, query={'_country': 'IN'})[0]          track = data['song_name']          artist = data.get('singer_name')          m3u8_url = self._download_json(              data.get('file') or data['preview_link'], -            video_id)['response']['media_url'] +            audio_id)['response']['media_url']          formats = self._extract_m3u8_formats( -            m3u8_url, video_id, ext='mp4', entry_protocol='m3u8_native', +            m3u8_url, audio_id, ext='mp4', entry_protocol='m3u8_native',              m3u8_id='hls')          self._sort_formats(formats) @@ -44,7 +106,7 @@ class HungamaIE(InfoExtractor):          thumbnail = data.get('img_src') or data.get('album_image')          return { -            'id': video_id, +            'id': audio_id,              'title': title,              'thumbnail': thumbnail,              'track': track, | 
