+ def _real_extract(self, url):
+ video_id = self._match_id(url)
+ webpage = self._download_webpage(url, video_id)
+
+ imsVideo = self._parse_json(
+ self._search_regex(
+ r'imsVideo\.play\(({.+?})\);', webpage, 'imsVideo'),
+ video_id)
+ video_id = imsVideo['videoID']
+ key = imsVideo['hash']
+
+ quality = qualities(['lq', 'hq', 'hd'])
+
+ formats = []
+ for q in ['lq', 'hq', 'hd']:
+ config_req = compat_urllib_request.Request(
+ 'http://www.escapistmagazine.com/videos/'
+ 'vidconfig.php?videoID=%s&hash=%s&quality=%s' % (video_id, key, 'mp4_' + q))
+ config_req.add_header('Referer', url)
+ config = self._download_webpage(config_req, video_id, 'Downloading video config ' + q.upper())
+
+ data = json.loads(_decrypt_config(key, config))
+
+ title = clean_html(data['videoData']['title'])
+ duration = data['videoData']['duration'] / 1000
+
+ for i, v in enumerate(data['files']['videos']):
+
+ formats.append({
+ 'url': v,
+ 'format_id': determine_ext(v) + '_' + q + str(i),
+ 'quality': quality(q),
+ })
+
+ return {
+ 'id': video_id,
+ 'formats': formats,