| 
									
										
										
										
											2014-11-26 20:01:20 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 14:01:31 +01:00
										 |  |  | try: | 
					
						
							|  |  |  |     from .lazy_extractors import * | 
					
						
							|  |  |  |     from .lazy_extractors import _ALL_CLASSES | 
					
						
							| 
									
										
										
										
											2016-02-21 12:28:58 +01:00
										 |  |  |     _LAZY_LOADER = True | 
					
						
							| 
									
										
										
										
											2016-02-10 14:01:31 +01:00
										 |  |  | except ImportError: | 
					
						
							| 
									
										
										
										
											2016-02-21 12:28:58 +01:00
										 |  |  |     _LAZY_LOADER = False | 
					
						
							| 
									
										
										
										
											2016-02-10 14:01:31 +01:00
										 |  |  |     from .extractors import * | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     _ALL_CLASSES = [ | 
					
						
							|  |  |  |         klass | 
					
						
							|  |  |  |         for name, klass in globals().items() | 
					
						
							|  |  |  |         if name.endswith('IE') and name != 'GenericIE' | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     _ALL_CLASSES.append(GenericIE) | 
					
						
							| 
									
										
										
										
											2013-06-23 22:36:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-24 21:10:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 13:16:18 +01:00
										 |  |  | def gen_extractor_classes(): | 
					
						
							|  |  |  |     """ Return a list of supported extractors.
 | 
					
						
							|  |  |  |     The order does matter; the first extractor matched is the one handling the URL. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     return _ALL_CLASSES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-23 22:36:24 +02:00
										 |  |  | def gen_extractors(): | 
					
						
							|  |  |  |     """ Return a list of an instance of every supported extractor.
 | 
					
						
							|  |  |  |     The order does matter; the first extractor matched is the one handling the URL. | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2016-02-10 13:16:18 +01:00
										 |  |  |     return [klass() for klass in gen_extractor_classes()] | 
					
						
							| 
									
										
										
										
											2013-06-23 22:36:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-24 21:10:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-07 07:20:20 +01:00
										 |  |  | def list_extractors(age_limit): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Return a list of extractors that are suitable for the given age, | 
					
						
							|  |  |  |     sorted by extractor ID. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return sorted( | 
					
						
							|  |  |  |         filter(lambda ie: ie.is_suitable(age_limit), gen_extractors()), | 
					
						
							|  |  |  |         key=lambda ie: ie.IE_NAME.lower()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-23 22:36:24 +02:00
										 |  |  | def get_info_extractor(ie_name): | 
					
						
							|  |  |  |     """Returns the info extractor class with the given ie_name""" | 
					
						
							| 
									
										
										
										
											2014-11-23 21:20:46 +01:00
										 |  |  |     return globals()[ie_name + 'IE'] |