From ddfe50195b525a4dd4b4fa6755e4e630a25fcbef Mon Sep 17 00:00:00 2001 From: Remita Amine Date: Sat, 30 Nov 2019 23:48:26 +0100 Subject: [PATCH] [nintendo] fix extraction and partially add support for Nintendo Direct videos(#4592) --- youtube_dl/extractor/nintendo.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/youtube_dl/extractor/nintendo.py b/youtube_dl/extractor/nintendo.py index 4b4e66b059..ff8f70ba66 100644 --- a/youtube_dl/extractor/nintendo.py +++ b/youtube_dl/extractor/nintendo.py @@ -5,13 +5,12 @@ from .common import InfoExtractor from .ooyala import OoyalaIE -from ..utils import unescapeHTML class NintendoIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?nintendo\.com/games/detail/(?P[^/?#&]+)' + _VALID_URL = r'https?://(?:www\.)?nintendo\.com/(?:games/detail|nintendo-direct)/(?P[^/?#&]+)' _TESTS = [{ - 'url': 'http://www.nintendo.com/games/detail/yEiAzhU2eQI1KZ7wOHhngFoAHc1FpHwj', + 'url': 'https://www.nintendo.com/games/detail/duck-hunt-wii-u/', 'info_dict': { 'id': 'MzMmticjp0VPzO3CCj4rmFOuohEuEWoW', 'ext': 'flv', @@ -28,7 +27,19 @@ class NintendoIE(InfoExtractor): 'id': 'tokyo-mirage-sessions-fe-wii-u', 'title': 'Tokyo Mirage Sessions ♯FE', }, - 'playlist_count': 3, + 'playlist_count': 4, + }, { + 'url': 'https://www.nintendo.com/nintendo-direct/09-04-2019/', + 'info_dict': { + 'id': 'J2bXdmaTE6fe3dWJTPcc7m23FNbc_A1V', + 'ext': 'mp4', + 'title': 'Switch_ROS_ND0904-H264.mov', + 'duration': 2324.758, + }, + 'params': { + 'skip_download': True, + }, + 'add_ie': ['Ooyala'], }] def _real_extract(self, url): @@ -39,8 +50,11 @@ def _real_extract(self, url): entries = [ OoyalaIE._build_url_result(m.group('code')) for m in re.finditer( - r'class=(["\'])embed-video\1[^>]+data-video-code=(["\'])(?P(?:(?!\2).)+)\2', - webpage)] + r'data-(?:video-id|directVideoId)=(["\'])(?P(?:(?!\1).)+)\1', webpage)] + + title = self._html_search_regex( + r'(?s)<(?:span|div)[^>]+class="(?:title|wrapper)"[^>]*>.*?

(.+?)

', + webpage, 'title', fatal=False) return self.playlist_result( - entries, page_id, unescapeHTML(self._og_search_title(webpage, fatal=False))) + entries, page_id, title)