@ -9,7 +9,17 @@ from ..compat import compat_str
class DiscoveryIE ( InfoExtractor ) :
_VALID_URL = r ' https?://www \ .discovery \ .com \ /[a-zA-Z0-9 \ -]*/[a-zA-Z0-9 \ -]*/videos/(?P<id>[a-zA-Z0-9_ \ -]*)(?: \ .htm)? '
_VALID_URL = r ''' (?x)http://(?:www \ .)?(?:
discovery |
investigationdiscovery |
discoverylife |
animalplanet |
ahctv |
destinationamerica |
sciencechannel |
tlc |
velocity
) \. com / ( [ ^ / ] + / ) * ( ? P < id > [ ^ \. / \? #]+)'''
_TESTS = [ {
' url ' : ' http://www.discovery.com/tv-shows/mythbusters/videos/mission-impossible-outtakes.htm ' ,
' info_dict ' : {
@ -21,8 +31,8 @@ class DiscoveryIE(InfoExtractor):
' don \' t miss Adam moon-walking as Jamie ... behind Jamie \' s '
' back. ' ) ,
' duration ' : 156 ,
' timestamp ' : 1303099200 ,
' upload_date ' : ' 20110418 ' ,
' timestamp ' : 1302032462 ,
' upload_date ' : ' 20110405 ' ,
} ,
' params ' : {
' skip_download ' : True , # requires ffmpeg
@ -33,27 +43,38 @@ class DiscoveryIE(InfoExtractor):
' id ' : ' mythbusters-the-simpsons ' ,
' title ' : ' MythBusters: The Simpsons ' ,
} ,
' playlist_count ' : 9 ,
' playlist_mincount ' : 10 ,
} , {
' url ' : ' http://www.animalplanet.com/longfin-eels-maneaters/ ' ,
' info_dict ' : {
' id ' : ' 78326 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' Longfin Eels: Maneaters? ' ,
' description ' : ' Jeremy Wade tests whether or not New Zealand \' s longfin eels are man-eaters by covering himself in fish guts and getting in the water with them. ' ,
' upload_date ' : ' 20140725 ' ,
' timestamp ' : 1406246400 ,
' duration ' : 116 ,
} ,
} ]
def _real_extract ( self , url ) :
video_id = self . _match_id ( url )
info = self . _download_json ( url + ' ?flat=1 ' , video_id )
display _id = self . _match_id ( url )
info = self . _download_json ( url + ' ?flat=1 ' , display _id)
video_title = info . get ( ' playlist_title ' ) or info . get ( ' video_title ' )
entries = [ {
' id ' : compat_str ( video_info [ ' id ' ] ) ,
' formats ' : self . _extract_m3u8_formats (
video_info [ ' src ' ] , video_id , ext = ' mp4 ' ,
video_info [ ' src ' ] , display_id , ' mp4 ' , ' m3u8_native ' , m3u8_id = ' hls ' ,
note = ' Download m3u8 information for video %d ' % ( idx + 1 ) ) ,
' title ' : video_info [ ' title ' ] ,
' description ' : video_info . get ( ' description ' ) ,
' duration ' : parse_duration ( video_info . get ( ' video_length ' ) ) ,
' webpage_url ' : video_info . get ( ' href ' ) ,
' webpage_url ' : video_info . get ( ' href ' ) or video_info . get ( ' url ' ) ,
' thumbnail ' : video_info . get ( ' thumbnailURL ' ) ,
' alt_title ' : video_info . get ( ' secondary_title ' ) ,
' timestamp ' : parse_iso8601 ( video_info . get ( ' publishedDate ' ) ) ,
} for idx , video_info in enumerate ( info [ ' playlist ' ] ) ]
return self . playlist_result ( entries , video _id, video_title )
return self . playlist_result ( entries , display _id, video_title )