[nexx:embed] Add extractor for iframe embeds
This commit is contained in:
		| @@ -653,7 +653,10 @@ from .nextmedia import ( | |||||||
|     AppleDailyIE, |     AppleDailyIE, | ||||||
|     NextTVIE, |     NextTVIE, | ||||||
| ) | ) | ||||||
| from .nexx import NexxIE | from .nexx import ( | ||||||
|  |     NexxIE, | ||||||
|  |     NexxEmbedIE, | ||||||
|  | ) | ||||||
| from .nfb import NFBIE | from .nfb import NFBIE | ||||||
| from .nfl import NFLIE | from .nfl import NFLIE | ||||||
| from .nhk import NhkVodIE | from .nhk import NhkVodIE | ||||||
|   | |||||||
| @@ -36,7 +36,10 @@ from .brightcove import ( | |||||||
|     BrightcoveLegacyIE, |     BrightcoveLegacyIE, | ||||||
|     BrightcoveNewIE, |     BrightcoveNewIE, | ||||||
| ) | ) | ||||||
| from .nexx import NexxIE | from .nexx import ( | ||||||
|  |     NexxIE, | ||||||
|  |     NexxEmbedIE, | ||||||
|  | ) | ||||||
| from .nbc import NBCSportsVPlayerIE | from .nbc import NBCSportsVPlayerIE | ||||||
| from .ooyala import OoyalaIE | from .ooyala import OoyalaIE | ||||||
| from .rutv import RUTVIE | from .rutv import RUTVIE | ||||||
| @@ -1566,6 +1569,27 @@ class GenericIE(InfoExtractor): | |||||||
|                 'skip_download': True, |                 'skip_download': True, | ||||||
|             }, |             }, | ||||||
|         }, |         }, | ||||||
|  |         # Nexx iFrame embed | ||||||
|  |         { | ||||||
|  |             'url': 'http://www.spiegel.de/sptv/spiegeltv/spiegel-tv-ueber-schnellste-katapult-achterbahn-der-welt-taron-a-1137884.html', | ||||||
|  |             'info_dict': { | ||||||
|  |                 'id': '161464', | ||||||
|  |                 'ext': 'mp4', | ||||||
|  |                 'title': 'Nervenkitzel Achterbahn', | ||||||
|  |                 'alt_title': 'Karussellbauer in Deutschland', | ||||||
|  |                 'description': 'md5:ffe7b1cc59a01f585e0569949aef73cc', | ||||||
|  |                 'release_year': 2005, | ||||||
|  |                 'creator': 'SPIEGEL TV', | ||||||
|  |                 'thumbnail': r're:^https?://.*\.jpg$', | ||||||
|  |                 'duration': 2761, | ||||||
|  |                 'timestamp': 1394021479, | ||||||
|  |                 'upload_date': '20140305', | ||||||
|  |             }, | ||||||
|  |             'params': { | ||||||
|  |                 'format': 'bestvideo', | ||||||
|  |                 'skip_download': True, | ||||||
|  |             }, | ||||||
|  |         }, | ||||||
|         # Facebook <iframe> embed |         # Facebook <iframe> embed | ||||||
|         { |         { | ||||||
|             'url': 'https://www.hostblogger.de/blog/archives/6181-Auto-jagt-Betonmischer.html', |             'url': 'https://www.hostblogger.de/blog/archives/6181-Auto-jagt-Betonmischer.html', | ||||||
| @@ -2155,6 +2179,11 @@ class GenericIE(InfoExtractor): | |||||||
|         if nexx_urls: |         if nexx_urls: | ||||||
|             return self.playlist_from_matches(nexx_urls, video_id, video_title, ie=NexxIE.ie_key()) |             return self.playlist_from_matches(nexx_urls, video_id, video_title, ie=NexxIE.ie_key()) | ||||||
|  |  | ||||||
|  |         # Look for Nexx iFrame embeds | ||||||
|  |         nexx_embed_urls = NexxEmbedIE._extract_urls(webpage) | ||||||
|  |         if nexx_embed_urls: | ||||||
|  |             return self.playlist_from_matches(nexx_embed_urls, video_id, video_title, ie=NexxEmbedIE.ie_key()) | ||||||
|  |  | ||||||
|         # Look for ThePlatform embeds |         # Look for ThePlatform embeds | ||||||
|         tp_urls = ThePlatformIE._extract_urls(webpage) |         tp_urls = ThePlatformIE._extract_urls(webpage) | ||||||
|         if tp_urls: |         if tp_urls: | ||||||
|   | |||||||
| @@ -88,6 +88,10 @@ class NexxIE(InfoExtractor): | |||||||
|  |  | ||||||
|         return entries |         return entries | ||||||
|  |  | ||||||
|  |     @staticmethod | ||||||
|  |     def _extract_url(webpage): | ||||||
|  |         return NexxIE._extract_urls(webpage)[0] | ||||||
|  |  | ||||||
|     def _handle_error(self, response): |     def _handle_error(self, response): | ||||||
|         status = int_or_none(try_get( |         status = int_or_none(try_get( | ||||||
|             response, lambda x: x['metadata']['status']) or 200) |             response, lambda x: x['metadata']['status']) or 200) | ||||||
| @@ -223,3 +227,45 @@ class NexxIE(InfoExtractor): | |||||||
|                 video, lambda x: x['episodedata']['season'])), |                 video, lambda x: x['episodedata']['season'])), | ||||||
|             'formats': formats, |             'formats': formats, | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class NexxEmbedIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://embed\.nexx(?:\.cloud|cdn\.com)/\d+/(?P<id>[^/?#&]+)' | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'http://embed.nexx.cloud/748/KC1614647Z27Y7T?autoplay=1', | ||||||
|  |         'md5': '16746bfc28c42049492385c989b26c4a', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '161464', | ||||||
|  |             'ext': 'mp4', | ||||||
|  |             'title': 'Nervenkitzel Achterbahn', | ||||||
|  |             'alt_title': 'Karussellbauer in Deutschland', | ||||||
|  |             'description': 'md5:ffe7b1cc59a01f585e0569949aef73cc', | ||||||
|  |             'release_year': 2005, | ||||||
|  |             'creator': 'SPIEGEL TV', | ||||||
|  |             'thumbnail': r're:^https?://.*\.jpg$', | ||||||
|  |             'duration': 2761, | ||||||
|  |             'timestamp': 1394021479, | ||||||
|  |             'upload_date': '20140305', | ||||||
|  |         }, | ||||||
|  |         'params': { | ||||||
|  |             'format': 'bestvideo', | ||||||
|  |             'skip_download': True, | ||||||
|  |         }, | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @staticmethod | ||||||
|  |     def _extract_urls(webpage): | ||||||
|  |         # Reference: | ||||||
|  |         # 1. https://nx-s.akamaized.net/files/201510/44.pdf | ||||||
|  |  | ||||||
|  |         # iFrame Embed Integration | ||||||
|  |         return [mobj.group('url') for mobj in re.finditer( | ||||||
|  |                 r'<iframe[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//embed\.nexx(?:\.cloud|cdn\.com)/\d+/(?:(?!\1).)+)\1', | ||||||
|  |             webpage)] | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         embed_id = self._match_id(url) | ||||||
|  |  | ||||||
|  |         webpage = self._download_webpage(url, embed_id) | ||||||
|  |  | ||||||
|  |         return self.url_result(NexxIE._extract_url(webpage), ie=NexxIE.ie_key()) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․