diff options
| author | Sergey M․ <dstftw@gmail.com> | 2018-01-11 23:06:56 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2018-01-11 23:06:56 +0700 | 
| commit | 64287560e4a7af9401e84318d9d04783c1b289af (patch) | |
| tree | dccc30dc8df62a2ca17af31a5b8cf1ac8efe8775 | |
| parent | 37941fe204ef855590af64584b75d7fc95997fc6 (diff) | |
[pandoratv] Add support for new URL format (closes #15131)
| -rw-r--r-- | youtube_dl/extractor/pandoratv.py | 28 | 
1 files changed, 22 insertions, 6 deletions
diff --git a/youtube_dl/extractor/pandoratv.py b/youtube_dl/extractor/pandoratv.py index fc7bd3411..0c27a61d7 100644 --- a/youtube_dl/extractor/pandoratv.py +++ b/youtube_dl/extractor/pandoratv.py @@ -1,6 +1,8 @@  # coding: utf-8  from __future__ import unicode_literals +import re +  from .common import InfoExtractor  from ..compat import (      compat_str, @@ -18,7 +20,13 @@ from ..utils import (  class PandoraTVIE(InfoExtractor):      IE_NAME = 'pandora.tv'      IE_DESC = '판도라TV' -    _VALID_URL = r'https?://(?:.+?\.)?channel\.pandora\.tv/channel/video\.ptv\?' +    _VALID_URL = r'''(?x) +                        https?:// +                            (?: +                                (?:www\.)?pandora\.tv/view/(?P<user_id>[^/]+)/(?P<id>\d+)|  # new format +                                (?:.+?\.)?channel\.pandora\.tv/channel/video\.ptv\?         # old format +                            ) +                    '''      _TESTS = [{          'url': 'http://jp.channel.pandora.tv/channel/video.ptv?c1=&prgid=53294230&ch_userid=mikakim&ref=main&lot=cate_01_2',          'info_dict': { @@ -53,14 +61,22 @@ class PandoraTVIE(InfoExtractor):              # Test metadata only              'skip_download': True,          }, +    }, { +        'url': 'http://www.pandora.tv/view/mikakim/53294230#36797454_new', +        'only_matching': True,      }]      def _real_extract(self, url): -        qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) -        video_id = qs.get('prgid', [None])[0] -        user_id = qs.get('ch_userid', [None])[0] -        if any(not f for f in (video_id, user_id,)): -            raise ExtractorError('Invalid URL', expected=True) +        mobj = re.match(self._VALID_URL, url) +        user_id = mobj.group('user_id') +        video_id = mobj.group('id') + +        if not user_id or not video_id: +            qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) +            video_id = qs.get('prgid', [None])[0] +            user_id = qs.get('ch_userid', [None])[0] +            if any(not f for f in (video_id, user_id,)): +                raise ExtractorError('Invalid URL', expected=True)          data = self._download_json(              'http://m.pandora.tv/?c=view&m=viewJsonApi&ch_userid=%s&prgid=%s'  | 
