| 
									
										
										
										
											2014-06-25 18:07:23 +02:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import InfoExtractor | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-25 23:47:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-25 18:07:23 +02:00
										 |  |  | class SoundgasmIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2015-02-23 21:27:56 +06:00
										 |  |  |     IE_NAME = 'soundgasm' | 
					
						
							| 
									
										
										
										
											2014-06-25 18:07:23 +02:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?soundgasm\.net/u/(?P<user>[0-9a-zA-Z_\-]+)/(?P<title>[0-9a-zA-Z_\-]+)' | 
					
						
							|  |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://soundgasm.net/u/ytdl/Piano-sample', | 
					
						
							|  |  |  |         'md5': '010082a2c802c5275bb00030743e75ad', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '88abd86ea000cafe98f96321b23cc1206cbcbcc9', | 
					
						
							|  |  |  |             'ext': 'm4a', | 
					
						
							|  |  |  |             'title': 'ytdl_Piano-sample', | 
					
						
							|  |  |  |             'description': 'Royalty Free Sample Music' | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         mobj = re.match(self._VALID_URL, url) | 
					
						
							| 
									
										
										
										
											2014-06-25 23:47:38 +02:00
										 |  |  |         display_id = mobj.group('title') | 
					
						
							| 
									
										
										
										
											2014-06-25 18:07:23 +02:00
										 |  |  |         audio_title = mobj.group('user') + '_' + mobj.group('title') | 
					
						
							| 
									
										
										
										
											2014-06-25 23:47:38 +02:00
										 |  |  |         webpage = self._download_webpage(url, display_id) | 
					
						
							|  |  |  |         audio_url = self._html_search_regex( | 
					
						
							|  |  |  |             r'(?s)m4a\:\s"([^"]+)"', webpage, 'audio URL') | 
					
						
							| 
									
										
										
										
											2017-01-02 20:08:07 +08:00
										 |  |  |         audio_id = re.split(r'\/|\.', audio_url)[-2] | 
					
						
							| 
									
										
										
										
											2014-06-25 23:47:38 +02:00
										 |  |  |         description = self._html_search_regex( | 
					
						
							|  |  |  |             r'(?s)<li>Description:\s(.*?)<\/li>', webpage, 'description', | 
					
						
							|  |  |  |             fatal=False) | 
					
						
							| 
									
										
										
										
											2014-06-25 18:07:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'id': audio_id, | 
					
						
							| 
									
										
										
										
											2014-06-25 23:47:38 +02:00
										 |  |  |             'display_id': display_id, | 
					
						
							| 
									
										
										
										
											2014-06-25 18:07:23 +02:00
										 |  |  |             'url': audio_url, | 
					
						
							|  |  |  |             'title': audio_title, | 
					
						
							|  |  |  |             'description': description | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-02-23 12:11:19 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-23 16:51:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-23 12:11:19 +01:00
										 |  |  | class SoundgasmProfileIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2015-02-23 21:27:56 +06:00
										 |  |  |     IE_NAME = 'soundgasm:profile' | 
					
						
							| 
									
										
										
										
											2015-02-23 21:30:30 +06:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?soundgasm\.net/u/(?P<id>[^/]+)/?(?:\#.*)?$' | 
					
						
							| 
									
										
										
										
											2015-02-23 12:11:19 +01:00
										 |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://soundgasm.net/u/ytdl', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': 'ytdl', | 
					
						
							| 
									
										
										
										
											2015-02-23 21:27:24 +06:00
										 |  |  |         }, | 
					
						
							|  |  |  |         'playlist_count': 1, | 
					
						
							| 
									
										
										
										
											2015-02-23 12:11:19 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         profile_id = self._match_id(url) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-23 21:27:24 +06:00
										 |  |  |         webpage = self._download_webpage(url, profile_id) | 
					
						
							| 
									
										
										
										
											2015-02-23 12:11:19 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-23 21:27:24 +06:00
										 |  |  |         entries = [ | 
					
						
							|  |  |  |             self.url_result(audio_url, 'Soundgasm') | 
					
						
							|  |  |  |             for audio_url in re.findall(r'href="([^"]+/u/%s/[^"]+)' % profile_id, webpage)] | 
					
						
							| 
									
										
										
										
											2015-02-23 12:11:19 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-23 21:27:24 +06:00
										 |  |  |         return self.playlist_result(entries, profile_id) |