diff --git a/youtube_dl/extractor/mp4upload.py b/youtube_dl/extractor/mp4upload.py index d03b4cc78..fc0d0daea 100644 --- a/youtube_dl/extractor/mp4upload.py +++ b/youtube_dl/extractor/mp4upload.py @@ -12,6 +12,7 @@ from ..utils import ( int_or_none, float_or_none, parse_filesize, + parse_resolution, strip_or_none, ) from .common import InfoExtractor @@ -35,6 +36,7 @@ class Mp4UploadIE(InfoExtractor): 'acodec': 'ffaac', 'asr': 44100, 'abr': 96, + 'vbr': 266, 'upload_date': '20160702', }, }, { @@ -55,77 +57,86 @@ class Mp4UploadIE(InfoExtractor): if not title: raise ExtractorError('Title not found', expected=True, video_id=video_id) - info_dict = { - 'title': title, - 'id': video_id, - } - - embedpage = self._download_webpage(embed_url, video_id, note='Downloading embed webpage') - - # It contains only `source url` and `thumbnail` - poor_info_dict = self._extract_jwplayer_data( - decode_packed_codes( - get_element_by_id('player', embedpage) - ).replace('\\\'', '"'), - video_id, base_url=embed_url, require_title=False - ) - if not poor_info_dict: + try: + # It contains only `source url` and `thumbnail` + jw_dict = self._extract_jwplayer_data( + decode_packed_codes( + get_element_by_id( + 'player', + self._download_webpage(embed_url, video_id, note='Downloading embed webpage') + ) + ).replace('\\\'', '"'), + video_id, base_url=embed_url, require_title=False + ) + except TypeError: + jw_dict = None + if not jw_dict: raise ExtractorError('I can\'t find player data', video_id=video_id) - info_dict['thumbnail'] = poor_info_dict.get('thumbnail') - _f = { - 'url': poor_info_dict.get('formats', [{}])[0].get('url'), - 'ext': poor_info_dict.get('formats', [{}])[0].get('ext'), - 'format_id': '1', - } + acodec = None + asr = None + abr = None + audio_raw = self._html_search_regex( + r'
  • Audio info:(.+?)
  • ', + webpage, 'audioinfo', fatal=False) + if audio_raw: + audmatch = re.search(r'(.+?), (\d+) kbps, (\d+) Hz', audio_raw) + if audmatch: + (acodec, abr, asr) = audmatch.groups() - file_info = re.findall( - r'>(?P