#NEWLINE# def _real_extract( self , url ) : #NEWLINE# #INDENT# mobj = re . match ( self . _VALID_URL , url ) #NEWLINE# display_id = mobj . group ( 'display_id' ) #NEWLINE# webpage = self . _download_webpage ( url , display_id ) #NEWLINE# query_string = self . _search_regex ( "queryString\\s*=\\s*'([^']+)'" , webpage , 'query string' ) #NEWLINE# video_id = self . _search_regex ( 'content=([^&]+)' , query_string , 'video ID' ) #NEWLINE# query_url = ( 'http://video.vulture.com/embed/player/container/1000/1000/?%s' % query_string ) #NEWLINE# query_webpage = self . _download_webpage ( query_url , display_id , note = 'Downloading query page' ) #NEWLINE# params_json = self . _search_regex ( '(?sm)new MagnifyEmbeddablePlayer\\({.*?contentItem:\\s*(\\{.*?\\})\\n,\\n' , query_webpage , 'player params' ) #NEWLINE# params = json . loads ( params_json ) #NEWLINE# upload_timestamp = parse_iso8601 ( params [ 'posted' ] . replace ( ' ' , 'T' ) ) #NEWLINE# uploader_id = params . get ( 'user' , { #NEWLINE# #INDENT# #NEWLINE# #UNINDENT# } ) . get ( 'handle' ) #NEWLINE# media_item = params [ 'media_item' ] #NEWLINE# title = os . path . splitext ( media_item [ 'title' ] ) [ 0 ] #NEWLINE# duration = int_or_none ( media_item . get ( 'duration_seconds' ) ) #NEWLINE# return { #NEWLINE# #INDENT# 'id' : video_id , #NEWLINE# 'display_id' : display_id , #NEWLINE# 'url' : media_item [ 'pipeline_xid' ] , #NEWLINE# 'title' : title , #NEWLINE# 'timestamp' : upload_timestamp , #NEWLINE# 'thumbnail' : params . get ( 'thumbnail_url' ) , #NEWLINE# 'uploader_id' : uploader_id , #NEWLINE# 'description' : params . get ( 'description' ) , #NEWLINE# 'duration' : duration , #NEWLINE# #UNINDENT# }