2014-07-22 10:34:34 -05:00
from __future__ import unicode_literals
2016-06-19 17:40:00 -05:00
from . theplatform import ThePlatformFeedIE
2015-11-21 10:18:17 -06:00
from . . utils import (
2016-04-01 01:33:37 -05:00
int_or_none ,
find_xpath_attr ,
2015-11-21 10:18:17 -06:00
)
2013-12-15 20:53:43 -06:00
2016-06-19 17:40:00 -05:00
class CBSBaseIE ( ThePlatformFeedIE ) :
2016-04-01 04:12:29 -05:00
def _parse_smil_subtitles ( self , smil , namespace = None , subtitles_lang = ' en ' ) :
closed_caption_e = find_xpath_attr ( smil , self . _xpath_ns ( ' .//param ' , namespace ) , ' name ' , ' ClosedCaptionURL ' )
return {
' en ' : [ {
' ext ' : ' ttml ' ,
' url ' : closed_caption_e . attrib [ ' value ' ] ,
} ]
} if closed_caption_e is not None and closed_caption_e . attrib . get ( ' value ' ) else [ ]
2016-06-19 17:40:00 -05:00
def _extract_video_info ( self , filter_query , video_id ) :
return self . _extract_feed_info (
' dJ5BDC ' , ' VxxJg8Ymh8sE ' , filter_query , video_id , lambda entry : {
' series ' : entry . get ( ' cbs$SeriesTitle ' ) ,
' season_number ' : int_or_none ( entry . get ( ' cbs$SeasonNumber ' ) ) ,
' episode ' : entry . get ( ' cbs$EpisodeTitle ' ) ,
' episode_number ' : int_or_none ( entry . get ( ' cbs$EpisodeNumber ' ) ) ,
} , {
' StreamPack ' : {
' manifest ' : ' m3u ' ,
}
} )
2016-04-01 04:12:29 -05:00
class CBSIE ( CBSBaseIE ) :
2016-06-19 17:55:19 -05:00
_VALID_URL = r ' (?:cbs:|https?://(?:www \ .)?(?:cbs \ .com/shows/[^/]+/video|colbertlateshow \ .com/(?:video|podcasts))/)(?P<id>[ \ w-]+) '
2013-12-15 20:53:43 -06:00
2014-07-22 09:56:42 -05:00
_TESTS = [ {
2014-07-22 10:34:34 -05:00
' url ' : ' http://www.cbs.com/shows/garth-brooks/video/_u7W953k6la293J7EPTd9oHkSPs6Xn6_/connect-chat-feat-garth-brooks/ ' ,
' info_dict ' : {
2016-04-01 01:33:37 -05:00
' id ' : ' _u7W953k6la293J7EPTd9oHkSPs6Xn6_ ' ,
2015-06-09 10:39:45 -05:00
' display_id ' : ' connect-chat-feat-garth-brooks ' ,
2016-04-01 01:33:37 -05:00
' ext ' : ' mp4 ' ,
2014-07-22 10:34:34 -05:00
' title ' : ' Connect Chat feat. Garth Brooks ' ,
' description ' : ' Connect with country music singer Garth Brooks, as he chats with fans on Wednesday November 27, 2013. Be sure to tune in to Garth Brooks: Live from Las Vegas, Friday November 29, at 9/8c on CBS! ' ,
' duration ' : 1495 ,
2016-04-01 12:06:11 -05:00
' timestamp ' : 1385585425 ,
' upload_date ' : ' 20131127 ' ,
' uploader ' : ' CBSI-NEW ' ,
2013-12-15 20:53:43 -06:00
} ,
2016-06-19 17:40:00 -05:00
' expected_warnings ' : [ ' Failed to download m3u8 information ' ] ,
2014-07-22 10:34:34 -05:00
' _skip ' : ' Blocked outside the US ' ,
2015-06-09 10:23:53 -05:00
} , {
' url ' : ' http://colbertlateshow.com/video/8GmB0oY0McANFvp2aEffk9jZZZ2YyXxy/the-colbeard/ ' ,
' only_matching ' : True ,
} , {
2015-06-09 10:39:45 -05:00
' url ' : ' http://www.colbertlateshow.com/podcasts/dYSwjqPs_X1tvbV_P2FcPWRa_qT6akTC/in-the-bad-room-with-stephen/ ' ,
2015-06-09 10:23:53 -05:00
' only_matching ' : True ,
2014-07-22 09:56:42 -05:00
} ]
2016-04-15 16:38:37 -05:00
TP_RELEASE_URL_TEMPLATE = ' http://link.theplatform.com/s/dJ5BDC/ %s ?mbr=true '
2016-04-01 01:33:37 -05:00
2013-12-15 20:53:43 -06:00
def _real_extract ( self , url ) :
2016-06-19 17:40:00 -05:00
content_id = self . _match_id ( url )
return self . _extract_video_info ( ' byGuid= %s ' % content_id , content_id )