2014-01-22 13:50:49 +11:00
from __future__ import unicode_literals
2013-12-04 00:58:24 +11:00
from . mtv import MTVServicesInfoExtractor
2016-08-02 22:02:31 +10:00
from . common import InfoExtractor
2013-06-24 04:50:22 +10:00
2013-12-04 00:58:24 +11:00
class ComedyCentralIE ( MTVServicesInfoExtractor ) :
2014-07-17 06:37:01 +10:00
_VALID_URL = r ''' (?x)https?://(?:www \ .)?cc \ .com/
2016-11-30 21:52:19 +11:00
( video - clips | episodes | cc - studios | video - collections | shows ( ? = / [ ^ / ] + / ( ? ! full - episodes ) ) )
2014-01-02 07:11:35 +11:00
/ ( ? P < title > . * ) '''
2014-01-22 13:50:49 +11:00
_FEED_URL = ' http://comedycentral.com/feeds/mrss/ '
2013-11-25 07:18:35 +11:00
2016-02-13 22:26:27 +11:00
_TESTS = [ {
2014-07-17 06:37:01 +10:00
' url ' : ' http://www.cc.com/video-clips/kllhuv/stand-up-greg-fitzsimmons--uncensored---too-good-of-a-mother ' ,
2014-04-11 10:14:31 +10:00
' md5 ' : ' c4f48e9eda1b16dd10add0744344b6d8 ' ,
2014-01-22 13:50:49 +11:00
' info_dict ' : {
' id ' : ' cef0cbb3-e776-4bc9-b62e-8016deccb354 ' ,
' ext ' : ' mp4 ' ,
2016-07-26 13:06:50 +10:00
' title ' : ' CC:Stand-Up|August 18, 2013|1|0101|Uncensored - Too Good of a Mother ' ,
2014-01-22 13:50:49 +11:00
' description ' : ' After a certain point, breastfeeding becomes c**kblocking. ' ,
2016-07-26 13:06:50 +10:00
' timestamp ' : 1376798400 ,
' upload_date ' : ' 20130818 ' ,
2013-11-25 07:18:35 +11:00
} ,
2016-02-13 22:26:27 +11:00
} , {
' url ' : ' http://www.cc.com/shows/the-daily-show-with-trevor-noah/interviews/6yx39d/exclusive-rand-paul-extended-interview ' ,
' only_matching ' : True ,
} ]
2013-11-25 07:18:35 +11:00
2016-11-29 20:11:08 +11:00
class ComedyCentralFullEpisodesIE ( MTVServicesInfoExtractor ) :
_VALID_URL = r ''' (?x)https?://(?:www \ .)?cc \ .com/
2016-11-30 21:52:19 +11:00
( ? : full - episodes | shows ( ? = / [ ^ / ] + / full - episodes ) )
2016-11-29 20:11:08 +11:00
/ ( ? P < id > [ ^ ? ] + ) '''
_FEED_URL = ' http://comedycentral.com/feeds/mrss/ '
_TESTS = [ {
' url ' : ' http://www.cc.com/full-episodes/pv391a/the-daily-show-with-trevor-noah-november-28--2016---ryan-speedo-green-season-22-ep-22028 ' ,
' info_dict ' : {
' description ' : ' Donald Trump is accused of exploiting his president-elect status for personal gain, Cuban leader Fidel Castro dies, and Ryan Speedo Green discusses " Sing for Your Life. " ' ,
' title ' : ' November 28, 2016 - Ryan Speedo Green ' ,
} ,
' playlist_count ' : 4 ,
2016-11-30 21:52:19 +11:00
} , {
' url ' : ' http://www.cc.com/shows/the-daily-show-with-trevor-noah/full-episodes ' ,
' only_matching ' : True ,
2016-11-29 20:11:08 +11:00
} ]
def _real_extract ( self , url ) :
playlist_id = self . _match_id ( url )
webpage = self . _download_webpage ( url , playlist_id )
2017-01-14 10:17:03 +11:00
mgid = self . _extract_triforce_mgid ( webpage , data_zone = ' t2_lc_promo1 ' )
2017-01-11 02:30:47 +11:00
videos_info = self . _get_videos_info ( mgid )
2016-11-29 20:11:08 +11:00
return videos_info
2016-07-26 13:06:50 +10:00
class ToshIE ( MTVServicesInfoExtractor ) :
IE_DESC = ' Tosh.0 '
_VALID_URL = r ' ^https?://tosh \ .cc \ .com/video-(?:clips|collections)/[^/]+/(?P<videotitle>[^/?#]+) '
_FEED_URL = ' http://tosh.cc.com/feeds/mrss '
2014-09-02 01:57:45 +10:00
_TESTS = [ {
2016-07-26 13:06:50 +10:00
' url ' : ' http://tosh.cc.com/video-clips/68g93d/twitter-users-share-summer-plans ' ,
2015-01-31 05:43:46 +11:00
' info_dict ' : {
2016-07-26 13:06:50 +10:00
' description ' : ' Tosh asked fans to share their summer plans. ' ,
' title ' : ' Twitter Users Share Summer Plans ' ,
2015-01-31 05:43:46 +11:00
} ,
2016-07-26 13:06:50 +10:00
' playlist ' : [ {
' md5 ' : ' f269e88114c1805bb6d7653fecea9e06 ' ,
' info_dict ' : {
' id ' : ' 90498ec2-ed00-11e0-aca6-0026b9414f30 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' Tosh.0|June 9, 2077|2|211|Twitter Users Share Summer Plans ' ,
' description ' : ' Tosh asked fans to share their summer plans. ' ,
2017-01-02 23:08:07 +11:00
' thumbnail ' : r ' re:^https?://.* \ .jpg ' ,
2016-07-26 13:06:50 +10:00
# It's really reported to be published on year 2077
' upload_date ' : ' 20770610 ' ,
' timestamp ' : 3390510600 ,
' subtitles ' : {
' en ' : ' mincount:3 ' ,
2015-01-31 20:51:39 +11:00
} ,
} ,
2016-07-26 13:06:50 +10:00
} ]
2014-09-02 02:37:10 +10:00
} , {
2016-07-26 13:06:50 +10:00
' url ' : ' http://tosh.cc.com/video-collections/x2iz7k/just-plain-foul/m5q4fp ' ,
2016-05-22 06:58:41 +10:00
' only_matching ' : True ,
2014-09-02 01:57:45 +10:00
} ]
2013-06-24 04:50:22 +10:00
2016-07-17 19:58:58 +10:00
class ComedyCentralTVIE ( MTVServicesInfoExtractor ) :
_VALID_URL = r ' https?://(?:www \ .)?comedycentral \ .tv/(?:staffeln|shows)/(?P<id>[^/?#&]+) '
_TESTS = [ {
' url ' : ' http://www.comedycentral.tv/staffeln/7436-the-mindy-project-staffel-4 ' ,
' info_dict ' : {
' id ' : ' local_playlist-f99b626bdfe13568579a ' ,
' ext ' : ' flv ' ,
' title ' : ' Episode_the-mindy-project_shows_season-4_episode-3_full-episode_part1 ' ,
} ,
' params ' : {
# rtmp download
' skip_download ' : True ,
} ,
} , {
' url ' : ' http://www.comedycentral.tv/shows/1074-workaholics ' ,
' only_matching ' : True ,
} , {
' url ' : ' http://www.comedycentral.tv/shows/1727-the-mindy-project/bonus ' ,
' only_matching ' : True ,
} ]
def _real_extract ( self , url ) :
video_id = self . _match_id ( url )
webpage = self . _download_webpage ( url , video_id )
mrss_url = self . _search_regex (
r ' data-mrss=([ " \' ])(?P<url>(?:(?! \ 1).)+) \ 1 ' ,
webpage , ' mrss url ' , group = ' url ' )
return self . _get_videos_info_from_url ( mrss_url , video_id )
2016-08-02 22:02:31 +10:00
class ComedyCentralShortnameIE ( InfoExtractor ) :
2017-10-04 16:45:13 +11:00
_VALID_URL = r ' ^:(?P<id>tds|thedailyshow|theopposition)$ '
2016-08-02 22:02:31 +10:00
_TESTS = [ {
' url ' : ' :tds ' ,
' only_matching ' : True ,
} , {
' url ' : ' :thedailyshow ' ,
' only_matching ' : True ,
2017-10-04 16:45:13 +11:00
} , {
' url ' : ' :theopposition ' ,
' only_matching ' : True ,
2016-08-02 22:02:31 +10:00
} ]
def _real_extract ( self , url ) :
video_id = self . _match_id ( url )
shortcut_map = {
' tds ' : ' http://www.cc.com/shows/the-daily-show-with-trevor-noah/full-episodes ' ,
' thedailyshow ' : ' http://www.cc.com/shows/the-daily-show-with-trevor-noah/full-episodes ' ,
2017-10-04 16:45:13 +11:00
' theopposition ' : ' http://www.cc.com/shows/the-opposition-with-jordan-klepper/full-episodes ' ,
2016-08-02 22:02:31 +10:00
}
return self . url_result ( shortcut_map [ video_id ] )