]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/tfo.py
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
  14 class TFOIE(InfoExtractor
): 
  15     _VALID_URL 
= r
'https?://(?:www\.)?tfo\.org/(?:en|fr)/(?:[^/]+/){2}(?P<id>\d+)' 
  17         'url': 'http://www.tfo.org/en/universe/tfo-247/100463871/video-game-hackathon', 
  18         'md5': '47c987d0515561114cf03d1226a9d4c7', 
  22             'title': 'Video Game Hackathon', 
  23             'description': 'md5:558afeba217c6c8d96c60e5421795c07', 
  24             'upload_date': '20160212', 
  25             'timestamp': 1455310233, 
  29     def _real_extract(self
, url
): 
  30         video_id 
= self
._match
_id
(url
) 
  31         self
._request
_webpage
(HEADRequest('http://www.tfo.org/'), video_id
) 
  32         infos 
= self
._download
_json
( 
  33             'http://www.tfo.org/api/web/video/get_infos', video_id
, data
=json
.dumps({ 
  34                 'product_id': video_id
, 
  35             }).encode(), headers
={ 
  36                 'X-tfo-session': self
._get
_cookies
('http://www.tfo.org/')['tfo-session'].value
, 
  38         if infos
.get('success') == 0: 
  39             raise ExtractorError('%s said: %s' % (self
.IE_NAME
, infos
['msg']), expected
=True) 
  40         video_data 
= infos
['data'] 
  43             '_type': 'url_transparent', 
  45             'url': 'limelight:media:' + video_data
['llid'], 
  46             'title': video_data
['title'], 
  47             'description': video_data
.get('description'), 
  48             'series': video_data
.get('collection'), 
  49             'season_number': int_or_none(video_data
.get('season')), 
  50             'episode_number': int_or_none(video_data
.get('episode')), 
  51             'duration': int_or_none(video_data
.get('duration')), 
  52             'ie_key': 'LimelightMedia',