]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/rtlnl.py 
3e22998c6d8384893ac801c98c4f6bde6988c2d1
   2  from  __future__ 
import  unicode_literals
   4  from  . common 
import  InfoExtractor
  11  class  RtlNlIE ( InfoExtractor
):   13      IE_DESC 
=  'rtl.nl and rtlxl.nl'   17              rtlxl\.nl/[^\#]*\#!/[^/]+/|   18              rtl\.nl/(?:system/videoplayer/(?:[^/]+/)+(?:video_)?embed\.html\b.+?\buuid=|video/)   23          'url' :  'http://www.rtlxl.nl/#!/rtl-nieuws-132237/82b1aad1-4a14-3d7b-b554-b0aed1b2c416' ,   24          'md5' :  '473d1946c1fdd050b2c0161a4b13c373' ,   26              'id' :  '82b1aad1-4a14-3d7b-b554-b0aed1b2c416' ,   28              'title' :  'RTL Nieuws' ,   29              'description' :  'md5:d41d8cd98f00b204e9800998ecf8427e' ,   30              'timestamp' :  1461951000 ,   31              'upload_date' :  '20160429' ,   35          # best format avaialble a3t   36          'url' :  'http://www.rtl.nl/system/videoplayer/derden/rtlnieuws/video_embed.html#uuid=84ae5571-ac25-4225-ae0c-ef8d9efb2aed/autoplay=false' ,   37          'md5' :  'dea7474214af1271d91ef332fb8be7ea' ,   39              'id' :  '84ae5571-ac25-4225-ae0c-ef8d9efb2aed' ,   41              'timestamp' :  1424039400 ,   42              'title' :  'RTL Nieuws - Nieuwe beelden Kopenhagen: chaos direct na aanslag' ,   43              'thumbnail' :  r
're:^https?://screenshots\.rtl\.nl/(?:[^/]+/)*sz=[0-9]+x[0-9]+/uuid=84ae5571-ac25-4225-ae0c-ef8d9efb2aed$' ,   44              'upload_date' :  '20150215' ,   45              'description' :  'Er zijn nieuwe beelden vrijgegeven die vlak na de aanslag in Kopenhagen zijn gemaakt. Op de video is goed te zien hoe omstanders zich bekommeren om één van de slachtoffers, terwijl de eerste agenten ter plaatse komen.' ,   48          # empty synopsis and missing episodes (see https://github.com/rg3/youtube-dl/issues/6275)   49          # best format available nettv   50          'url' :  'http://www.rtl.nl/system/videoplayer/derden/rtlnieuws/video_embed.html#uuid=f536aac0-1dc3-4314-920e-3bd1c5b3811a/autoplay=false' ,   52              'id' :  'f536aac0-1dc3-4314-920e-3bd1c5b3811a' ,   54              'title' :  'RTL Nieuws - Meer beelden van overval juwelier' ,   55              'thumbnail' :  r
're:^https?://screenshots\.rtl\.nl/(?:[^/]+/)*sz=[0-9]+x[0-9]+/uuid=f536aac0-1dc3-4314-920e-3bd1c5b3811a$' ,   56              'timestamp' :  1437233400 ,   57              'upload_date' :  '20150718' ,   61              'skip_download' :  True ,   64          # encrypted m3u8 streams, georestricted   65          'url' :  'http://www.rtlxl.nl/#!/afl-2-257632/52a74543-c504-4cde-8aa8-ec66fe8d68a7' ,   66          'only_matching' :  True ,   68          'url' :  'http://www.rtl.nl/system/videoplayer/derden/embed.html#!/uuid=bb0353b0-d6a4-1dad-90e9-18fe75b8d1f0' ,   69          'only_matching' :  True ,   71          'url' :  'http://rtlxl.nl/?_ga=1.204735956.572365465.1466978370#!/rtl-nieuws-132237/3c487912-023b-49ac-903e-2c5d79f8410f' ,   72          'only_matching' :  True ,   74          'url' :  'https://www.rtl.nl/video/c603c9c2-601d-4b5e-8175-64f1e942dc7d/' ,   75          'only_matching' :  True ,   78      def  _real_extract ( self
,  url
):   79          uuid 
=  self
._ match
_ id
( url
)   80          info 
=  self
._ download
_ json
(   81              'http://www.rtl.nl/system/s4m/vfd/version=2/uuid= %s /fmt=adaptive/'  %  uuid
,   84          material 
=  info
[ 'material' ][ 0 ]   85          title 
=  info
[ 'abstracts' ][ 0 ][ 'name' ]   86          subtitle 
=  material
. get ( 'title' )   88              title 
+=  ' -  %s '  %  subtitle
  89          description 
=  material
. get ( 'synopsis' )   91          meta 
=  info
. get ( 'meta' , {})   93          # m3u8 streams are encrypted and may not be handled properly by older ffmpeg/avconv.   94          # To workaround this previously adaptive -> flash trick was used to obtain   95          # unencrypted m3u8 streams (see https://github.com/rg3/youtube-dl/issues/4118)   96          # and bypass georestrictions as well.   97          # Currently, unencrypted m3u8 playlists are (intentionally?) invalid and therefore   98          # unusable albeit can be fixed by simple string replacement (see   99          # https://github.com/rg3/youtube-dl/pull/6337)  100          # Since recent ffmpeg and avconv handle encrypted streams just fine encrypted  101          # streams are used now.  102          videopath 
=  material
[ 'videopath' ]  103          m3u8_url 
=  meta
. get ( 'videohost' ,  'http://manifest.us.rtl.nl' ) +  videopath
 105          formats 
=  self
._ extract
_ m
3u8_ formats
(  106              m3u8_url
,  uuid
,  'mp4' ,  m3u8_id
= 'hls' ,  fatal
= False )  108          video_urlpart 
=  videopath
. split ( '/adaptive/' )[ 1 ][:- 5 ]  109          PG_URL_TEMPLATE 
=  'http://pg.us.rtl.nl/rtlxl/network/ %s /progressive/ %s .mp4'  114              ( 'nettv' ,  1280 ,  720 ),  117          def  pg_format ( format_id
,  width
,  height
):  119                  'url' :  PG_URL_TEMPLATE 
% ( format_id
,  video_urlpart
),  120                  'format_id' :  'pg- %s '  %  format_id
,  127              formats 
= [ pg_format (* pg_tuple
)  for  pg_tuple 
in  PG_FORMATS
]  130              for  format_id
,  width
,  height 
in  PG_FORMATS
:  132                      # Find hls format with the same width and height corresponding  133                      # to progressive format and copy metadata from it.  134                      f 
=  next ( f 
for  f 
in  formats 
if  f
. get ( 'height' ) ==  height
)  135                      # hls formats may have invalid width  138                      f_copy
. update ( pg_format ( format_id
,  width
,  height
))  139                      pg_formats
. append ( f_copy
)  140                  except  StopIteration :  141                      # Missing hls format does mean that no progressive format with  142                      # such width and height exists either.  144              formats
. extend ( pg_formats
)  145          self
._ sort
_ formats
( formats
)  149          for  p 
in  ( 'poster_base_url' ,  '"thumb_base_url"' ):  154                  'url' :  self
._ proto
_ relative
_u rl
( meta
[ p
] +  uuid
),  155                  'width' :  int_or_none ( self
._ search
_ regex
(  156                      r
'/sz=([0-9]+)' ,  meta
[ p
],  'thumbnail width' ,  fatal
= False )),  157                  'height' :  int_or_none ( self
._ search
_ regex
(  158                      r
'/sz=[0-9]+x([0-9]+)' ,  159                      meta
[ p
],  'thumbnail height' ,  fatal
= False ))  166              'timestamp' :  material
[ 'original_date' ],  167              'description' :  description
,  168              'duration' :  parse_duration ( material
. get ( 'duration' )),  169              'thumbnails' :  thumbnails
,