2013-10-05 09:37:11 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# encoding: utf-8  
						 
					
						
							
								
									
										
										
										
											2014-02-24 14:44:29 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  __future__  import  unicode_literals  
						 
					
						
							
								
									
										
										
										
											2014-05-28 19:38:44 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 19:53:14 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  re  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-05 09:37:11 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								from  . common  import  InfoExtractor  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . . utils  import  (  
						 
					
						
							
								
									
										
										
										
											2014-05-28 19:38:44 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int_or_none , 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    unified_strdate , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    js_to_json , 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-05 09:37:11 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-07 11:52:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  ScreenwaveMediaIE ( InfoExtractor ) :  
						 
					
						
							
								
									
										
										
										
											2015-08-29 19:05:11 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://player \ d? \ .screenwavemedia \ .com/(?:play/)?[a-zA-Z]+ \ .php \ ?.* \ bid=(?P<id>[A-Za-z0-9-]+) ' 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-29 18:57:44 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    EMBED_PATTERN  =  r ' src=([ " \' ])(?P<url>(?:https?:)?//player \ d? \ .screenwavemedia \ .com/(?:play/)?[a-zA-Z]+ \ .php \ ?.* \ bid=.+?) \ 1 ' 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _TESTS  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://player.screenwavemedia.com/play/play.php?playerdiv=videoarea&companiondiv=squareAd&id=Cinemassacre-19911 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' only_matching ' :  True , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-07 11:51:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_id  =  self . _match_id ( url ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-14 16:39:35 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        playerdata  =  self . _download_webpage ( 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' http://player.screenwavemedia.com/player.php?id= %s '  %  video_id , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-14 16:39:35 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            video_id ,  ' Downloading player webpage ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-07 11:51:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        vidtitle  =  self . _search_regex ( 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            r ' \' vidtitle \' \ s*: \ s* " ([^ " ]+) " ' ,  playerdata ,  ' vidtitle ' ) . replace ( ' \\ / ' ,  ' / ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        playerconfig  =  self . _download_webpage ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' http://player.screenwavemedia.com/player.js ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_id ,  ' Downloading playerconfig webpage ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-29 08:00:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        videoserver  =  self . _search_regex ( r ' SWMServer \ s*= \ s* " ([ \ d \ .]+) " ' ,  playerdata ,  ' videoserver ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sources  =  self . _parse_json ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            js_to_json ( 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 19:53:14 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                re . sub ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    r ' (?s)/ \ *.*? \ */ ' ,  ' ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        r " sources \ s*: \ s*( \ [[^ \ ]]+? \ ]) " ,  playerconfig , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ' sources ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ) . replace ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        " '  + thisObj.options.videoserver +  ' " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        videoserver 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ) . replace ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        " '  + playerVidId +  ' " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        video_id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ) , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 20:18:15 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            video_id ,  fatal = False 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 20:18:15 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Fallback to hardcoded sources if JS changes again 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  sources : 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-29 08:01:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            self . report_warning ( ' Falling back to a hardcoded list of streams ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 20:18:15 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            sources  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' file ' :  ' http:// %s /vod/ %s _ %s .mp4 '  %  ( videoserver ,  video_id ,  format_id ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' type ' :  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' label ' :  format_label , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  for  format_id ,  format_label  in  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ( ' low ' ,  ' 144p Low ' ) ,  ( ' med ' ,  ' 160p Med ' ) ,  ( ' high ' ,  ' 360p High ' ) ,  ( ' hd1 ' ,  ' 720p HD1 ' ) ) ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sources . append ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' file ' :  ' http:// %s /vod/smil: %s .smil/playlist.m3u8 '  %  ( videoserver ,  video_id ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' type ' :  ' hls ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        formats  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  source  in  sources : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  source [ ' type ' ]  ==  ' hls ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                formats . extend ( self . _extract_m3u8_formats ( source [ ' file ' ] ,  video_id ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 20:18:15 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                file_  =  source . get ( ' file ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  not  file_ : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continue 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                format_label  =  source . get ( ' label ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 20:18:15 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                format_id  =  self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    r ' _(.+?) \ .[^.]+$ ' ,  file_ ,  ' format id ' ,  default = None ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                height  =  int_or_none ( self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    r ' ^( \ d+)[pP] ' ,  format_label ,  ' height ' ,  default = None ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                formats . append ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ' url ' :  source [ ' file ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 20:18:15 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ' format_id ' :  format_id , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-22 12:34:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ' format ' :  format_label , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ' ext ' :  source . get ( ' type ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ' height ' :  height , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        self . _sort_formats ( formats ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-05 09:37:11 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-23 20:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-11 20:36:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' id ' :  video_id , 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-07 11:51:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' title ' :  vidtitle , 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-11 20:36:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' formats ' :  formats , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-07 11:51:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  TeamFourIE ( InfoExtractor ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://(?:www \ .)?teamfourstar \ .com/video/(?P<id>[a-z0-9 \ -]+)/? ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _TEST  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://teamfourstar.com/video/a-moment-with-tfs-episode-4/ ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' TeamFourStar-5292a02f20bfa ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' upload_date ' :  ' 20130401 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' Check out this and more on our website: http://teamfourstar.com \n TFS Store: http://sharkrobot.com/team-four-star \n Follow on Twitter: http://twitter.com/teamfourstar \n Like on FB: http://facebook.com/teamfourstar ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  ' A Moment With TFS Episode 4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-07 11:51:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        display_id  =  self . _match_id ( url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( url ,  display_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        playerdata_url  =  self . _search_regex ( 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-14 16:39:35 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            r ' src= " (http://player \ d? \ .screenwavemedia \ .com/(?:play/)?[a-zA-Z]+ \ .php \ ?[^ " ]* \ bid=.+?) " ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            webpage ,  ' player data URL ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_title  =  self . _html_search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' <div class= " heroheadingtitle " >(?P<title>.+?)</div> ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            webpage ,  ' title ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_date  =  unified_strdate ( self . _html_search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' <div class= " heroheadingdate " >(?P<date>.+?)</div> ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            webpage ,  ' date ' ,  fatal = False ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_description  =  self . _html_search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' (?s)<div class= " postcontent " >(?P<description>.+?)</div> ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            webpage ,  ' description ' ,  fatal = False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_thumbnail  =  self . _og_search_thumbnail ( webpage ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-07 11:51:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-12 02:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' _type ' :  ' url_transparent ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' display_id ' :  display_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  video_title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  video_description , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' upload_date ' :  video_date , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' thumbnail ' :  video_thumbnail , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' url ' :  playerdata_url , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }