mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	Add tests to MySpass
This commit is contained in:
		| @@ -295,5 +295,14 @@ | |||||||
|     "info_dict": { |     "info_dict": { | ||||||
|         "title": "Dan Dennett: The illusion of consciousness" |         "title": "Dan Dennett: The illusion of consciousness" | ||||||
|     } |     } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "name": "MySpass", | ||||||
|  |     "url": "http://www.myspass.de/myspass/shows/tvshows/absolute-mehrheit/Absolute-Mehrheit-vom-17022013-Die-Highlights-Teil-2--/11741/", | ||||||
|  |     "file": "11741.mp4", | ||||||
|  |     "md5": "0b49f4844a068f8b33f4b7c88405862b", | ||||||
|  |     "info_dict": { | ||||||
|  |         "title": "Absolute Mehrheit vom 17.02.2013 - Die Highlights, Teil 2" | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| ] | ] | ||||||
|   | |||||||
| @@ -3967,7 +3967,7 @@ class KeekIE(InfoExtractor): | |||||||
|                 'uploader': uploader |                 'uploader': uploader | ||||||
|         } |         } | ||||||
|         return [info] |         return [info] | ||||||
|          |  | ||||||
| class TEDIE(InfoExtractor): | class TEDIE(InfoExtractor): | ||||||
|     _VALID_URL=r'http://www.ted.com/talks/(?P<videoName>\w+)' |     _VALID_URL=r'http://www.ted.com/talks/(?P<videoName>\w+)' | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
| @@ -3992,6 +3992,62 @@ class TEDIE(InfoExtractor): | |||||||
|         } |         } | ||||||
|         return [info] |         return [info] | ||||||
|  |  | ||||||
|  | class MySpassIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'http://www.myspass.de/.*' | ||||||
|  |      | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         META_DATA_URL_TEMPLATE = 'http://www.myspass.de/myspass/includes/apps/video/getvideometadataxml.php?id=%s' | ||||||
|  |  | ||||||
|  |         # video id is the last path element of the URL | ||||||
|  |         # usually there is a trailing slash, so also try the second but last | ||||||
|  |         url_path = compat_urllib_parse_urlparse(url).path | ||||||
|  |         url_parent_path, video_id = os.path.split(url_path) | ||||||
|  |         if not video_id: | ||||||
|  |             _, video_id = os.path.split(url_parent_path) | ||||||
|  |          | ||||||
|  |         # get metadata | ||||||
|  |         metadata_url = META_DATA_URL_TEMPLATE % video_id | ||||||
|  |         metadata_text = self._download_webpage(metadata_url, video_id) | ||||||
|  |         metadata = xml.etree.ElementTree.fromstring(metadata_text.encode('utf-8')) | ||||||
|  |          | ||||||
|  |         # extract values from metadata | ||||||
|  |         url_flv_el = metadata.find('url_flv') | ||||||
|  |         if url_flv_el is None: | ||||||
|  |             self._downloader.trouble(u'ERROR: unable to extract download url') | ||||||
|  |             return | ||||||
|  |         video_url = url_flv_el.text | ||||||
|  |         extension = os.path.splitext(video_url)[1][1:] | ||||||
|  |         title_el = metadata.find('title') | ||||||
|  |         if title_el is None: | ||||||
|  |             self._downloader.trouble(u'ERROR: unable to extract title') | ||||||
|  |             return | ||||||
|  |         title = title_el.text | ||||||
|  |         format_id_el = metadata.find('format_id') | ||||||
|  |         if format_id_el is None: | ||||||
|  |             format = ext | ||||||
|  |         else: | ||||||
|  |             format = format_id_el.text | ||||||
|  |         description_el = metadata.find('description') | ||||||
|  |         if description_el is not None: | ||||||
|  |             description = description_el.text | ||||||
|  |         else: | ||||||
|  |             description = None | ||||||
|  |         imagePreview_el = metadata.find('imagePreview') | ||||||
|  |         if imagePreview_el is not None: | ||||||
|  |             thumbnail = imagePreview_el.text | ||||||
|  |         else: | ||||||
|  |             thumbnail = None | ||||||
|  |         info = { | ||||||
|  |             'id': video_id, | ||||||
|  |             'url': video_url, | ||||||
|  |             'title': title, | ||||||
|  |             'ext': extension, | ||||||
|  |             'format': format, | ||||||
|  |             'thumbnail': thumbnail, | ||||||
|  |             'description': description | ||||||
|  |         } | ||||||
|  |         return [info] | ||||||
|  |  | ||||||
| def gen_extractors(): | def gen_extractors(): | ||||||
|     """ Return a list of an instance of every supported extractor. |     """ Return a list of an instance of every supported extractor. | ||||||
|     The order does matter; the first extractor matched is the one handling the URL. |     The order does matter; the first extractor matched is the one handling the URL. | ||||||
| @@ -4040,6 +4096,7 @@ def gen_extractors(): | |||||||
|         EightTracksIE(), |         EightTracksIE(), | ||||||
|         KeekIE(), |         KeekIE(), | ||||||
|         TEDIE(), |         TEDIE(), | ||||||
|  |         MySpassIE(), | ||||||
|         GenericIE() |         GenericIE() | ||||||
|     ] |     ] | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister