1 from __future__
import unicode_literals
5 from .common
import InfoExtractor
13 class HuffPostIE(InfoExtractor
):
14 IE_DESC
= 'Huffington Post'
16 https?://(embed\.)?live\.huffingtonpost\.com/
19 HPLEmbedPlayer/\?segmentId=
24 'url': 'http://live.huffingtonpost.com/r/segment/legalese-it/52dd3e4b02a7602131000677',
25 'md5': '55f5e8981c1c80a64706a44b74833de8',
27 'id': '52dd3e4b02a7602131000677',
29 'title': 'Legalese It! with @MikeSacksHP',
30 'description': 'This week on Legalese It, Mike talks to David Bosco about his new book on the ICC, "Rough Justice," he also discusses the Virginia AG\'s historic stance on gay marriage, the execution of Edgar Tamayo, the ICC\'s delay of Kenya\'s President and more. ',
32 'upload_date': '20140124',
36 'skip_download': True,
38 'expected_warnings': ['HTTP Error 404: Not Found'],
41 def _real_extract(self
, url
):
42 video_id
= self
._match
_id
(url
)
44 api_url
= 'http://embed.live.huffingtonpost.com/api/segments/%s.json' % video_id
45 data
= self
._download
_json
(api_url
, video_id
)['data']
47 video_title
= data
['title']
48 duration
= parse_duration(data
.get('running_time'))
49 upload_date
= unified_strdate(
50 data
.get('schedule', {}).get('starts_at') or data
.get('segment_start_date_time'))
51 description
= data
.get('description')
54 for url
in filter(None, data
['images'].values()):
55 m
= re
.match('.*-([0-9]+x[0-9]+)\.', url
)
60 'resolution': m
.group(1),
64 sources
= data
.get('sources', {})
65 live_sources
= list(sources
.get('live', {}).items()) + list(sources.get('live_again', {}
).items())
66 for key
, url
in live_sources
:
67 ext
= determine_ext(url
)
69 formats
.extend(self
._extract
_m
3u8_formats
(
70 url
, video_id
, ext
='mp4', m3u8_id
='hls', fatal
=False))
72 formats
.extend(self
._extract
_f
4m
_formats
(
73 url
+ '?hdcore=2.9.5', video_id
, f4m_id
='hds', fatal
=False))
77 'format_id': key
.replace('/', '.'),
80 'vcodec': 'none' if key
.startswith('audio/') else None,
83 if not formats
and data
.get('fivemin_id'):
84 return self
.url_result('5min:%s' % data
['fivemin_id'])
86 self
._sort
_formats
(formats
)
91 'description': description
,
94 'upload_date': upload_date
,
95 'thumbnails': thumbnails
,