]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/performgroup.py
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
   7 from ..utils 
import int_or_none
 
  10 class PerformGroupIE(InfoExtractor
): 
  11     _VALID_URL 
= r
'https?://player\.performgroup\.com/eplayer(?:/eplayer\.html|\.js)#/?(?P<id>[0-9a-f]{26})\.(?P<auth_token>[0-9a-z]{26})' 
  13         # http://www.faz.net/aktuell/sport/fussball/wm-2018-playoffs-schweiz-besiegt-nordirland-1-0-15286104.html 
  14         'url': 'http://player.performgroup.com/eplayer/eplayer.html#d478c41c5d192f56b9aa859de8.1w4crrej5w14e1ed4s1ce4ykab', 
  15         'md5': '259cb03d142e2e52471e8837ecacb29f', 
  17             'id': 'xgrwobuzumes1lwjxtcdpwgxd', 
  19             'title': 'Liga MX: Keine Einsicht nach Horrorfoul', 
  20             'description': 'md5:7cd3b459c82725b021e046ab10bf1c5b', 
  21             'timestamp': 1511533477, 
  22             'upload_date': '20171124', 
  26     def _call_api(self
, service
, auth_token
, content_id
, referer_url
): 
  27         return self
._download
_json
( 
  28             'http://ep3.performfeeds.com/ep%s/%s/%s/' % (service
, auth_token
, content_id
), 
  30                 'Referer': referer_url
, 
  31                 'Origin': 'http://player.performgroup.com', 
  36     def _real_extract(self
, url
): 
  37         player_id
, auth_token 
= re
.search(self
._VALID
_URL
, url
).groups() 
  38         bootstrap 
= self
._call
_api
('bootstrap', auth_token
, player_id
, url
) 
  39         video 
= bootstrap
['config']['dataSource']['sourceItems'][0]['videos'][0] 
  40         video_id 
= video
['uuid'] 
  41         vod 
= self
._call
_api
('vod', auth_token
, video_id
, url
) 
  42         media 
= vod
['videos']['video'][0]['media'] 
  45         hls_url 
= media
.get('hls', {}).get('url') 
  47             formats
.extend(self
._extract
_m
3u8_formats
(hls_url
, video_id
, 'mp4', 'm3u8_native', m3u8_id
='hls', fatal
=False)) 
  49         hds_url 
= media
.get('hds', {}).get('url') 
  51             formats
.extend(self
._extract
_f
4m
_formats
(hds_url 
+ '?hdcore', video_id
, f4m_id
='hds', fatal
=False)) 
  53         for c 
in media
.get('content', []): 
  57             tbr 
= int_or_none(c
.get('bitrate'), 1000) 
  60                 format_id 
+= '-%d' % tbr
 
  62                 'format_id': format_id
, 
  65                 'width': int_or_none(c
.get('width')), 
  66                 'height': int_or_none(c
.get('height')), 
  67                 'filesize': int_or_none(c
.get('fileSize')), 
  68                 'vcodec': c
.get('type'), 
  69                 'fps': int_or_none(c
.get('videoFrameRate')), 
  70                 'vbr': int_or_none(c
.get('videoRate'), 1000), 
  71                 'abr': int_or_none(c
.get('audioRate'), 1000), 
  73         self
._sort
_formats
(formats
) 
  77             'title': video
['title'], 
  78             'description': video
.get('description'), 
  79             'thumbnail': video
.get('poster'), 
  80             'duration': int_or_none(video
.get('duration')), 
  81             'timestamp': int_or_none(video
.get('publishedTime'), 1000),