<s> from __future__ import unicode_literals <EOL> import re <EOL> from . common import InfoExtractor <EOL> from . . utils import ( <EOL> parse_duration , <EOL> str_to_int , <EOL> ) <EOL> class VpornIE ( InfoExtractor ) : <EOL> _VALID_URL = r'<STR_LIT>' <EOL> _TESTS = [ <EOL> { <EOL> '<STR_LIT:url>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:id>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:title>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : int , <EOL> '<STR_LIT>' : int , <EOL> '<STR_LIT>' : int , <EOL> '<STR_LIT>' : int , <EOL> } <EOL> } , <EOL> { <EOL> '<STR_LIT:url>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:id>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:title>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : int , <EOL> '<STR_LIT>' : int , <EOL> '<STR_LIT>' : int , <EOL> '<STR_LIT>' : int , <EOL> } <EOL> } , <EOL> ] <EOL> def _real_extract ( self , url ) : <EOL> mobj = re . match ( self . _VALID_URL , url ) <EOL> video_id = mobj . group ( '<STR_LIT:id>' ) <EOL> display_id = mobj . group ( '<STR_LIT>' ) <EOL> webpage = self . _download_webpage ( url , display_id ) <EOL> title = self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT:title>' ) . strip ( ) <EOL> description = self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT:description>' , fatal = False ) <EOL> thumbnail = self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT:description>' , fatal = False , default = None ) <EOL> if thumbnail : <EOL> thumbnail = '<STR_LIT>' + thumbnail <EOL> uploader = self . _html_search_regex ( <EOL> r'<STR_LIT>' , <EOL> webpage , '<STR_LIT>' , fatal = False ) <EOL> categories = re . findall ( r'<STR_LIT>' , webpage ) <EOL> duration = parse_duration ( self . _search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' , fatal = False ) ) <EOL> view_count = str_to_int ( self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' , fatal = False ) ) <EOL> like_count = str_to_int ( self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' , fatal = False ) ) <EOL> dislike_count = str_to_int ( self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' , fatal = False ) ) <EOL> comment_count = str_to_int ( self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' , fatal = False ) ) <EOL> formats = [ ] <EOL> for video in re . findall ( r'<STR_LIT>' , webpage ) : <EOL> video_url = video [ <NUM_LIT:1> ] <EOL> fmt = { <EOL> '<STR_LIT:url>' : video_url , <EOL> '<STR_LIT>' : video [ <NUM_LIT:0> ] , <EOL> } <EOL> m = re . search ( r'<STR_LIT>' , video_url ) <EOL> if m : <EOL> fmt . update ( { <EOL> '<STR_LIT:width>' : int ( m . group ( '<STR_LIT:width>' ) ) , <EOL> '<STR_LIT>' : int ( m . group ( '<STR_LIT>' ) ) , <EOL> '<STR_LIT>' : int ( m . group ( '<STR_LIT>' ) ) , <EOL> } ) <EOL> formats . append ( fmt ) <EOL> self . _sort_formats ( formats ) <EOL> return { <EOL> '<STR_LIT:id>' : video_id , <EOL> '<STR_LIT>' : display_id , <EOL> '<STR_LIT:title>' : title , <EOL> '<STR_LIT:description>' : description , <EOL> '<STR_LIT>' : thumbnail , <EOL> '<STR_LIT>' : uploader , <EOL> '<STR_LIT>' : categories , <EOL> '<STR_LIT>' : duration , <EOL> '<STR_LIT>' : view_count , <EOL> '<STR_LIT>' : like_count , <EOL> '<STR_LIT>' : dislike_count , <EOL> '<STR_LIT>' : comment_count , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : formats , <EOL> } </s>
