]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/abc.py 
0247cabf9df8a6c61602085dcabe5f139b53420a
   1  from  __future__ 
import  unicode_literals
   5  from  . common 
import  InfoExtractor
  14  class  ABCIE ( InfoExtractor
):   15      IE_NAME 
=  'abc.net.au'   16      _VALID_URL 
=  r
'https?://(?:www\.)?abc\.net\.au/news/(?:[^/]+/){1,2}(?P<id>\d+)'   19          'url' :  'http://www.abc.net.au/news/2014-11-05/australia-to-staff-ebola-treatment-centre-in-sierra-leone/5868334' ,   20          'md5' :  'cb3dd03b18455a661071ee1e28344d9f' ,   24              'title' :  'Australia to help staff Ebola treatment centre in Sierra Leone' ,   25              'description' :  'md5:809ad29c67a05f54eb41f2a105693a67' ,   27          'skip' :  'this video has expired' ,   29          'url' :  'http://www.abc.net.au/news/2015-08-17/warren-entsch-introduces-same-sex-marriage-bill/6702326' ,   30          'md5' :  'db2a5369238b51f9811ad815b69dc086' ,   34              'upload_date' :  '20150816' ,   35              'uploader' :  'ABC News (Australia)' ,   36              'description' :  'Government backbencher Warren Entsch introduces a cross-party sponsored bill to legalise same-sex marriage, saying the bill is designed to promote "an inclusive Australia, not a divided one.". Read more here: http://ab.co/1Mwc6ef' ,   37              'uploader_id' :  'NewsOnABC' ,   38              'title' :  'Marriage Equality: Warren Entsch introduces same sex marriage bill' ,   40          'add_ie' : [ 'Youtube' ],   41          'skip' :  'Not accessible from Travis CI server' ,   43          'url' :  'http://www.abc.net.au/news/2015-10-23/nab-lifts-interest-rates-following-westpac-and-cba/6880080' ,   44          'md5' :  'b96eee7c9edf4fc5a358a0252881cc1f' ,   48              'title' :  'NAB lifts interest rates, following Westpac and CBA' ,   49              'description' :  'md5:f13d8edc81e462fce4a0437c7dc04728' ,   52          'url' :  'http://www.abc.net.au/news/2015-10-19/6866214' ,   53          'only_matching' :  True ,   56      def  _real_extract ( self
,  url
):   57          video_id 
=  self
._ match
_ id
( url
)   58          webpage 
=  self
._ download
_ webpage
( url
,  video_id
)   61              r
'inline(?P<type>Video|Audio|YouTube)Data\.push\((?P<json_data>[^)]+)\);' ,   64              expired 
=  self
._ html
_ search
_ regex
( r
'(?s)class="expired-(?:video|audio)".+?<span>(.+?)</span>' ,  webpage
,  'expired' ,  None )   66                  raise  ExtractorError ( ' %s  said:  %s '  % ( self
. IE_NAME
,  expired
),  expected
= True )   67              raise  ExtractorError ( 'Unable to extract video urls' )   69          urls_info 
=  self
._ parse
_ json
(   70              mobj
. group ( 'json_data' ),  video_id
,  transform_source
= js_to_json
)   72          if not  isinstance ( urls_info
,  list ):   73              urls_info 
= [ urls_info
]   75          if  mobj
. group ( 'type' ) ==  'YouTube' :   76              return  self
. playlist_result ([   77                  self
. url_result ( url_info
[ 'url' ])  for  url_info 
in  urls_info
])   80              'url' :  url_info
[ 'url' ],   81              'vcodec' :  url_info
. get ( 'codec' )  if  mobj
. group ( 'type' ) ==  'Video'  else  'none' ,   82              'width' :  int_or_none ( url_info
. get ( 'width' )),   83              'height' :  int_or_none ( url_info
. get ( 'height' )),   84              'tbr' :  int_or_none ( url_info
. get ( 'bitrate' )),   85              'filesize' :  int_or_none ( url_info
. get ( 'filesize' )),   86          }  for  url_info 
in  urls_info
]   88          self
._ sort
_ formats
( formats
)   92              'title' :  self
._ og
_ search
_ title
( webpage
),   94              'description' :  self
._ og
_ search
_ description
( webpage
),   95              'thumbnail' :  self
._ og
_ search
_ thumbnail
( webpage
),   99  class  ABCIViewIE ( InfoExtractor
):  100      IE_NAME 
=  'abc.net.au:iview'  101      _VALID_URL 
=  r
'https?://iview\.abc\.net\.au/programs/[^/]+/(?P<id>[^/?#]+)'  103      # ABC iview programs are normally available for 14 days only.  105          'url' :  'http://iview.abc.net.au/programs/diaries-of-a-broken-mind/ZX9735A001S00' ,  106          'md5' :  'cde42d728b3b7c2b32b1b94b4a548afc' ,  108              'id' :  'ZX9735A001S00' ,  110              'title' :  'Diaries Of A Broken Mind' ,  111              'description' :  'md5:7de3903874b7a1be279fe6b68718fc9e' ,  112              'upload_date' :  '20161010' ,  113              'uploader_id' :  'abc2' ,  114              'timestamp' :  1476064920 ,  116          'skip' :  'Video gone' ,  119      def  _real_extract ( self
,  url
):  120          video_id 
=  self
._ match
_ id
( url
)  121          webpage 
=  self
._ download
_ webpage
( url
,  video_id
)  122          video_params 
=  self
._ parse
_ json
( self
._ search
_ regex
(  123              r
'videoParams\s*=\s*({.+?});' ,  webpage
,  'video params' ),  video_id
)  124          title 
=  video_params
. get ( 'title' )  or  video_params
[ 'seriesTitle' ]  125          stream 
=  next ( s 
for  s 
in  video_params
[ 'playlist' ]  if  s
. get ( 'type' ) ==  'program' )  127          formats 
=  self
._ extract
_ akamai
_ formats
( stream
[ 'hds-unmetered' ],  video_id
)  128          self
._ sort
_ formats
( formats
)  131          src_vtt 
=  stream
. get ( 'captions' , {}). get ( 'src-vtt' )  141              'description' :  self
._ html
_ search
_ meta
([ 'og:description' ,  'twitter:description' ],  webpage
),  142              'thumbnail' :  self
._ html
_ search
_ meta
([ 'og:image' ,  'twitter:image:src' ],  webpage
),  143              'duration' :  int_or_none ( video_params
. get ( 'eventDuration' )),  144              'timestamp' :  parse_iso8601 ( video_params
. get ( 'pubDate' ),  ' ' ),  145              'series' :  video_params
. get ( 'seriesTitle' ),  146              'series_id' :  video_params
. get ( 'seriesHouseNumber' )  or  video_id
[: 7 ],  147              'episode_number' :  int_or_none ( self
._ html
_ search
_ meta
( 'episodeNumber' ,  webpage
,  default
= None )),  148              'episode' :  self
._ html
_ search
_ meta
( 'episode_title' ,  webpage
,  default
= None ),  149              'uploader_id' :  video_params
. get ( 'channel' ),  151              'subtitles' :  subtitles
,