2014-01-29 15:34:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  __future__  import  unicode_literals  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  base64  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  re  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . common  import  InfoExtractor  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . . utils  import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    compat_urllib_parse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  InfoQIE ( InfoExtractor ) :  
						 
					
						
							
								
									
										
										
										
											2014-02-02 12:03:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://(?:www \ .)?infoq \ .com/[^/]+/(?P<id>[^/]+)$ ' 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-27 20:27:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _TEST  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 15:34:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        " name " :  " InfoQ " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " url " :  " http://www.infoq.com/presentations/A-Few-of-My-Favorite-Python-Things " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " file " :  " 12-jan-pythonthings.mp4 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " info_dict " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " description " :  " Mike Pirnat presents some tips and tricks, standard libraries and third party packages that make programming in Python a richer experience. " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " title " :  " A Few of My Favorite [Python] Things " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        " params " :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " skip_download " :  True , 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-27 20:27:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mobj  =  re . match ( self . _VALID_URL ,  url ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-02 12:03:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_id  =  mobj . group ( ' id ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-02 12:03:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( url ,  video_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Extract video URL 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 15:34:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        encoded_id  =  self . _search_regex ( r " jsclassref ?= ? ' ([^ ' ]*) ' " ,  webpage ,  ' encoded id ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        real_id  =  compat_urllib_parse . unquote ( base64 . b64decode ( encoded_id . encode ( ' ascii ' ) ) . decode ( ' utf-8 ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        video_url  =  ' rtmpe://video.infoq.com/cfx/st/ '  +  real_id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Extract title 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_title  =  self . _search_regex ( r ' contentTitle =  " (.*?) " ; ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 15:34:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            webpage ,  ' title ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Extract description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_description  =  self . _html_search_regex ( r ' <meta name= " description "  content= " (.*) " (?: \ s*/)?> ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 15:34:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            webpage ,  ' description ' ,  fatal = False ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_filename  =  video_url . split ( ' / ' ) [ - 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_id ,  extension  =  video_filename . split ( ' . ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 15:34:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            ' id ' :  video_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' url ' :  video_url , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  video_title , 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-02 12:03:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' ext ' :  extension ,   # Extension is always(?) mp4, but seems to be flv 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:14:19 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            ' description ' :  video_description , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }