]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/aftonbladet.py
   2 from __future__ 
import unicode_literals
 
   4 from .common 
import InfoExtractor
 
   5 from ..utils 
import int_or_none
 
   8 class AftonbladetIE(InfoExtractor
): 
   9     _VALID_URL 
= r
'http://tv\.aftonbladet\.se/webbtv.+?(?P<id>article[0-9]+)\.ab(?:$|[?#])' 
  11         'url': 'http://tv.aftonbladet.se/webbtv/nyheter/vetenskap/rymden/article36015.ab', 
  15             'title': 'Vulkanutbrott i rymden - nu släpper NASA bilderna', 
  16             'description': 'Jupiters måne mest aktiv av alla himlakroppar', 
  17             'timestamp': 1394142732, 
  18             'upload_date': '20140306', 
  22     def _real_extract(self
, url
): 
  23         video_id 
= self
._match
_id
(url
) 
  24         webpage 
= self
._download
_webpage
(url
, video_id
) 
  26         # find internal video meta data 
  27         meta_url 
= 'http://aftonbladet-play.drlib.aptoma.no/video/%s.json' 
  28         internal_meta_id 
= self
._html
_search
_regex
( 
  29             r
'data-aptomaId="([\w\d]+)"', webpage
, 'internal_meta_id') 
  30         internal_meta_url 
= meta_url 
% internal_meta_id
 
  31         internal_meta_json 
= self
._download
_json
( 
  32             internal_meta_url
, video_id
, 'Downloading video meta data') 
  34         # find internal video formats 
  35         format_url 
= 'http://aftonbladet-play.videodata.drvideo.aptoma.no/actions/video/?id=%s' 
  36         internal_video_id 
= internal_meta_json
['videoId'] 
  37         internal_formats_url 
= format_url 
% internal_video_id
 
  38         internal_formats_json 
= self
._download
_json
( 
  39             internal_formats_url
, video_id
, 'Downloading video formats') 
  42         for fmt 
in internal_formats_json
['formats']['http']['pseudostreaming']['mp4']: 
  45                 'url': 'http://%s:%d/%s/%s' % (p
['address'], p
['port'], p
['path'], p
['filename']), 
  47                 'width': int_or_none(fmt
.get('width')), 
  48                 'height': int_or_none(fmt
.get('height')), 
  49                 'tbr': int_or_none(fmt
.get('bitrate')), 
  52         self
._sort
_formats
(formats
) 
  56             'title': internal_meta_json
['title'], 
  58             'thumbnail': internal_meta_json
.get('imageUrl'), 
  59             'description': internal_meta_json
.get('shortPreamble'), 
  60             'timestamp': int_or_none(internal_meta_json
.get('timePublished')), 
  61             'duration': int_or_none(internal_meta_json
.get('duration')), 
  62             'view_count': int_or_none(internal_meta_json
.get('views')),