#NEWLINE# def _real_extract( self , url ) : #NEWLINE# #INDENT# mobj = re . match ( self . _VALID_URL , url ) #NEWLINE# video_id = mobj . group ( 'id' ) #NEWLINE# display_id = mobj . group ( 'display_id' ) #NEWLINE# webpage = self . _download_webpage ( url , ( display_id or video_id ) ) #NEWLINE# title = self . _html_search_regex ( '<title>(.+) porn HD.+?</title>' , webpage , 'title' ) #NEWLINE# description = self . _html_search_regex ( '<div class="description">([^<]+)</div>' , webpage , 'description' , fatal = False ) #NEWLINE# view_count = int_or_none ( self . _html_search_regex ( '(\\d+) views\\s*</span>' , webpage , 'view count' , fatal = False ) ) #NEWLINE# thumbnail = self . _search_regex ( "'poster'\\s*:\\s*'([^']+)'" , webpage , 'thumbnail' , fatal = False ) #NEWLINE# quality = qualities ( [ 'sd' , 'hd' ] ) #NEWLINE# sources = json . loads ( js_to_json ( self . _search_regex ( "(?s)'sources'\\s*:\\s*(\\{.+?\\})\\s*\\}\\);" , webpage , 'sources' ) ) ) #NEWLINE# formats = [ ] #NEWLINE# for ( container , s ) in sources . items ( ) : #NEWLINE# #INDENT# for ( qname , video_url ) in s . items ( ) : #NEWLINE# #INDENT# formats . append ( { #NEWLINE# #INDENT# 'url' : video_url , #NEWLINE# 'container' : container , #NEWLINE# 'format_id' : ( '%s-%s' % ( container , qname ) ) , #NEWLINE# 'quality' : quality ( qname ) , #NEWLINE# #UNINDENT# } ) #NEWLINE# #UNINDENT# #UNINDENT# self . _sort_formats ( formats ) #NEWLINE# return { #NEWLINE# #INDENT# 'id' : video_id , #NEWLINE# 'display_id' : display_id , #NEWLINE# 'title' : title , #NEWLINE# 'description' : description , #NEWLINE# 'thumbnail' : thumbnail , #NEWLINE# 'view_count' : view_count , #NEWLINE# 'formats' : formats , #NEWLINE# 'age_limit' : 18 , #NEWLINE# #UNINDENT# }