2015-12-31 12:02:33 +01:00
# coding: utf-8
from __future__ import unicode_literals
2016-09-20 16:52:23 +02:00
from . adobepass import AdobePassIE
2016-08-06 21:53:13 +02:00
from . . utils import (
2017-03-25 14:12:25 +01:00
int_or_none ,
2016-08-06 21:53:13 +02:00
smuggle_url ,
update_url_query ,
)
2015-12-31 12:02:33 +01:00
2016-09-20 16:52:23 +02:00
class FOXIE ( AdobePassIE ) :
2015-12-31 12:02:33 +01:00
_VALID_URL = r ' https?://(?:www \ .)?fox \ .com/watch/(?P<id>[0-9]+) '
_TEST = {
' url ' : ' http://www.fox.com/watch/255180355939/7684182528 ' ,
2016-02-09 17:30:42 +01:00
' md5 ' : ' ebd296fcc41dd4b19f8115d8461a3165 ' ,
2015-12-31 12:02:33 +01:00
' info_dict ' : {
' id ' : ' 255180355939 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' Official Trailer: Gotham ' ,
' description ' : ' Tracing the rise of the great DC Comics Super-Villains and vigilantes, Gotham reveals an entirely new chapter that has never been told. ' ,
' duration ' : 129 ,
2016-04-01 19:06:11 +02:00
' timestamp ' : 1400020798 ,
' upload_date ' : ' 20140513 ' ,
' uploader ' : ' NEWA-FNG-FOXCOM ' ,
2015-12-31 12:02:33 +01:00
} ,
' add_ie ' : [ ' ThePlatform ' ] ,
}
def _real_extract ( self , url ) :
video_id = self . _match_id ( url )
webpage = self . _download_webpage ( url , video_id )
2016-09-20 16:52:23 +02:00
settings = self . _parse_json ( self . _search_regex (
r ' jQuery \ .extend \ (Drupal \ .settings \ s*, \ s*( { .+?}) \ ); ' ,
webpage , ' drupal settings ' ) , video_id )
fox_pdk_player = settings [ ' fox_pdk_player ' ]
release_url = fox_pdk_player [ ' release_url ' ]
query = {
' mbr ' : ' true ' ,
' switch ' : ' http '
}
if fox_pdk_player . get ( ' access ' ) == ' locked ' :
ap_p = settings [ ' foxAdobePassProvider ' ]
rating = ap_p . get ( ' videoRating ' )
if rating == ' n/a ' :
rating = None
resource = self . _get_mvpd_resource ( ' fbc-fox ' , None , ap_p [ ' videoGUID ' ] , rating )
query [ ' auth ' ] = self . _extract_mvpd_auth ( url , video_id , ' fbc-fox ' , resource )
2015-12-31 12:02:33 +01:00
2017-03-25 14:12:25 +01:00
info = self . _search_json_ld ( webpage , video_id , fatal = False )
info . update ( {
2015-12-31 12:02:33 +01:00
' _type ' : ' url_transparent ' ,
' ie_key ' : ' ThePlatform ' ,
2016-09-20 16:52:23 +02:00
' url ' : smuggle_url ( update_url_query ( release_url , query ) , { ' force_smil_url ' : True } ) ,
2015-12-31 12:02:33 +01:00
' id ' : video_id ,
2017-03-25 14:12:25 +01:00
} )
return info