2014-10-23 16:55:39 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# coding: utf-8  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  __future__  import  unicode_literals  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . common  import  InfoExtractor  
						 
					
						
							
								
									
										
										
										
											2014-10-23 23:54:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . soundcloud  import  SoundcloudIE  
						 
					
						
							
								
									
										
										
										
											2014-10-24 21:07:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . . utils  import  ExtractorError  
						 
					
						
							
								
									
										
										
										
											2014-10-26 23:13:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 16:55:39 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  time  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  AudiomackIE ( InfoExtractor ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://(?:www \ .)?audiomack \ .com/song/(?P<id>[ \ w/-]+) ' 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 23:54:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IE_NAME  =  ' audiomack ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _TESTS  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        #hosted on audiomack 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' url ' :  ' http://www.audiomack.com/song/roosh-williams/extraordinary ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' info_dict ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-24 21:07:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' id '  :  ' roosh-williams/extraordinary ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 23:54:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' ext ' :  ' mp3 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' title ' :  ' Roosh Williams - Extraordinary ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        #hosted on soundcloud via audiomack 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' url ' :  ' http://www.audiomack.com/song/xclusiveszone/take-kare ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' file ' :  ' 172419696.mp3 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' info_dict ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' ext ' :  ' mp3 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' title ' :  ' Young Thug ft Lil Wayne - Take Kare ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " upload_date " :  " 20141016 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " description " :  " New track produced by London On Da Track called “Take Kare \" \n \n http://instagram.com/theyoungthugworld \n https://www.facebook.com/ThuggerThuggerCashMoney \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                " uploader " :  " Young Thug World " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 16:55:39 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 23:54:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 16:55:39 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 08:58:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_id  =  self . _match_id ( url ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 16:55:39 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 08:58:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        api_response  =  self . _download_json ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " http://www.audiomack.com/api/music/url/song/ %s ?_= %d "  %  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_id ,  time . time ( ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-24 21:07:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 08:58:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  " url "  not  in  api_response : 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-24 21:07:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            raise  ExtractorError ( " Unable to deduce api url of song " ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 08:58:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        realurl  =  api_response [ " url " ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-23 23:54:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        #Audiomack wraps a lot of soundcloud tracks in their branded wrapper 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # - if so, pass the work off to the soundcloud extractor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  SoundcloudIE . suitable ( realurl ) : 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-24 21:11:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  { ' _type ' :  ' url ' ,  ' url ' :  realurl ,  ' ie_key ' :  ' Soundcloud ' } 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-25 08:58:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( url ,  video_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        artist  =  self . _html_search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' <span class= " artist " >(.*?)</span> ' ,  webpage ,  " artist " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        songtitle  =  self . _html_search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' <h1 class= " profile-title song-title " ><span class= " artist " >.*?</span>(.*?)</h1> ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            webpage ,  " title " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        title  =  artist  +  "  -  "  +  songtitle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  video_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' url ' :  realurl , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }