- flash_vars = self._parse_json(
- self._search_regex(
- r'var\s+flashvars\s*=\s*({.+?});', webpage, 'flash vars'),
- video_id)
-
- formats = []
- for quality_key, video_url in flash_vars.items():
- height = int_or_none(self._search_regex(
- r'quality_(\d+)[pP]$', quality_key, 'height', default=None))
- if not height:
- continue
- f = {
- 'url': video_url,
- }
- mobj = re.search(
- r'/(?P<height>\d{3,4})[pP]_(?P<bitrate>\d+)[kK]_\d+', video_url)
- if mobj:
- height = int(mobj.group('height'))
- bitrate = int(mobj.group('bitrate'))
- f.update({
- 'format_id': '%dp-%dk' % (height, bitrate),
- 'height': height,
- 'tbr': bitrate,
- })
- else:
- f.update({
- 'format_id': '%dp' % height,
- 'height': height,
- })
- formats.append(f)
- self._sort_formats(formats)
-
- return {
- 'id': video_id,
- 'title': video_title,
- 'formats': formats,