aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor/rts.py
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-02-05 22:17:50 +0600
committerSergey M․ <dstftw@gmail.com>2015-02-05 22:17:50 +0600
commitf13b88c61696eaeb96878b5c68b7ab949a3f4ca6 (patch)
tree3390176d1e2337f2d24634b6fbf43bc4834d6db7 /youtube_dl/extractor/rts.py
parent60ca389c646ae03e90377261857bfe45333a8ff2 (diff)
[rts] Fix f4m and m3u8 extraction (Closes #4873)
Diffstat (limited to 'youtube_dl/extractor/rts.py')
-rw-r--r--youtube_dl/extractor/rts.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/youtube_dl/extractor/rts.py b/youtube_dl/extractor/rts.py
index 5e84c1098..d0981115d 100644
--- a/youtube_dl/extractor/rts.py
+++ b/youtube_dl/extractor/rts.py
@@ -6,12 +6,14 @@ import re
from .common import InfoExtractor
from ..compat import (
compat_str,
+ compat_urllib_parse_urlparse,
)
from ..utils import (
int_or_none,
parse_duration,
parse_iso8601,
unescapeHTML,
+ xpath_text,
)
@@ -159,11 +161,27 @@ class RTSIE(InfoExtractor):
return int_or_none(self._search_regex(
r'-([0-9]+)k\.', url, 'bitrate', default=None))
- formats = [{
- 'format_id': fid,
- 'url': furl,
- 'tbr': extract_bitrate(furl),
- } for fid, furl in info['streams'].items()]
+ formats = []
+ for format_id, format_url in info['streams'].items():
+ if format_url.endswith('.f4m'):
+ token = self._download_xml(
+ 'http://tp.srgssr.ch/token/akahd.xml?stream=%s/*' % compat_urllib_parse_urlparse(format_url).path,
+ video_id, 'Downloading %s token' % format_id)
+ auth_params = xpath_text(token, './/authparams', 'auth params')
+ if not auth_params:
+ continue
+ formats.extend(self._extract_f4m_formats(
+ '%s?%s&hdcore=3.4.0&plugin=aasp-3.4.0.132.66' % (format_url, auth_params),
+ video_id, f4m_id=format_id))
+ elif format_url.endswith('.m3u8'):
+ formats.extend(self._extract_m3u8_formats(
+ format_url, video_id, 'mp4', m3u8_id=format_id))
+ else:
+ formats.append({
+ 'format_id': format_id,
+ 'url': format_url,
+ 'tbr': extract_bitrate(format_url),
+ })
if 'media' in info:
formats.extend([{