[viki] Fix rtmp formats extraction (closes #11255)

This commit is contained in:
Sergey M․ 2016-11-26 00:13:46 +07:00
parent 74394b5e10
commit 9338a0eae3
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D

View file

@ -1,11 +1,12 @@
# coding: utf-8 # coding: utf-8
from __future__ import unicode_literals from __future__ import unicode_literals
import json
import time
import hmac
import hashlib import hashlib
import hmac
import itertools import itertools
import json
import re
import time
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
@ -276,9 +277,13 @@ def _real_extract(self, url):
height = int_or_none(self._search_regex( height = int_or_none(self._search_regex(
r'^(\d+)[pP]$', format_id, 'height', default=None)) r'^(\d+)[pP]$', format_id, 'height', default=None))
for protocol, format_dict in stream_dict.items(): for protocol, format_dict in stream_dict.items():
# rtmps URLs does not seem to work
if protocol == 'rtmps':
continue
format_url = format_dict['url']
if format_id == 'm3u8': if format_id == 'm3u8':
m3u8_formats = self._extract_m3u8_formats( m3u8_formats = self._extract_m3u8_formats(
format_dict['url'], video_id, 'mp4', format_url, video_id, 'mp4',
entry_protocol='m3u8_native', preference=-1, entry_protocol='m3u8_native', preference=-1,
m3u8_id='m3u8-%s' % protocol, fatal=False) m3u8_id='m3u8-%s' % protocol, fatal=False)
# Despite CODECS metadata in m3u8 all video-only formats # Despite CODECS metadata in m3u8 all video-only formats
@ -287,9 +292,23 @@ def _real_extract(self, url):
if f.get('acodec') == 'none' and f.get('vcodec') != 'none': if f.get('acodec') == 'none' and f.get('vcodec') != 'none':
f['acodec'] = None f['acodec'] = None
formats.extend(m3u8_formats) formats.extend(m3u8_formats)
elif format_url.startswith('rtmp'):
mobj = re.search(
r'^(?P<url>rtmp://[^/]+/(?P<app>.+?))/(?P<playpath>mp4:.+)$',
format_url)
if not mobj:
continue
formats.append({
'format_id': 'rtmp-%s' % format_id,
'ext': 'flv',
'url': mobj.group('url'),
'play_path': mobj.group('playpath'),
'app': mobj.group('app'),
'page_url': url,
})
else: else:
formats.append({ formats.append({
'url': format_dict['url'], 'url': format_url,
'format_id': '%s-%s' % (format_id, protocol), 'format_id': '%s-%s' % (format_id, protocol),
'height': height, 'height': height,
}) })