]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/baidu.py
2 from __future__
import unicode_literals
5 from .common
import InfoExtractor
6 from ..utils
import unescapeHTML
9 class BaiduVideoIE(InfoExtractor
):
11 _VALID_URL
= r
'https?://v\.baidu\.com/(?P<type>[a-z]+)/(?P<id>\d+)\.htm'
13 'url': 'http://v.baidu.com/comic/1069.htm?frp=bdbrand&q=%E4%B8%AD%E5%8D%8E%E5%B0%8F%E5%BD%93%E5%AE%B6',
16 'title': '中华小当家 TV版国语',
17 'description': 'md5:51be07afe461cf99fa61231421b5397c',
21 'url': 'http://v.baidu.com/show/11595.htm?frp=bdbrand',
25 'description': 'md5:1bf88bad6d850930f542d51547c089b8',
27 'playlist_mincount': 12,
30 def _call_api(self
, path
, category
, playlist_id
, note
):
31 return self
._download
_json
('http://app.video.baidu.com/%s/?worktype=adnative%s&id=%s' % (
32 path
, category
, playlist_id
), playlist_id
, note
)
34 def _real_extract(self
, url
):
35 category
, playlist_id
= self
._match
_valid
_url
(url
).groups()
36 if category
== 'show':
41 playlist_detail
= self
._call
_api
(
42 'xqinfo', category
, playlist_id
, 'Download playlist JSON metadata')
44 playlist_title
= playlist_detail
['title']
45 playlist_description
= unescapeHTML(playlist_detail
.get('intro'))
47 episodes_detail
= self
._call
_api
(
48 'xqsingle', category
, playlist_id
, 'Download episodes JSON metadata')
50 entries
= [self
.url_result(
51 episode
['url'], video_title
=episode
['title']
52 ) for episode
in episodes_detail
['videos']]
54 return self
.playlist_result(
55 entries
, playlist_id
, playlist_title
, playlist_description
)