<s> from __future__ import unicode_literals <EOL> import json <EOL> import re <EOL> from . common import InfoExtractor <EOL> _translation_table = { <EOL> '<STR_LIT:a>' : '<STR_LIT:h>' , '<STR_LIT:d>' : '<STR_LIT:e>' , '<STR_LIT:e>' : '<STR_LIT:v>' , '<STR_LIT:f>' : '<STR_LIT:o>' , '<STR_LIT:g>' : '<STR_LIT:f>' , '<STR_LIT:i>' : '<STR_LIT:d>' , '<STR_LIT:l>' : '<STR_LIT:n>' , <EOL> '<STR_LIT:m>' : '<STR_LIT:a>' , '<STR_LIT:n>' : '<STR_LIT:m>' , '<STR_LIT:p>' : '<STR_LIT:u>' , '<STR_LIT:q>' : '<STR_LIT:t>' , '<STR_LIT:r>' : '<STR_LIT:s>' , '<STR_LIT:v>' : '<STR_LIT:p>' , '<STR_LIT:x>' : '<STR_LIT:r>' , <EOL> '<STR_LIT:y>' : '<STR_LIT:l>' , '<STR_LIT:z>' : '<STR_LIT:i>' , <EOL> '<STR_LIT:$>' : '<STR_LIT::>' , '<STR_LIT:&>' : '<STR_LIT:.>' , '<STR_LIT:(>' : '<STR_LIT:=>' , '<STR_LIT>' : '<STR_LIT:&>' , '<STR_LIT:=>' : '<STR_LIT:/>' , <EOL> } <EOL> def _decode ( s ) : <EOL> return '<STR_LIT>' . join ( _translation_table . get ( c , c ) for c in s ) <EOL> class CliphunterIE ( InfoExtractor ) : <EOL> IE_NAME = '<STR_LIT>' <EOL> _VALID_URL = r'''<STR_LIT>''' <EOL> _TEST = { <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>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <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_title = self . _search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT:title>' ) <EOL> pl_fiji = self . _search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' ) <EOL> pl_c_qual = self . _search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' ) <EOL> video_url = _decode ( pl_fiji ) <EOL> formats = [ { <EOL> '<STR_LIT:url>' : video_url , <EOL> '<STR_LIT>' : '<STR_LIT>' % pl_c_qual , <EOL> } ] <EOL> qualities_json = self . _search_regex ( <EOL> r'<STR_LIT>' , webpage , '<STR_LIT>' ) <EOL> qualities_data = json . loads ( qualities_json ) <EOL> for i , t in enumerate ( <EOL> re . findall ( r"<STR_LIT>" , webpage ) ) : <EOL> quality_id , crypted_url = t <EOL> video_url = _decode ( crypted_url ) <EOL> f = { <EOL> '<STR_LIT>' : quality_id , <EOL> '<STR_LIT:url>' : video_url , <EOL> '<STR_LIT>' : i , <EOL> } <EOL> if quality_id in qualities_data : <EOL> qd = qualities_data [ quality_id ] <EOL> m = re . match ( <EOL> r'''<STR_LIT>''' , qd ) <EOL> if m : <EOL> f [ '<STR_LIT:width>' ] = int ( m . group ( '<STR_LIT:width>' ) ) <EOL> f [ '<STR_LIT>' ] = int ( m . group ( '<STR_LIT>' ) ) <EOL> f [ '<STR_LIT>' ] = int ( m . group ( '<STR_LIT>' ) ) <EOL> formats . append ( f ) <EOL> self . _sort_formats ( formats ) <EOL> thumbnail = self . _search_regex ( <EOL> r"<STR_LIT>" , <EOL> webpage , '<STR_LIT>' , fatal = False ) <EOL> return { <EOL> '<STR_LIT:id>' : video_id , <EOL> '<STR_LIT:title>' : video_title , <EOL> '<STR_LIT>' : formats , <EOL> '<STR_LIT>' : self . _rta_search ( webpage ) , <EOL> '<STR_LIT>' : thumbnail , <EOL> } </s>
