]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/svt.py
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
  12 class SVTBaseIE(InfoExtractor
): 
  13     def _extract_video(self
, url
, video_id
): 
  14         info 
= self
._download
_json
(url
, video_id
) 
  16         title 
= info
['context']['title'] 
  17         thumbnail 
= info
['context'].get('thumbnailImage') 
  19         video_info 
= info
['video'] 
  21         for vr 
in video_info
['videoReferences']: 
  23             ext 
= determine_ext(vurl
) 
  25                 formats
.extend(self
._extract
_m
3u8_formats
( 
  27                     ext
='mp4', entry_protocol
='m3u8_native', 
  28                     m3u8_id
=vr
.get('playerType'))) 
  30                 formats
.extend(self
._extract
_f
4m
_formats
( 
  31                     vurl 
+ '?hdcore=3.3.0', video_id
, 
  32                     f4m_id
=vr
.get('playerType'))) 
  35                     'format_id': vr
.get('playerType'), 
  38         self
._sort
_formats
(formats
) 
  41         subtitle_references 
= video_info
.get('subtitleReferences') 
  42         if isinstance(subtitle_references
, list): 
  43             for sr 
in subtitle_references
: 
  44                 subtitle_url 
= sr
.get('url') 
  46                     subtitles
.setdefault('sv', []).append({'url': subtitle_url
}) 
  48         duration 
= video_info
.get('materialLength') 
  49         age_limit 
= 18 if video_info
.get('inappropriateForChildren') else 0 
  55             'subtitles': subtitles
, 
  56             'thumbnail': thumbnail
, 
  58             'age_limit': age_limit
, 
  62 class SVTIE(SVTBaseIE
): 
  63     _VALID_URL 
= r
'https?://(?:www\.)?svt\.se/wd\?(?:.*?&)?widgetId=(?P<widget_id>\d+)&.*?\barticleId=(?P<id>\d+)' 
  65         'url': 'http://www.svt.se/wd?widgetId=23991§ionId=541&articleId=2900353&type=embed&contextSectionId=123&autostart=false', 
  66         'md5': '9648197555fc1b49e3dc22db4af51d46', 
  70             'title': 'Här trycker Jagr till Giroux (under SVT-intervjun)', 
  77     def _extract_url(webpage
): 
  79             r
'(?:<iframe src|href)="(?P<url>%s[^"]*)"' % SVTIE
._VALID
_URL
, webpage
) 
  81             return mobj
.group('url') 
  83     def _real_extract(self
, url
): 
  84         mobj 
= re
.match(self
._VALID
_URL
, url
) 
  85         widget_id 
= mobj
.group('widget_id') 
  86         article_id 
= mobj
.group('id') 
  87         return self
._extract
_video
( 
  88             'http://www.svt.se/wd?widgetId=%s&articleId=%s&format=json&type=embed&output=json' % (widget_id
, article_id
), 
  92 class SVTPlayIE(SVTBaseIE
): 
  93     IE_DESC 
= 'SVT Play and Öppet arkiv' 
  94     _VALID_URL 
= r
'https?://(?:www\.)?(?P<host>svtplay|oppetarkiv)\.se/video/(?P<id>[0-9]+)' 
  96         'url': 'http://www.svtplay.se/video/5996901/flygplan-till-haile-selassie/flygplan-till-haile-selassie-2', 
  97         'md5': '2b6704fe4a28801e1a098bbf3c5ac611', 
 101             'title': 'Flygplan till Haile Selassie', 
 103             'thumbnail': 're:^https?://.*[\.-]jpg$', 
 113     def _real_extract(self
, url
): 
 114         mobj 
= re
.match(self
._VALID
_URL
, url
) 
 115         video_id 
= mobj
.group('id') 
 116         host 
= mobj
.group('host') 
 117         return self
._extract
_video
( 
 118             'http://www.%s.se/video/%s?output=json' % (host
, video_id
),