]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/blinkx.py
   1 from __future__ 
import unicode_literals
 
   7 from .common 
import InfoExtractor
 
  13 class BlinkxIE(InfoExtractor
): 
  14     _VALID_URL 
= r
'^(?:https?://(?:www\.)blinkx\.com/#?ce/|blinkx:)(?P<id>[^?]+)' 
  18         'url': 'http://www.blinkx.com/ce/8aQUy7GVFYgFzpKhT0oqsilwOGFRVXk3R1ZGWWdGenBLaFQwb3FzaWx3OGFRVXk3R1ZGWWdGenB', 
  19         'file': '8aQUy7GV.mp4', 
  20         'md5': '2e9a07364af40163a908edbf10bb2492', 
  22             "title": "Police Car Rolls Away", 
  23             "uploader": "stupidvideos.com", 
  24             "upload_date": "20131215", 
  25             "description": "A police car gently rolls away from a fight. Maybe it felt weird being around a confrontation and just had to get out of there!", 
  30                 "url": "http://cdn.blinkx.com/stream/b/41/StupidVideos/20131215/1873969261/1873969261_tn_0.jpg", 
  35     def _real_extract(self
, rl
): 
  36         m 
= re
.match(self
._VALID
_URL
, rl
) 
  37         video_id 
= m
.group('id') 
  38         display_id 
= video_id
[:8] 
  40         api_url 
= (u
'https://apib4.blinkx.com/api.php?action=play_video&' + 
  41                    'video=%s' % video_id
) 
  42         data_json 
= self
._download
_webpage
(api_url
, display_id
) 
  43         data 
= json
.loads(data_json
)['api']['results'][0] 
  44         dt 
= datetime
.datetime
.fromtimestamp(data
['pubdate_epoch']) 
  45         pload_date 
= dt
.strftime('%Y%m%d') 
  50         for m 
in data
['media']: 
  51             if m
['type'] == 'jpg': 
  55                     'height': int(m
['h']), 
  57             elif m
['type'] == 'original': 
  59             elif m
['type'] == 'youtube': 
  61                 self
.to_screen(u
'Youtube video detected: %s' % yt_id
) 
  62                 return self
.url_result(yt_id
, 'Youtube', video_id
=yt_id
) 
  63             elif m
['type'] in ('flv', 'mp4'): 
  64                 vcodec 
= remove_start(m
['vcodec'], 'ff') 
  65                 acodec 
= remove_start(m
['acodec'], 'ff') 
  66                 tbr 
= (int(m
['vbr']) + int(m
['abr'])) // 1000 
  67                 format_id 
= (u
'%s-%sk-%s' % 
  72                     'format_id': format_id
, 
  76                     'abr': int(m
['abr']) // 1000, 
  77                     'vbr': int(m
['vbr']) // 1000, 
  80                     'height': int(m
['h']), 
  83         self
._sort
_formats
(formats
) 
  88             'title': data
['title'], 
  90             'uploader': data
['channel_name'], 
  91             'upload_date': pload_date
, 
  92             'description': data
.get('description'), 
  93             'thumbnails': thumbnails
,