update youtube.py

This commit is contained in:
Mort Yao 2013-03-22 14:19:44 +01:00
parent 7476f2ab5d
commit 533633c716

View File

@ -34,12 +34,13 @@ youtube_codecs = [
def parse_video_info(raw_info): def parse_video_info(raw_info):
"""Parser for YouTube's get_video_info data. """Parser for YouTube's get_video_info data.
Returns a map, with 'url_encoded_fmt_stream_map' field being a sorted list. Returns a dict, where 'url_encoded_fmt_stream_map' maps to a sorted list.
""" """
# Percent-encoding reserved characters, used as separators. # Percent-encoding reserved characters, used as separators.
separator = { sepr = {
'&': '%26', '&': '%26',
',': '%2C',
'=': '%3D', '=': '%3D',
} }
@ -53,17 +54,20 @@ def parse_video_info(raw_info):
youtube_codecs], youtube_codecs],
range(len(youtube_codecs)))) range(len(youtube_codecs))))
# {key1: value1, key2: value2, ...,
# 'url_encoded_fmt_stream_map': [{'itag': '38', ...}, ...]
# }
return dict( return dict(
[(lambda metadata: [(lambda metadata:
['url_encoded_fmt_stream_map', ( ['url_encoded_fmt_stream_map', (
lambda url_encoded_fmt_stream_map: lambda stream_map:
sorted( sorted(
[dict( [dict(
[sub_item.split(separator['=']) [subitem.split(sepr['='])
for sub_item in for subitem in
item.split(separator['&'])]) item.split(sepr['&'])])
for item in for item in
url_encoded_fmt_stream_map.split('%2C')], stream_map.split(sepr[','])],
key = key =
lambda stream: lambda stream:
fmt_level[stream['itag']])) fmt_level[stream['itag']]))