[nick] fix extraction

https://github.com/ytdl-org/youtube-dl/pull/27900
Authored by: DennyDai
This commit is contained in:
Han Dai 2021-01-21 06:16:59 -05:00 committed by pukkandan
parent ee1e05581e
commit f3b737ed19
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698
1 changed files with 38 additions and 25 deletions

View File

@ -8,59 +8,66 @@ from ..utils import update_url_query
class NickIE(MTVServicesInfoExtractor): class NickIE(MTVServicesInfoExtractor):
# None of videos on the website are still alive?
IE_NAME = 'nick.com' IE_NAME = 'nick.com'
_VALID_URL = r'https?://(?P<domain>(?:(?:www|beta)\.)?nick(?:jr)?\.com)/(?:[^/]+/)?(?:videos/clip|[^/]+/videos)/(?P<id>[^/?#.]+)' _VALID_URL = r'https?://(?P<domain>(?:www\.)?nick(?:jr)?\.com)/(?:[^/]+/)?(?P<type>videos/clip|[^/]+/videos|episodes/[^/]+)/(?P<id>[^/?#.]+)'
_FEED_URL = 'http://udat.mtvnservices.com/service1/dispatch.htm' _FEED_URL = 'http://udat.mtvnservices.com/service1/dispatch.htm'
_GEO_COUNTRIES = ['US'] _GEO_COUNTRIES = ['US']
_TESTS = [{ _TESTS = [{
'url': 'http://www.nick.com/videos/clip/alvinnn-and-the-chipmunks-112-full-episode.html', 'url': 'https://www.nick.com/episodes/sq47rw/spongebob-squarepants-a-place-for-pets-lockdown-for-love-season-13-ep-1',
'info_dict': {
'description': 'md5:0650a9eb88955609d5c1d1c79292e234',
'title': 'A Place for Pets/Lockdown for Love',
},
'playlist': [ 'playlist': [
{ {
'md5': '6e5adc1e28253bbb1b28ab05403dd4d4', 'md5': 'cb8a2afeafb7ae154aca5a64815ec9d6',
'info_dict': { 'info_dict': {
'id': 'be6a17b0-412d-11e5-8ff7-0026b9414f30', 'id': '85ee8177-d6ce-48f8-9eee-a65364f8a6df',
'ext': 'mp4', 'ext': 'mp4',
'title': 'ALVINNN!!! and The Chipmunks: "Mojo Missing/Who\'s The Animal" S1', 'title': 'SpongeBob SquarePants: "A Place for Pets/Lockdown for Love" S1',
'description': 'Alvin is convinced his mojo was in a cap he gave to a fan, and must find a way to get his hat back before the Chipmunks big concert.\nDuring a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil.', 'description': 'A Place for Pets/Lockdown for Love: When customers bring pets into the Krusty Krab, Mr. Krabs realizes pets are more profitable than owners. Plankton ruins another date with Karen, so she puts the Chum Bucket on lockdown until he proves his affection.',
} }
}, },
{ {
'md5': 'd7be441fc53a1d4882fa9508a1e5b3ce', 'md5': '839a04f49900a1fcbf517020d94e0737',
'info_dict': { 'info_dict': {
'id': 'be6b8f96-412d-11e5-8ff7-0026b9414f30', 'id': '2e2a9960-8fd4-411d-868b-28eb1beb7fae',
'ext': 'mp4', 'ext': 'mp4',
'title': 'ALVINNN!!! and The Chipmunks: "Mojo Missing/Who\'s The Animal" S2', 'title': 'SpongeBob SquarePants: "A Place for Pets/Lockdown for Love" S2',
'description': 'Alvin is convinced his mojo was in a cap he gave to a fan, and must find a way to get his hat back before the Chipmunks big concert.\nDuring a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil.', 'description': 'A Place for Pets/Lockdown for Love: When customers bring pets into the Krusty Krab, Mr. Krabs realizes pets are more profitable than owners. Plankton ruins another date with Karen, so she puts the Chum Bucket on lockdown until he proves his affection.',
} }
}, },
{ {
'md5': 'efffe1728a234b2b0d2f2b343dd1946f', 'md5': 'f1145699f199770e2919ee8646955d46',
'info_dict': { 'info_dict': {
'id': 'be6cf7e6-412d-11e5-8ff7-0026b9414f30', 'id': 'dc91c304-6876-40f7-84a6-7aece7baa9d0',
'ext': 'mp4', 'ext': 'mp4',
'title': 'ALVINNN!!! and The Chipmunks: "Mojo Missing/Who\'s The Animal" S3', 'title': 'SpongeBob SquarePants: "A Place for Pets/Lockdown for Love" S3',
'description': 'Alvin is convinced his mojo was in a cap he gave to a fan, and must find a way to get his hat back before the Chipmunks big concert.\nDuring a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil.', 'description': 'A Place for Pets/Lockdown for Love: When customers bring pets into the Krusty Krab, Mr. Krabs realizes pets are more profitable than owners. Plankton ruins another date with Karen, so she puts the Chum Bucket on lockdown until he proves his affection.',
} }
}, },
{ {
'md5': '1ec6690733ab9f41709e274a1d5c7556', 'md5': 'd463116875aee2585ee58de3b12caebd',
'info_dict': { 'info_dict': {
'id': 'be6e3354-412d-11e5-8ff7-0026b9414f30', 'id': '5d929486-cf4c-42a1-889a-6e0d183a101a',
'ext': 'mp4', 'ext': 'mp4',
'title': 'ALVINNN!!! and The Chipmunks: "Mojo Missing/Who\'s The Animal" S4', 'title': 'SpongeBob SquarePants: "A Place for Pets/Lockdown for Love" S4',
'description': 'Alvin is convinced his mojo was in a cap he gave to a fan, and must find a way to get his hat back before the Chipmunks big concert.\nDuring a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil.', 'description': 'A Place for Pets/Lockdown for Love: When customers bring pets into the Krusty Krab, Mr. Krabs realizes pets are more profitable than owners. Plankton ruins another date with Karen, so she puts the Chum Bucket on lockdown until he proves his affection.',
} }
}, },
], ],
}, { }, {
'url': 'http://www.nickjr.com/paw-patrol/videos/pups-save-a-goldrush-s3-ep302-full-episode/', 'url': 'http://www.nickjr.com/blues-clues-and-you/videos/blues-clues-and-you-original-209-imagination-station/',
'only_matching': True, 'info_dict': {
}, { 'id': '31631529-2fc5-430b-b2ef-6a74b4609abd',
'url': 'http://beta.nick.com/nicky-ricky-dicky-and-dawn/videos/nicky-ricky-dicky-dawn-301-full-episode/', 'ext': 'mp4',
'only_matching': True, 'description': 'md5:9d65a66df38e02254852794b2809d1cf',
'title': 'Blue\'s Imagination Station',
},
}] }]
def _get_feed_query(self, uri): def _get_feed_query(self, uri):
@ -69,8 +76,14 @@ class NickIE(MTVServicesInfoExtractor):
'mgid': uri, 'mgid': uri,
} }
def _extract_mgid(self, webpage):
mgid = self._search_regex(r'"media":{"video":{"config":{"uri":"(mgid:.*?)"', webpage, 'mgid', default=None)
return mgid
def _real_extract(self, url): def _real_extract(self, url):
domain, display_id = re.match(self._VALID_URL, url).groups() domain, video_type, display_id = re.match(self._VALID_URL, url).groups()
if video_type.startswith("episodes"):
return super()._real_extract(url)
video_data = self._download_json( video_data = self._download_json(
'http://%s/data/video.endLevel.json' % domain, 'http://%s/data/video.endLevel.json' % domain,
display_id, query={ display_id, query={