|
|
|
@ -5,12 +5,14 @@ from .common import InfoExtractor
|
|
|
|
|
from ..compat import (
|
|
|
|
|
compat_str,
|
|
|
|
|
compat_urlparse,
|
|
|
|
|
compat_urllib_request,
|
|
|
|
|
)
|
|
|
|
|
from ..utils import (
|
|
|
|
|
ExtractorError,
|
|
|
|
|
float_or_none,
|
|
|
|
|
parse_duration,
|
|
|
|
|
str_to_int,
|
|
|
|
|
urlencode_postdata,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -56,6 +58,18 @@ class PandoraTVIE(InfoExtractor):
|
|
|
|
|
r'^v(\d+)[Uu]rl$', format_id, 'height', default=None)
|
|
|
|
|
if not height:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
post_data = {'prgid': video_id, 'runtime': info.get('runtime'), 'vod_url': format_url}
|
|
|
|
|
play_url = self._download_json('http://m.pandora.tv/?c=api&m=play_url', video_id,
|
|
|
|
|
data=urlencode_postdata(post_data),
|
|
|
|
|
headers={
|
|
|
|
|
'Origin': url,
|
|
|
|
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
|
|
|
})
|
|
|
|
|
format_url = play_url.get('url')
|
|
|
|
|
if not format_url:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
formats.append({
|
|
|
|
|
'format_id': '%sp' % height,
|
|
|
|
|
'url': format_url,
|
|
|
|
|