]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/rtve.py
0ce22d60c7fa995980e3f70159583f156672d76b
   2 from __future__ 
import unicode_literals
 
   8 from .common 
import InfoExtractor
 
  15 def _decrypt_url(png
): 
  16     encrypted_data 
= base64
.b64decode(png
) 
  17     text_index 
= encrypted_data
.find(b
'tEXt') 
  18     text_chunk 
= encrypted_data
[text_index 
- 4:] 
  19     length 
= struct_unpack('!I', text_chunk
[:4])[0] 
  20     # Use bytearray to get integers when iterating in both python 2.x and 3.x 
  21     data 
= bytearray(text_chunk
[8:8 + length
]) 
  22     data 
= [chr(b
) for b 
in data 
if b 
!= 0] 
  23     hash_index 
= data
.index('#') 
  24     alphabet_data 
= data
[:hash_index
] 
  25     url_data 
= data
[hash_index 
+ 1:] 
  30     for l 
in alphabet_data
: 
  40     for letter 
in url_data
: 
  57 class RTVEALaCartaIE(InfoExtractor
): 
  58     IE_NAME 
= 'rtve.es:alacarta' 
  59     IE_DESC 
= 'RTVE a la carta' 
  60     _VALID_URL 
= r
'http://www\.rtve\.es/alacarta/videos/[^/]+/[^/]+/(?P<id>\d+)' 
  63         'url': 'http://www.rtve.es/alacarta/videos/balonmano/o-swiss-cup-masculina-final-espana-suecia/2491869/', 
  64         'md5': '1d49b7e1ca7a7502c56a4bf1b60f1b43', 
  68             'title': 'Balonmano - Swiss Cup masculina. Final: España-Suecia', 
  71         'note': 'Live stream', 
  72         'url': 'http://www.rtve.es/alacarta/videos/television/24h-live/1694255/', 
  80     def _real_extract(self
, url
): 
  81         mobj 
= re
.match(self
._VALID
_URL
, url
) 
  82         video_id 
= mobj
.group('id') 
  83         info 
= self
._download
_json
( 
  84             'http://www.rtve.es/api/videos/%s/config/alacarta_videos.json' % video_id
, 
  85             video_id
)['page']['items'][0] 
  86         png_url 
= 'http://www.rtve.es/ztnr/movil/thumbnail/default/videos/%s.png' % video_id
 
  87         png 
= self
._download
_webpage
(png_url
, video_id
, 'Downloading url information') 
  88         video_url 
= _decrypt_url(png
) 
  92             'title': info
['title'], 
  94             'thumbnail': info
.get('image'), 
  99 class RTVELiveIE(InfoExtractor
): 
 100     IE_NAME 
= 'rtve.es:live' 
 101     IE_DESC 
= 'RTVE.es live streams' 
 102     _VALID_URL 
= r
'http://www\.rtve\.es/(?:deportes/directo|noticias|television)/(?P<id>[a-zA-Z0-9-]+)' 
 105         'url': 'http://www.rtve.es/noticias/directo-la-1/', 
 107             'id': 'directo-la-1', 
 109             'title': 're:^La 1 de TVE [0-9]{4}-[0-9]{2}-[0-9]{2}Z[0-9]{6}$', 
 112             'skip_download': 'live stream', 
 116     def _real_extract(self
, url
): 
 117         mobj 
= re
.match(self
._VALID
_URL
, url
) 
 118         start_time 
= time
.gmtime() 
 119         video_id 
= mobj
.group('id') 
 121         webpage 
= self
._download
_webpage
(url
, video_id
) 
 122         player_url 
= self
._search
_regex
( 
 123             r
'<param name="movie" value="([^"]+)"/>', webpage
, 'player URL') 
 124         title 
= remove_end(self
._og
_search
_title
(webpage
), ' en directo') 
 125         title 
+= ' ' + time
.strftime('%Y-%m-%dZ%H%M%S', start_time
) 
 127         vidplayer_id 
= self
._search
_regex
( 
 128             r
' id="vidplayer([0-9]+)"', webpage
, 'internal video ID') 
 129         png_url 
= 'http://www.rtve.es/ztnr/movil/thumbnail/default/videos/%s.png' % vidplayer_id
 
 130         png 
= self
._download
_webpage
(png_url
, video_id
, 'Downloading url information') 
 131         video_url 
= _decrypt_url(png
) 
 138             'app': 'rtve-live-live?ovpfv=2.1.2', 
 139             'player_url': player_url
,