youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

baidu.py (1980B)


      1 # coding: utf-8
      2 from __future__ import unicode_literals
      3 
      4 import re
      5 
      6 from .common import InfoExtractor
      7 from ..utils import unescapeHTML
      8 
      9 
     10 class BaiduVideoIE(InfoExtractor):
     11     IE_DESC = '百度视频'
     12     _VALID_URL = r'https?://v\.baidu\.com/(?P<type>[a-z]+)/(?P<id>\d+)\.htm'
     13     _TESTS = [{
     14         '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',
     15         'info_dict': {
     16             'id': '1069',
     17             'title': '中华小当家 TV版国语',
     18             'description': 'md5:51be07afe461cf99fa61231421b5397c',
     19         },
     20         'playlist_count': 52,
     21     }, {
     22         'url': 'http://v.baidu.com/show/11595.htm?frp=bdbrand',
     23         'info_dict': {
     24             'id': '11595',
     25             'title': 're:^奔跑吧兄弟',
     26             'description': 'md5:1bf88bad6d850930f542d51547c089b8',
     27         },
     28         'playlist_mincount': 12,
     29     }]
     30 
     31     def _call_api(self, path, category, playlist_id, note):
     32         return self._download_json('http://app.video.baidu.com/%s/?worktype=adnative%s&id=%s' % (
     33             path, category, playlist_id), playlist_id, note)
     34 
     35     def _real_extract(self, url):
     36         category, playlist_id = re.match(self._VALID_URL, url).groups()
     37         if category == 'show':
     38             category = 'tvshow'
     39         if category == 'tv':
     40             category = 'tvplay'
     41 
     42         playlist_detail = self._call_api(
     43             'xqinfo', category, playlist_id, 'Download playlist JSON metadata')
     44 
     45         playlist_title = playlist_detail['title']
     46         playlist_description = unescapeHTML(playlist_detail.get('intro'))
     47 
     48         episodes_detail = self._call_api(
     49             'xqsingle', category, playlist_id, 'Download episodes JSON metadata')
     50 
     51         entries = [self.url_result(
     52             episode['url'], video_title=episode['title']
     53         ) for episode in episodes_detail['videos']]
     54 
     55         return self.playlist_result(
     56             entries, playlist_id, playlist_title, playlist_description)