|
|
|
@ -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'
|
|
|
|
|