]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/orf.py
   2 from __future__ 
import unicode_literals
 
   7 from .common 
import InfoExtractor
 
  14 class ORFIE(InfoExtractor
): 
  15     _VALID_URL 
= r
'https?://tvthek\.orf\.at/(?:programs/.+?/episodes|topics/.+?|program/[^/]+)/(?P<id>\d+)' 
  18         'url': 'http://tvthek.orf.at/program/matinee-Was-Sie-schon-immer-ueber-Klassik-wissen-wollten/7317210/Was-Sie-schon-immer-ueber-Klassik-wissen-wollten/7319746/Was-Sie-schon-immer-ueber-Klassik-wissen-wollten/7319747', 
  19         'file': '7319747.mp4', 
  20         'md5': 'bd803c5d8c32d3c64a0ea4b4eeddf375', 
  22             'title': 'Was Sie schon immer über Klassik wissen wollten', 
  23             'description': 'md5:0ddf0d5f0060bd53f744edaa5c2e04a4', 
  25             'upload_date': '20140105', 
  27         'skip': 'Blocked outside of Austria', 
  30     def _real_extract(self
, url
): 
  31         mobj 
= re
.match(self
._VALID
_URL
, url
) 
  32         playlist_id 
= mobj
.group('id') 
  33         webpage 
= self
._download
_webpage
(url
, playlist_id
) 
  35         data_json 
= self
._search
_regex
( 
  36             r
'initializeAdworx\((.+?)\);\n', webpage
, 'video info') 
  37         all_data 
= json
.loads(data_json
) 
  38         sdata 
= all_data
[0]['values']['segments'] 
  40         def quality_to_int(s
): 
  41             m 
= re
.search('([0-9]+)', s
) 
  44             return int(m
.group(1)) 
  50                 'preference': -10 if fd
['delivery'] == 'hls' else None, 
  51                 'format_id': '%s-%s-%s' % ( 
  52                     fd
['delivery'], fd
['quality'], fd
['quality_string']), 
  54                 'protocol': fd
['protocol'], 
  55                 'quality': quality_to_int(fd
['quality']), 
  56             } for fd 
in sd
['playlist_item_array']['sources']] 
  58             # Check for geoblocking. 
  59             # There is a property is_geoprotection, but that's always false 
  60             geo_str 
= sd
.get('geoprotection_string') 
  66                         if re
.match(r
'^https?://.*\.mp4$', f
['url'])) 
  70                     req 
= HEADRequest(http_url
) 
  71                     self
._request
_webpage
( 
  73                         note
='Testing for geoblocking', 
  75                             'This video seems to be blocked outside of %s. ' 
  76                             'You may want to try the streaming-* formats.') 
  80             self
._sort
_formats
(formats
) 
  82             upload_date 
= unified_strdate(sd
['created_date']) 
  86                 'title': sd
['header'], 
  88                 'description': sd
.get('description'), 
  89                 'duration': int(sd
['duration_in_seconds']), 
  90                 'upload_date': upload_date
, 
  91                 'thumbnail': sd
.get('image_full_url'),