]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/tvplayer.py
ebde6053f16be20096bb1eed812ffb20f3c52dc2
   2 from __future__ 
import unicode_literals
 
   4 from .common 
import InfoExtractor
 
  17 class TVPlayerIE(InfoExtractor
): 
  18     _VALID_URL 
= r
'https?://(?:www\.)?tvplayer\.com/watch/(?P<id>[^/?#]+)' 
  20         'url': 'http://tvplayer.com/watch/bbcone', 
  24             'title': r
're:^BBC One [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', 
  28             'skip_download': True, 
  32     def _real_extract(self
, url
): 
  33         display_id 
= self
._match
_id
(url
) 
  34         webpage 
= self
._download
_webpage
(url
, display_id
) 
  36         current_channel 
= extract_attributes(self
._search
_regex
( 
  37             r
'(<div[^>]+class="[^"]*current-channel[^"]*"[^>]*>)', 
  38             webpage
, 'channel element')) 
  39         title 
= current_channel
['data-name'] 
  41         resource_id 
= current_channel
['data-id'] 
  43         token 
= self
._search
_regex
( 
  44             r
'data-token=(["\'])(?P
<token
>(?
!\
1).+)\
1', webpage, 
  45             'token
', group='token
') 
  47         context = self._download_json( 
  48             'https
://tvplayer
.com
/watch
/context
', display_id, 
  49             'Downloading JSON context
', query={ 
  50                 'resource
': resource_id, 
  54         validate = context['validate
'] 
  56             context, lambda x: x['platform
']['key
'], compat_str) or 'firefox
' 
  59             response = self._download_json( 
  60                 'http
://api
.tvplayer
.com
/api
/v2
/stream
/live
', 
  61                 display_id, 'Downloading JSON stream
', headers={ 
  62                     'Content
-Type
': 'application
/x
-www
-form
-urlencoded
; charset
=UTF
-8', 
  63                 }, data=urlencode_postdata({ 
  68                 }))['tvplayer
']['response
'] 
  69         except ExtractorError as e: 
  70             if isinstance(e.cause, compat_HTTPError): 
  71                 response = self._parse_json( 
  72                     e.cause.read().decode(), resource_id)['tvplayer
']['response
'] 
  74                     '%s said
: %s' % (self.IE_NAME, response['error
']), expected=True) 
  77         formats = self._extract_m3u8_formats(response['stream
'], display_id, 'mp4
') 
  78         self._sort_formats(formats) 
  82             'display_id
': display_id, 
  83             'title
': self._live_title(title),