<s> from __future__ import unicode_literals <EOL> import re <EOL> from . common import InfoExtractor <EOL> from . . utils import ( <EOL> parse_duration , <EOL> unified_strdate , <EOL> ) <EOL> class HuffPostIE ( InfoExtractor ) : <EOL> IE_DESC = '<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:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> } <EOL> def _real_extract ( self , url ) : <EOL> video_id = self . _match_id ( url ) <EOL> api_url = '<STR_LIT>' % video_id <EOL> data = self . _download_json ( api_url , video_id ) [ '<STR_LIT:data>' ] <EOL> video_title = data [ '<STR_LIT:title>' ] <EOL> duration = parse_duration ( data . get ( '<STR_LIT>' ) ) <EOL> upload_date = unified_strdate ( <EOL> data . get ( '<STR_LIT>' , { } ) . get ( '<STR_LIT>' ) or data . get ( '<STR_LIT>' ) ) <EOL> description = data . get ( '<STR_LIT:description>' ) <EOL> thumbnails = [ ] <EOL> for url in data [ '<STR_LIT>' ] . values ( ) : <EOL> m = re . match ( '<STR_LIT>' , url ) <EOL> if not m : <EOL> continue <EOL> thumbnails . append ( { <EOL> '<STR_LIT:url>' : url , <EOL> '<STR_LIT>' : m . group ( <NUM_LIT:1> ) , <EOL> } ) <EOL> formats = [ { <EOL> '<STR_LIT>' : key , <EOL> '<STR_LIT>' : key . replace ( '<STR_LIT:/>' , '<STR_LIT:.>' ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:url>' : url , <EOL> '<STR_LIT>' : '<STR_LIT:none>' if key . startswith ( '<STR_LIT>' ) else None , <EOL> } for key , url in data . get ( '<STR_LIT>' , { } ) . get ( '<STR_LIT>' , { } ) . items ( ) ] <EOL> if not formats and data . get ( '<STR_LIT>' ) : <EOL> return self . url_result ( '<STR_LIT>' % data [ '<STR_LIT>' ] ) <EOL> self . _sort_formats ( formats ) <EOL> return { <EOL> '<STR_LIT:id>' : video_id , <EOL> '<STR_LIT:title>' : video_title , <EOL> '<STR_LIT:description>' : description , <EOL> '<STR_LIT>' : formats , <EOL> '<STR_LIT>' : duration , <EOL> '<STR_LIT>' : upload_date , <EOL> '<STR_LIT>' : thumbnails , <EOL> } </s>
