]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/vgtv.py
70578a4cc6866524e2c52d574976579a8ad238e5
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
   7 from ..utils 
import float_or_none
 
  10 class VGTVIE(InfoExtractor
): 
  11     _VALID_URL 
= r
'http://(?:www\.)?vgtv\.no/#!/(?:.*)/(?P<id>[0-9]+)' 
  15             'url': 'http://www.vgtv.no/#!/video/84196/hevnen-er-soet-episode-10-abu', 
  16             'md5': 'b8be7a234cebb840c0d512c78013e02f', 
  20                 'title': 'Hevnen er søt episode 1:10 - Abu', 
  21                 'description': 'md5:e25e4badb5f544b04341e14abdc72234', 
  22                 'thumbnail': 're:^https?://.*\.jpg', 
  24                 'timestamp': 1404626400, 
  25                 'upload_date': '20140706', 
  31             'url': 'http://www.vgtv.no/#!/live/100764/opptak-vgtv-foelger-em-kvalifiseringen', 
  35                 'title': 'OPPTAK: VGTV følger EM-kvalifiseringen', 
  36                 'description': 'md5:3772d9c0dc2dff92a886b60039a7d4d3', 
  37                 'thumbnail': 're:^https?://.*\.jpg', 
  39                 'timestamp': 1410113864, 
  40                 'upload_date': '20140907', 
  45                 'skip_download': True, 
  50             'url': 'http://www.vgtv.no/#!/live/100015/direkte-her-kan-du-se-laksen-live-fra-suldalslaagen', 
  54                 'title': 'DIREKTE: Her kan du se laksen live fra Suldalslågen!', 
  55                 'description': 'md5:9a60cc23fa349f761628924e56eeec2d', 
  56                 'thumbnail': 're:^https?://.*\.jpg', 
  58                 'timestamp': 1407423348, 
  59                 'upload_date': '20140807', 
  64                 'skip_download': True, 
  69     def _real_extract(self
, url
): 
  70         video_id 
= self
._match
_id
(url
) 
  71         data 
= self
._download
_json
( 
  72             'http://svp.vg.no/svp/api/v1/vgtv/assets/%s?appName=vgtv-website' % video_id
, 
  73             video_id
, 'Downloading media JSON') 
  75         streams 
= data
['streamUrls'] 
  79         hls_url 
= streams
.get('hls') 
  81             formats
.extend(self
._extract
_m
3u8_formats
(hls_url
, video_id
, 'mp4')) 
  83         hds_url 
= streams
.get('hds') 
  85             formats
.extend(self
._extract
_f
4m
_formats
(hds_url 
+ '?hdcore=3.2.0&plugin=aasp-3.2.0.77.18', video_id
)) 
  87         mp4_url 
= streams
.get('mp4') 
  89             _url 
= hls_url 
or hds_url
 
  90             MP4_URL_TEMPLATE 
= '%s/%%s.%s' % (mp4_url
.rpartition('/')[0], mp4_url
.rpartition('.')[-1]) 
  91             for mp4_format 
in _url
.split(','): 
  92                 m 
= re
.search('(?P<width>\d+)_(?P<height>\d+)_(?P<vbr>\d+)', mp4_format
) 
  95                 width 
= int(m
.group('width')) 
  96                 height 
= int(m
.group('height')) 
  97                 vbr 
= int(m
.group('vbr')) 
  99                     'url': MP4_URL_TEMPLATE 
% mp4_format
, 
 100                     'format_id': 'mp4-%s' % vbr
, 
 106         self
._sort
_formats
(formats
) 
 110             'title': data
['title'], 
 111             'description': data
['description'], 
 112             'thumbnail': data
['images']['main'] + '?t[]=900x506q80', 
 113             'timestamp': data
['published'], 
 114             'duration': float_or_none(data
['duration'], 1000), 
 115             'view_count': data
['displays'],