[weibo] dash formats
This commit is contained in:
parent
eb1333e65b
commit
05620dab04
|
@ -20,14 +20,25 @@ from ..utils import (
|
||||||
|
|
||||||
class WeiboIE(InfoExtractor):
|
class WeiboIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?weibo\.com/[0-9]+/(?P<id>[a-zA-Z0-9]+)'
|
_VALID_URL = r'https?://(?:www\.)?weibo\.com/[0-9]+/(?P<id>[a-zA-Z0-9]+)'
|
||||||
_TEST = {
|
_TESTS = [{
|
||||||
'url': 'https://weibo.com/6275294458/Fp6RGfbff?type=comment',
|
'url': 'https://weibo.com/6275294458/Fp6RGfbff?type=comment',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'Fp6RGfbff',
|
'id': 'Fp6RGfbff',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': 'You should have servants to massage you,... 来自Hosico_猫 - 微博',
|
'title': 'You should have servants to massage you,... 来自Hosico_猫 - 微博',
|
||||||
}
|
}
|
||||||
}
|
}, {
|
||||||
|
# DASH formats - https://github.com/ytdl-org/youtube-dl/issues/27320
|
||||||
|
'url': 'https://weibo.com/5720474518/JxfyRbDh6?type=repost',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'JxfyRbDh6',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': '#张亚东访谈KDA#击穿次元壁!张亚东访谈K... 来自英雄联盟 - 微博',
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'format': 'bestvideo',
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
video_id = self._match_id(url)
|
video_id = self._match_id(url)
|
||||||
|
@ -92,7 +103,33 @@ class WeiboIE(InfoExtractor):
|
||||||
'height': res,
|
'height': res,
|
||||||
})
|
})
|
||||||
|
|
||||||
self._sort_formats(formats)
|
media_ids = self._search_regex(
|
||||||
|
# for single-media posts only
|
||||||
|
r' action-data=\\"protocol=(?:.*?,)?dash(?:,.*?)?&type=feedvideo&objectid=(\d+:[\da-f]+)&',
|
||||||
|
webpage, 'media ids', default=None)
|
||||||
|
if media_ids:
|
||||||
|
dash_data = self._download_json('https://weibo.com/aj/video/getdashinfo?media_ids=%s' % media_ids,
|
||||||
|
media_ids, 'Downloading DASH mp4 urls')
|
||||||
|
for media in dash_data['data']['list'][0]['details']:
|
||||||
|
if 'play_info' not in media:
|
||||||
|
continue
|
||||||
|
pinf = media['play_info']
|
||||||
|
if not pinf['url']:
|
||||||
|
continue
|
||||||
|
formats.append({
|
||||||
|
'url': pinf['url'],
|
||||||
|
'format_id': pinf.get('label'),
|
||||||
|
'width': pinf.get('width') if 'video/' in pinf.get('mime') else None,
|
||||||
|
'height': pinf.get('height') if 'video/' in pinf.get('mime') else None,
|
||||||
|
('vbr' if 'video/' in pinf.get('mime') else 'abr'): pinf.get('bitrate'),
|
||||||
|
'fps': pinf.get('fps') if 'video/' in pinf.get('mime') else None,
|
||||||
|
'vcodec': pinf.get('video_codecs') if 'video/' in pinf.get('mime') else 'none',
|
||||||
|
'acodec': pinf.get('audio_codecs') if 'audio/' in pinf.get('mime') else 'none',
|
||||||
|
'asr': pinf.get('audio_sample_rate') if 'audio/' in pinf.get('mime') else None,
|
||||||
|
'filesize': pinf.get('size'),
|
||||||
|
})
|
||||||
|
|
||||||
|
self._sort_formats(formats, field_preference=('height', 'vbr', 'abr'))
|
||||||
|
|
||||||
uploader = self._og_search_property(
|
uploader = self._og_search_property(
|
||||||
'nick-name', webpage, 'uploader', default=None)
|
'nick-name', webpage, 'uploader', default=None)
|
||||||
|
|
Loading…
Reference in a new issue