<s> from __future__ import unicode_literals <EOL> from . common import InfoExtractor <EOL> from . . compat import ( <EOL> compat_parse_qs , <EOL> compat_urllib_request , <EOL> ) <EOL> from . . utils import ( <EOL> ExtractorError , <EOL> ) <EOL> class ScreencastIE ( InfoExtractor ) : <EOL> _VALID_URL = r'<STR_LIT>' <EOL> _TESTS = [ { <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:title>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <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:title>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <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:title>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <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:title>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> } , <EOL> ] <EOL> def _real_extract ( self , url ) : <EOL> video_id = self . _match_id ( url ) <EOL> webpage = self . _download_webpage ( url , video_id ) <EOL> video_url = self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , <EOL> '<STR_LIT>' , default = None ) <EOL> if video_url is None : <EOL> flash_vars_s = self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' , <EOL> default = None ) <EOL> if not flash_vars_s : <EOL> flash_vars_s = self . _html_search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' , <EOL> default = None ) <EOL> if flash_vars_s : <EOL> flash_vars_s = flash_vars_s . replace ( '<STR_LIT:U+002C>' , '<STR_LIT:&>' ) <EOL> if flash_vars_s : <EOL> flash_vars = compat_parse_qs ( flash_vars_s ) <EOL> video_url_raw = compat_urllib_request . quote ( <EOL> flash_vars [ '<STR_LIT:content>' ] [ <NUM_LIT:0> ] ) <EOL> video_url = video_url_raw . replace ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> if video_url is None : <EOL> video_meta = self . _html_search_meta ( <EOL> '<STR_LIT>' , webpage , default = None ) <EOL> if video_meta : <EOL> video_url = self . _search_regex ( <EOL> r'<STR_LIT>' , video_meta , <EOL> '<STR_LIT>' , default = None ) <EOL> if video_url is None : <EOL> raise ExtractorError ( '<STR_LIT>' ) <EOL> title = self . _og_search_title ( webpage , default = None ) <EOL> if title is None : <EOL> title = self . _html_search_regex ( <EOL> [ r'<STR_LIT>' , <EOL> r'<STR_LIT>' ] , <EOL> webpage , '<STR_LIT:title>' ) <EOL> thumbnail = self . _og_search_thumbnail ( webpage ) <EOL> description = self . _og_search_description ( webpage , default = None ) <EOL> if description is None : <EOL> description = self . _html_search_meta ( '<STR_LIT:description>' , webpage ) <EOL> return { <EOL> '<STR_LIT:id>' : video_id , <EOL> '<STR_LIT:url>' : video_url , <EOL> '<STR_LIT:title>' : title , <EOL> '<STR_LIT:description>' : description , <EOL> '<STR_LIT>' : thumbnail , <EOL> } </s>
