mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	Move infoq into its own file
This commit is contained in:
		| @@ -31,6 +31,7 @@ from .extractor.gametrailers import GametrailersIE | |||||||
| from .extractor.generic import GenericIE | from .extractor.generic import GenericIE | ||||||
| from .extractor.googleplus import GooglePlusIE | from .extractor.googleplus import GooglePlusIE | ||||||
| from .extractor.googlesearch import GoogleSearchIE | from .extractor.googlesearch import GoogleSearchIE | ||||||
|  | from .extractor.infoq import InfoQIE | ||||||
| from .extractor.metacafe import MetacafeIE | from .extractor.metacafe import MetacafeIE | ||||||
| from .extractor.myvideo import MyVideoIE | from .extractor.myvideo import MyVideoIE | ||||||
| from .extractor.statigram import StatigramIE | from .extractor.statigram import StatigramIE | ||||||
| @@ -44,49 +45,6 @@ from .extractor.zdf import ZDFIE | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class InfoQIE(InfoExtractor): |  | ||||||
|     """Information extractor for infoq.com""" |  | ||||||
|     _VALID_URL = r'^(?:https?://)?(?:www\.)?infoq\.com/[^/]+/[^/]+$' |  | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |  | ||||||
|         mobj = re.match(self._VALID_URL, url) |  | ||||||
|         if mobj is None: |  | ||||||
|             raise ExtractorError(u'Invalid URL: %s' % url) |  | ||||||
|  |  | ||||||
|         webpage = self._download_webpage(url, video_id=url) |  | ||||||
|         self.report_extraction(url) |  | ||||||
|  |  | ||||||
|         # Extract video URL |  | ||||||
|         mobj = re.search(r"jsclassref ?= ?'([^']*)'", webpage) |  | ||||||
|         if mobj is None: |  | ||||||
|             raise ExtractorError(u'Unable to extract video url') |  | ||||||
|         real_id = compat_urllib_parse.unquote(base64.b64decode(mobj.group(1).encode('ascii')).decode('utf-8')) |  | ||||||
|         video_url = 'rtmpe://video.infoq.com/cfx/st/' + real_id |  | ||||||
|  |  | ||||||
|         # Extract title |  | ||||||
|         video_title = self._search_regex(r'contentTitle = "(.*?)";', |  | ||||||
|             webpage, u'title') |  | ||||||
|  |  | ||||||
|         # Extract description |  | ||||||
|         video_description = self._html_search_regex(r'<meta name="description" content="(.*)"(?:\s*/)?>', |  | ||||||
|             webpage, u'description', fatal=False) |  | ||||||
|  |  | ||||||
|         video_filename = video_url.split('/')[-1] |  | ||||||
|         video_id, extension = video_filename.split('.') |  | ||||||
|  |  | ||||||
|         info = { |  | ||||||
|             'id': video_id, |  | ||||||
|             'url': video_url, |  | ||||||
|             'uploader': None, |  | ||||||
|             'upload_date': None, |  | ||||||
|             'title': video_title, |  | ||||||
|             'ext': extension, # Extension is always(?) mp4, but seems to be flv |  | ||||||
|             'thumbnail': None, |  | ||||||
|             'description': video_description, |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return [info] |  | ||||||
|  |  | ||||||
| class MixcloudIE(InfoExtractor): | class MixcloudIE(InfoExtractor): | ||||||
|     """Information extractor for www.mixcloud.com""" |     """Information extractor for www.mixcloud.com""" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										50
									
								
								youtube_dl/extractor/infoq.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								youtube_dl/extractor/infoq.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | import base64 | ||||||
|  | import re | ||||||
|  |  | ||||||
|  | from .common import InfoExtractor | ||||||
|  | from ..utils import ( | ||||||
|  |     compat_urllib_parse, | ||||||
|  |  | ||||||
|  |     ExtractorError, | ||||||
|  | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class InfoQIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'^(?:https?://)?(?:www\.)?infoq\.com/[^/]+/[^/]+$' | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         mobj = re.match(self._VALID_URL, url) | ||||||
|  |  | ||||||
|  |         webpage = self._download_webpage(url, video_id=url) | ||||||
|  |         self.report_extraction(url) | ||||||
|  |  | ||||||
|  |         # Extract video URL | ||||||
|  |         mobj = re.search(r"jsclassref ?= ?'([^']*)'", webpage) | ||||||
|  |         if mobj is None: | ||||||
|  |             raise ExtractorError(u'Unable to extract video url') | ||||||
|  |         real_id = compat_urllib_parse.unquote(base64.b64decode(mobj.group(1).encode('ascii')).decode('utf-8')) | ||||||
|  |         video_url = 'rtmpe://video.infoq.com/cfx/st/' + real_id | ||||||
|  |  | ||||||
|  |         # Extract title | ||||||
|  |         video_title = self._search_regex(r'contentTitle = "(.*?)";', | ||||||
|  |             webpage, u'title') | ||||||
|  |  | ||||||
|  |         # Extract description | ||||||
|  |         video_description = self._html_search_regex(r'<meta name="description" content="(.*)"(?:\s*/)?>', | ||||||
|  |             webpage, u'description', fatal=False) | ||||||
|  |  | ||||||
|  |         video_filename = video_url.split('/')[-1] | ||||||
|  |         video_id, extension = video_filename.split('.') | ||||||
|  |  | ||||||
|  |         info = { | ||||||
|  |             'id': video_id, | ||||||
|  |             'url': video_url, | ||||||
|  |             'uploader': None, | ||||||
|  |             'upload_date': None, | ||||||
|  |             'title': video_title, | ||||||
|  |             'ext': extension, # Extension is always(?) mp4, but seems to be flv | ||||||
|  |             'thumbnail': None, | ||||||
|  |             'description': video_description, | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return [info] | ||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister