| 
									
										
										
										
											2014-01-07 10:04:48 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							| 
									
										
										
										
											2013-12-16 22:18:27 +01:00
										 |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import InfoExtractor | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AcademicEarthCourseIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2014-02-24 14:18:12 +01:00
										 |  |  |     _VALID_URL = r'^https?://(?:www\.)?academicearth\.org/playlists/(?P<id>[^?#/]+)' | 
					
						
							| 
									
										
										
										
											2014-01-07 10:04:48 +01:00
										 |  |  |     IE_NAME = 'AcademicEarth:Course' | 
					
						
							| 
									
										
										
										
											2014-08-28 00:58:24 +02:00
										 |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://academicearth.org/playlists/laws-of-nature/', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': 'laws-of-nature', | 
					
						
							|  |  |  |             'title': 'Laws of Nature', | 
					
						
							|  |  |  |             'description': 'Introduce yourself to the laws of nature with these free online college lectures from Yale, Harvard, and MIT.', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         'playlist_count': 4, | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-12-16 22:18:27 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         m = re.match(self._VALID_URL, url) | 
					
						
							|  |  |  |         playlist_id = m.group('id') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         webpage = self._download_webpage(url, playlist_id) | 
					
						
							|  |  |  |         title = self._html_search_regex( | 
					
						
							| 
									
										
										
										
											2014-02-24 14:18:12 +01:00
										 |  |  |             r'<h1 class="playlist-name"[^>]*?>(.*?)</h1>', webpage, u'title') | 
					
						
							| 
									
										
										
										
											2013-12-16 22:18:27 +01:00
										 |  |  |         description = self._html_search_regex( | 
					
						
							| 
									
										
										
										
											2014-02-24 14:18:12 +01:00
										 |  |  |             r'<p class="excerpt"[^>]*?>(.*?)</p>', | 
					
						
							| 
									
										
										
										
											2013-12-16 22:18:27 +01:00
										 |  |  |             webpage, u'description', fatal=False) | 
					
						
							|  |  |  |         urls = re.findall( | 
					
						
							| 
									
										
										
										
											2014-02-24 14:18:12 +01:00
										 |  |  |             r'<li class="lecture-preview">\s*?<a target="_blank" href="([^"]+)">', | 
					
						
							| 
									
										
										
										
											2013-12-16 22:18:27 +01:00
										 |  |  |             webpage) | 
					
						
							|  |  |  |         entries = [self.url_result(u) for u in urls] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             '_type': 'playlist', | 
					
						
							|  |  |  |             'id': playlist_id, | 
					
						
							|  |  |  |             'title': title, | 
					
						
							|  |  |  |             'description': description, | 
					
						
							|  |  |  |             'entries': entries, | 
					
						
							|  |  |  |         } |