2015-12-31 22:12:05 +01:00
# coding: utf-8
from __future__ import unicode_literals
2016-11-01 19:29:05 +01:00
import re
2015-12-31 22:12:05 +01:00
from . mtv import MTVServicesInfoExtractor
2016-06-17 23:40:48 +02:00
from . . utils import update_url_query
2015-12-31 22:12:05 +01:00
class NickIE ( MTVServicesInfoExtractor ) :
2016-07-26 05:10:41 +02:00
# None of videos on the website are still alive?
2015-12-31 22:12:05 +01:00
IE_NAME = ' nick.com '
2017-01-10 16:32:34 +01:00
_VALID_URL = r ' https?://(?:(?:www|beta) \ .)?nick(?:jr)? \ .com/(?:[^/]+/)?(?:videos/clip|[^/]+/videos)/(?P<id>[^/?#.]+) '
2015-12-31 22:12:05 +01:00
_FEED_URL = ' http://udat.mtvnservices.com/service1/dispatch.htm '
2017-07-23 15:40:04 +02:00
_GEO_COUNTRIES = [ ' US ' ]
2015-12-31 22:12:05 +01:00
_TESTS = [ {
' url ' : ' http://www.nick.com/videos/clip/alvinnn-and-the-chipmunks-112-full-episode.html ' ,
' playlist ' : [
{
' md5 ' : ' 6e5adc1e28253bbb1b28ab05403dd4d4 ' ,
' info_dict ' : {
' id ' : ' be6a17b0-412d-11e5-8ff7-0026b9414f30 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' ALVINNN!!! and The Chipmunks: " Mojo Missing/Who \' s The Animal " 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. \n During a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil. ' ,
}
} ,
{
' md5 ' : ' d7be441fc53a1d4882fa9508a1e5b3ce ' ,
' info_dict ' : {
' id ' : ' be6b8f96-412d-11e5-8ff7-0026b9414f30 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' ALVINNN!!! and The Chipmunks: " Mojo Missing/Who \' s The Animal " 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. \n During a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil. ' ,
}
} ,
{
' md5 ' : ' efffe1728a234b2b0d2f2b343dd1946f ' ,
' info_dict ' : {
' id ' : ' be6cf7e6-412d-11e5-8ff7-0026b9414f30 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' ALVINNN!!! and The Chipmunks: " Mojo Missing/Who \' s The Animal " 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. \n During a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil. ' ,
}
} ,
{
' md5 ' : ' 1ec6690733ab9f41709e274a1d5c7556 ' ,
' info_dict ' : {
' id ' : ' be6e3354-412d-11e5-8ff7-0026b9414f30 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' ALVINNN!!! and The Chipmunks: " Mojo Missing/Who \' s The Animal " 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. \n During a costume visit to the zoo, Alvin finds himself mistaken for the real Tasmanian devil. ' ,
}
} ,
] ,
2016-07-08 09:11:28 +02:00
} , {
' url ' : ' http://www.nickjr.com/paw-patrol/videos/pups-save-a-goldrush-s3-ep302-full-episode/ ' ,
' only_matching ' : True ,
2017-01-10 16:32:34 +01:00
} , {
' url ' : ' http://beta.nick.com/nicky-ricky-dicky-and-dawn/videos/nicky-ricky-dicky-dawn-301-full-episode/ ' ,
' only_matching ' : True ,
2015-12-31 22:12:05 +01:00
} ]
def _get_feed_query ( self , uri ) :
2016-08-24 17:58:22 +02:00
return {
2015-12-31 22:12:05 +01:00
' feed ' : ' nick_arc_player_prime ' ,
2015-12-31 22:47:18 +01:00
' mgid ' : uri ,
2016-08-24 17:58:22 +02:00
}
2015-12-31 22:12:05 +01:00
def _extract_mgid ( self , webpage ) :
return self . _search_regex ( r ' data-contenturi= " ([^ " ]+) ' , webpage , ' mgid ' )
2016-06-17 23:40:48 +02:00
class NickDeIE ( MTVServicesInfoExtractor ) :
IE_NAME = ' nick.de '
2017-10-21 20:30:35 +02:00
_VALID_URL = r ' https?://(?:www \ .)?(?P<host>nick \ .(?:de|com \ .pl|ch)|nickelodeon \ .(?:nl|at|dk|no|se))/[^/]+/(?:[^/]+/)*(?P<id>[^/?#&]+) '
2016-06-17 23:40:48 +02:00
_TESTS = [ {
' url ' : ' http://www.nick.de/playlist/3773-top-videos/videos/episode/17306-zu-wasser-und-zu-land-rauchende-erdnusse ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.nick.de/shows/342-icarly ' ,
' only_matching ' : True ,
2016-09-05 16:42:41 +02:00
} , {
' url ' : ' http://www.nickelodeon.nl/shows/474-spongebob/videos/17403-een-kijkje-in-de-keuken-met-sandy-van-binnenuit ' ,
' only_matching ' : True ,
2016-11-01 19:29:05 +01:00
} , {
' url ' : ' http://www.nickelodeon.at/playlist/3773-top-videos/videos/episode/77993-das-letzte-gefecht ' ,
' only_matching ' : True ,
2017-08-09 18:12:02 +02:00
} , {
' url ' : ' http://www.nick.com.pl/seriale/474-spongebob-kanciastoporty/wideo/17412-teatr-to-jest-to-rodeo-oszolom ' ,
' only_matching ' : True ,
2017-10-21 20:26:58 +02:00
} , {
' url ' : ' http://www.nickelodeon.no/program/2626-bulderhuset/videoer/90947-femteklasse-veronica-vs-vanzilla ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.nickelodeon.dk/serier/2626-hojs-hus/videoer/761-tissepause ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.nickelodeon.se/serier/2626-lugn-i-stormen/videos/998- ' ,
' only_matching ' : True ,
2017-10-21 20:30:35 +02:00
} , {
' url ' : ' http://www.nick.ch/shows/2304-adventure-time-abenteuerzeit-mit-finn-und-jake ' ,
' only_matching ' : True ,
2016-06-17 23:40:48 +02:00
} ]
2016-11-01 19:35:53 +01:00
def _extract_mrss_url ( self , webpage , host ) :
return update_url_query ( self . _search_regex (
r ' data-mrss=([ " \' ])(?P<url>http.+?) \ 1 ' , webpage , ' mrss url ' , group = ' url ' ) ,
{ ' siteKey ' : host } )
2016-06-17 23:40:48 +02:00
def _real_extract ( self , url ) :
2016-11-01 19:29:05 +01:00
mobj = re . match ( self . _VALID_URL , url )
video_id = mobj . group ( ' id ' )
host = mobj . group ( ' host ' )
2016-06-17 23:40:48 +02:00
webpage = self . _download_webpage ( url , video_id )
2016-11-01 19:35:53 +01:00
mrss_url = self . _extract_mrss_url ( webpage , host )
2016-06-17 23:40:48 +02:00
return self . _get_videos_info_from_url ( mrss_url , video_id )
2016-09-26 22:45:02 +02:00
2016-11-01 19:35:53 +01:00
class NickNightIE ( NickDeIE ) :
IE_NAME = ' nicknight '
_VALID_URL = r ' https?://(?:www \ .)(?P<host>nicknight \ .(?:de|at|tv))/(?:playlist|shows)/(?:[^/]+/)*(?P<id>[^/?#&]+) '
2016-09-26 22:45:02 +02:00
_TESTS = [ {
' url ' : ' http://www.nicknight.at/shows/977-awkward/videos/85987-nimmer-beste-freunde ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.nicknight.at/shows/977-awkward ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.nicknight.at/shows/1900-faking-it ' ,
' only_matching ' : True ,
} ]
2016-11-01 19:35:53 +01:00
def _extract_mrss_url ( self , webpage , * args ) :
return self . _search_regex (
r ' mrss \ s*: \ s*([ " \' ])(?P<url>http.+?) \ 1 ' , webpage ,
' mrss url ' , group = ' url ' )
2017-07-23 16:00:56 +02:00
class NickRuIE ( MTVServicesInfoExtractor ) :
IE_NAME = ' nickelodeonru '
_VALID_URL = r ' https?://(?:www \ .)nickelodeon \ .ru/(?:playlist|shows|videos)/(?:[^/]+/)*(?P<id>[^/?#&]+) '
_TESTS = [ {
' url ' : ' http://www.nickelodeon.ru/shows/henrydanger/videos/episodes/3-sezon-15-seriya-licenziya-na-polyot/pmomfb#playlist/7airc6 ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.nickelodeon.ru/videos/smotri-na-nickelodeon-v-iyule/g9hvh7 ' ,
' only_matching ' : True ,
} ]
def _real_extract ( self , url ) :
video_id = self . _match_id ( url )
webpage = self . _download_webpage ( url , video_id )
mgid = self . _extract_mgid ( webpage )
return self . url_result ( ' http://media.mtvnservices.com/embed/ %s ' % mgid )