]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/nowtv.py
67e34b294520faa6d8320c719471dcfe89c71fa9
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
   7 from ..compat 
import compat_str
 
  18 class NowTVBaseIE(InfoExtractor
): 
  20         'id', 'title', 'free', 'geoblocked', 'articleLong', 'articleShort', 
  21         'broadcastStartDate', 'seoUrl', 'duration', 'files', 
  22         'format.defaultImage169Format', 'format.defaultImage169Logo') 
  24     def _extract_video(self
, info
, display_id
=None): 
  25         video_id 
= compat_str(info
['id']) 
  29             if info
.get('geoblocked', False): 
  31                     'Video %s is not available from your location due to geo restriction' % video_id
, 
  33             if not info
.get('free', True): 
  35                     'Video %s is not available for free' % video_id
, expected
=True) 
  38         for item 
in files
['items']: 
  39             if determine_ext(item
['path']) != 'f4v': 
  41             app
, play_path 
= remove_start(item
['path'], '/').split('/', 1) 
  43                 'url': 'rtmpe://fms.rtl.de', 
  45                 'play_path': 'mp4:%s' % play_path
, 
  47                 'page_url': 'http://rtlnow.rtl.de', 
  48                 'player_url': 'http://cdn.static-fra.de/now/vodplayer.swf', 
  49                 'tbr': int_or_none(item
.get('bitrate')), 
  51         self
._sort
_formats
(formats
) 
  54         description 
= info
.get('articleLong') or info
.get('articleShort') 
  55         timestamp 
= parse_iso8601(info
.get('broadcastStartDate'), ' ') 
  56         duration 
= parse_duration(info
.get('duration')) 
  58         f 
= info
.get('format', {}) 
  59         thumbnail 
= f
.get('defaultImage169Format') or f
.get('defaultImage169Logo') 
  63             'display_id': display_id 
or info
.get('seoUrl'), 
  65             'description': description
, 
  66             'thumbnail': thumbnail
, 
  67             'timestamp': timestamp
, 
  73 class NowTVIE(NowTVBaseIE
): 
  74     _VALID_URL 
= r
'https?://(?:www\.)?nowtv\.(?:de|at|ch)/(?:rtl|rtl2|rtlnitro|superrtl|ntv|vox)/(?P<show_id>[^/]+)/(?:list/[^/]+/)?(?P<id>[^/]+)/(?:player|preview)' 
  78         'url': 'http://www.nowtv.de/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit/player', 
  81             'display_id': 'bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit', 
  83             'title': 'Inka Bause stellt die neuen Bauern vor', 
  84             'description': 'md5:e234e1ed6d63cf06be5c070442612e7e', 
  85             'thumbnail': 're:^https?://.*\.jpg$', 
  86             'timestamp': 1432580700, 
  87             'upload_date': '20150525', 
  92             'skip_download': True, 
  96         'url': 'http://www.nowtv.de/rtl2/berlin-tag-nacht/berlin-tag-nacht-folge-934/player', 
  99             'display_id': 'berlin-tag-nacht/berlin-tag-nacht-folge-934', 
 101             'title': 'Berlin - Tag & Nacht (Folge 934)', 
 102             'description': 'md5:c85e88c2e36c552dfe63433bc9506dd0', 
 103             'thumbnail': 're:^https?://.*\.jpg$', 
 104             'timestamp': 1432666800, 
 105             'upload_date': '20150526', 
 110             'skip_download': True, 
 114         'url': 'http://www.nowtv.de/rtlnitro/alarm-fuer-cobra-11-die-autobahnpolizei/hals-und-beinbruch-2014-08-23-21-10-00/player', 
 117             'display_id': 'alarm-fuer-cobra-11-die-autobahnpolizei/hals-und-beinbruch-2014-08-23-21-10-00', 
 119             'title': 'Hals- und Beinbruch', 
 120             'description': 'md5:b50d248efffe244e6f56737f0911ca57', 
 121             'thumbnail': 're:^https?://.*\.jpg$', 
 122             'timestamp': 1432415400, 
 123             'upload_date': '20150523', 
 128             'skip_download': True, 
 132         'url': 'http://www.nowtv.de/superrtl/medicopter-117/angst/player', 
 135             'display_id': 'medicopter-117/angst', 
 138             'description': 'md5:30cbc4c0b73ec98bcd73c9f2a8c17c4e', 
 139             'thumbnail': 're:^https?://.*\.jpg$', 
 140             'timestamp': 1222632900, 
 141             'upload_date': '20080928', 
 146             'skip_download': True, 
 150         'url': 'http://www.nowtv.de/ntv/ratgeber-geld/thema-ua-der-erste-blick-die-apple-watch/player', 
 153             'display_id': 'ratgeber-geld/thema-ua-der-erste-blick-die-apple-watch', 
 155             'title': 'Thema u.a.: Der erste Blick: Die Apple Watch', 
 156             'description': 'md5:4312b6c9d839ffe7d8caf03865a531af', 
 157             'thumbnail': 're:^https?://.*\.jpg$', 
 158             'timestamp': 1432751700, 
 159             'upload_date': '20150527', 
 164             'skip_download': True, 
 168         'url': 'http://www.nowtv.de/vox/der-hundeprofi/buero-fall-chihuahua-joel/player', 
 171             'display_id': 'der-hundeprofi/buero-fall-chihuahua-joel', 
 173             'title': "Büro-Fall / Chihuahua 'Joel'", 
 174             'description': 'md5:e62cb6bf7c3cc669179d4f1eb279ad8d', 
 175             'thumbnail': 're:^https?://.*\.jpg$', 
 176             'timestamp': 1432408200, 
 177             'upload_date': '20150523', 
 182             'skip_download': True, 
 185         'url': 'http://www.nowtv.de/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit/preview', 
 186         'only_matching': True, 
 188         'url': 'http://www.nowtv.at/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit/preview?return=/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit', 
 189         'only_matching': True, 
 191         'url': 'http://www.nowtv.de/rtl2/echtzeit/list/aktuell/schnelles-geld-am-ende-der-welt/player', 
 192         'only_matching': True, 
 195     def _real_extract(self
, url
): 
 196         mobj 
= re
.match(self
._VALID
_URL
, url
) 
 197         display_id 
= '%s/%s' % (mobj
.group('show_id'), mobj
.group('id')) 
 199         info 
= self
._download
_json
( 
 200             'https://api.nowtv.de/v3/movies/%s?fields=%s' 
 201             % (display_id
, ','.join(self
._VIDEO
_FIELDS
)), display_id
) 
 203         return self
._extract
_video
(info
, display_id
) 
 206 class NowTVListIE(NowTVBaseIE
): 
 207     _VALID_URL 
= r
'https?://(?:www\.)?nowtv\.(?:de|at|ch)/(?:rtl|rtl2|rtlnitro|superrtl|ntv|vox)/(?P<show_id>[^/]+)/list/(?P<id>[^?/#&]+)$' 
 209     _SHOW_FIELDS 
= ('title', ) 
 210     _SEASON_FIELDS 
= ('id', 'headline', 'seoheadline', ) 
 213         'url': 'http://www.nowtv.at/rtl/stern-tv/list/aktuell', 
 216             'title': 'stern TV - Aktuell', 
 220         'url': 'http://www.nowtv.at/rtl/das-supertalent/list/free-staffel-8', 
 223             'title': 'Das Supertalent - FREE Staffel 8', 
 225         'playlist_count': 14, 
 228     def _real_extract(self
, url
): 
 229         mobj 
= re
.match(self
._VALID
_URL
, url
) 
 230         show_id 
= mobj
.group('show_id') 
 231         season_id 
= mobj
.group('id') 
 234         fields
.extend(self
._SHOW
_FIELDS
) 
 235         fields
.extend('formatTabs.%s' % field 
for field 
in self
._SEASON
_FIELDS
) 
 237             'formatTabs.formatTabPages.container.movies.%s' % field
 
 238             for field 
in self
._VIDEO
_FIELDS
) 
 240         list_info 
= self
._download
_json
( 
 241             'https://api.nowtv.de/v3/formats/seo?fields=%s&name=%s.php' 
 242             % (','.join(fields
), show_id
), 
 246             season 
for season 
in list_info
['formatTabs']['items'] 
 247             if season
.get('seoheadline') == season_id
) 
 249         title 
= '%s - %s' % (list_info
['title'], season
['headline']) 
 252         for container 
in season
['formatTabPages']['items']: 
 253             for info 
in ((container
.get('container') or {}).get('movies') or {}).get('items') or []: 
 254                 entries
.append(self
._extract
_video
(info
)) 
 256         return self
.playlist_result( 
 257             entries
, compat_str(season
.get('id') or season_id
), title
)