2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  __future__  import  unicode_literals  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 05:28:58 +10:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  hashlib  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  hmac  
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  re  
						 
					
						
							
								
									
										
										
										
											2017-11-18 05:28:58 +10:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  time  
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . common  import  InfoExtractor  
						 
					
						
							
								
									
										
										
										
											2017-07-09 17:55:40 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . . compat  import  compat_str  
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . . utils  import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ExtractorError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    js_to_json , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:11:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int_or_none , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    parse_iso8601 , 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-09 17:55:40 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    try_get , 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-27 15:08:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    unescapeHTML , 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 01:22:15 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    update_url_query , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  ABCIE ( InfoExtractor ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IE_NAME  =  ' abc.net.au ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-08 18:29:05 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://(?:www \ .)?abc \ .net \ .au/news/(?:[^/]+/) { 1,2}(?P<id> \ d+) ' 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _TESTS  =  [ { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-05 14:30:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.abc.net.au/news/2014-11-05/australia-to-staff-ebola-treatment-centre-in-sierra-leone/5868334 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' md5 ' :  ' cb3dd03b18455a661071ee1e28344d9f ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-05 14:30:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' id ' :  ' 5868334 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-05 14:30:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' title ' :  ' Australia to help staff Ebola treatment centre in Sierra Leone ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' md5:809ad29c67a05f54eb41f2a105693a67 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-21 13:07:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' skip ' :  ' this video has expired ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.abc.net.au/news/2015-08-17/warren-entsch-introduces-same-sex-marriage-bill/6702326 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' md5 ' :  ' db2a5369238b51f9811ad815b69dc086 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' NvqvPeNZsHU ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' upload_date ' :  ' 20150816 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' uploader ' :  ' ABC News (Australia) ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' 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 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' uploader_id ' :  ' NewsOnABC ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  ' Marriage Equality: Warren Entsch introduces same sex marriage bill ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' add_ie ' :  [ ' Youtube ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-21 13:07:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' skip ' :  ' Not accessible from Travis CI server ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 07:09:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.abc.net.au/news/2015-10-23/nab-lifts-interest-rates-following-westpac-and-cba/6880080 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' md5 ' :  ' b96eee7c9edf4fc5a358a0252881cc1f ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' 6880080 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp3 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  ' NAB lifts interest rates, following Westpac and CBA ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' md5:f13d8edc81e462fce4a0437c7dc04728 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-24 12:31:42 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.abc.net.au/news/2015-10-19/6866214 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' only_matching ' :  True , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-28 09:31:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_id  =  self . _match_id ( url ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( url ,  video_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        mobj  =  re . search ( 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 07:09:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            r ' inline(?P<type>Video|Audio|YouTube)Data \ .push \ ((?P<json_data>[^)]+) \ ); ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            webpage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  mobj  is  None : 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-21 13:07:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            expired  =  self . _html_search_regex ( r ' (?s)class= " expired-(?:video|audio) " .+?<span>(.+?)</span> ' ,  webpage ,  ' expired ' ,  None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  expired : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                raise  ExtractorError ( ' %s  said:  %s '  %  ( self . IE_NAME ,  expired ) ,  expected = True ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:08:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            raise  ExtractorError ( ' Unable to extract video urls ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        urls_info  =  self . _parse_json ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mobj . group ( ' json_data ' ) ,  video_id ,  transform_source = js_to_json ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  isinstance ( urls_info ,  list ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            urls_info  =  [ urls_info ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  mobj . group ( ' type ' )  ==  ' YouTube ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  self . playlist_result ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                self . url_result ( url_info [ ' url ' ] )  for  url_info  in  urls_info ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        formats  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' url ' :  url_info [ ' url ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 07:09:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' vcodec ' :  url_info . get ( ' codec ' )  if  mobj . group ( ' type ' )  ==  ' Video '  else  ' none ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-30 01:11:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' width ' :  int_or_none ( url_info . get ( ' width ' ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' height ' :  int_or_none ( url_info . get ( ' height ' ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' tbr ' :  int_or_none ( url_info . get ( ' bitrate ' ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' filesize ' :  int_or_none ( url_info . get ( ' filesize ' ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        }  for  url_info  in  urls_info ] 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 07:09:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-26 00:05:37 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        self . _sort_formats ( formats ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  video_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  self . _og_search_title ( webpage ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' formats ' :  formats , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  self . _og_search_description ( webpage ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' thumbnail ' :  self . _og_search_thumbnail ( webpage ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  ABCIViewIE ( InfoExtractor ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IE_NAME  =  ' abc.net.au:iview ' 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://iview \ .abc \ .net \ .au/(?:[^/]+/)*video/(?P<id>[^/?#]+) ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 01:22:15 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _GEO_COUNTRIES  =  [ ' AU ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-11 04:06:00 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # ABC iview programs are normally available for 14 days only. 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _TESTS  =  [ { 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' url ' :  ' https://iview.abc.net.au/show/ben-and-hollys-little-kingdom/series/0/video/ZX9371A050S00 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-11 12:53:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' md5 ' :  ' cde42d728b3b7c2b32b1b94b4a548afc ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' id ' :  ' ZX9371A050S00 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' title ' :  " Gaston ' s Birthday " , 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-27 15:08:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' series ' :  " Ben And Holly ' s Little Kingdom " , 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' description ' :  ' md5:f9de914d02f226968f598ac76f105bcf ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' upload_date ' :  ' 20180604 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-27 15:08:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' uploader_id ' :  ' abc4kids ' , 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' timestamp ' :  1528140219 , 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 01:22:15 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' params ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' skip_download ' :  True , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_id  =  self . _match_id ( url ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_params  =  self . _download_json ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' https://iview.abc.net.au/api/programs/ '  +  video_id ,  video_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        title  =  unescapeHTML ( video_params . get ( ' title ' )  or  video_params [ ' seriesTitle ' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        stream  =  next ( s  for  s  in  video_params [ ' playlist ' ]  if  s . get ( ' type ' )  in  ( ' program ' ,  ' livestream ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        house_number  =  video_params . get ( ' episodeHouseNumber ' )  or  video_id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        path  =  ' /auth/hls/sign?ts= {0} &hn= {1} &d=android-tablet ' . format ( 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 01:22:15 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            int ( time . time ( ) ) ,  house_number ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sig  =  hmac . new ( 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            b ' android.content.res.Resources ' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 01:22:15 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            path . encode ( ' utf-8 ' ) ,  hashlib . sha256 ) . hexdigest ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        token  =  self . _download_webpage ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' http://iview.abc.net.au {0} &sig= {1} ' . format ( path ,  sig ) ,  video_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-18 05:28:58 +10:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        def  tokenize_url ( url ,  token ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 01:22:15 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  update_url_query ( url ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' hdnea ' :  token , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  sd  in  ( ' sd ' ,  ' sd-low ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sd_url  =  try_get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                stream ,  lambda  x :  x [ ' streams ' ] [ ' hls ' ] [ sd ] ,  compat_str ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  not  sd_url : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            formats  =  self . _extract_m3u8_formats ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                tokenize_url ( sd_url ,  token ) ,  video_id ,  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                entry_protocol = ' m3u8_native ' ,  m3u8_id = ' hls ' ,  fatal = False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  formats : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        self . _sort_formats ( formats ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        subtitles  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        src_vtt  =  stream . get ( ' captions ' ,  { } ) . get ( ' src-vtt ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  src_vtt : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            subtitles [ ' en ' ]  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' url ' :  src_vtt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' ext ' :  ' vtt ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        is_live  =  video_params . get ( ' livestream ' )  ==  ' 1 ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  is_live : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            title  =  self . _live_title ( title ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  video_id , 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' title ' :  title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  video_params . get ( ' description ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' thumbnail ' :  video_params . get ( ' thumbnail ' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' duration ' :  int_or_none ( video_params . get ( ' eventDuration ' ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' timestamp ' :  parse_iso8601 ( video_params . get ( ' pubDate ' ) ,  '   ' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-27 15:08:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' series ' :  unescapeHTML ( video_params . get ( ' seriesTitle ' ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' series_id ' :  video_params . get ( ' seriesHouseNumber ' )  or  video_id [ : 7 ] , 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 20:25:50 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' season_number ' :  int_or_none ( self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                r ' \ bSeries \ s+( \ d+) \ b ' ,  title ,  ' season number ' ,  default = None ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' episode_number ' :  int_or_none ( self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                r ' \ bEp \ s+( \ d+) \ b ' ,  title ,  ' episode number ' ,  default = None ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' episode_id ' :  house_number , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' uploader_id ' :  video_params . get ( ' channel ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' formats ' :  formats , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' subtitles ' :  subtitles , 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-12 13:07:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' is_live ' :  is_live , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 00:06:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }