From a34ea48b292a73519fa06c4bfdd11d7f0730d42f Mon Sep 17 00:00:00 2001 From: James Bunton Date: Wed, 26 Dec 2012 10:09:49 +1100 Subject: [PATCH] fixed parsing of video url data --- youtube.cgi | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/youtube.cgi b/youtube.cgi index f5845a4..a54fa91 100755 --- a/youtube.cgi +++ b/youtube.cgi @@ -4,7 +4,6 @@ from __future__ import division import cookielib import cgi -import itertools import json from lxml import html import os @@ -142,22 +141,26 @@ def get_player_config(doc): return player_config def get_best_video(player_config): - url_data = urlparse.parse_qs(player_config["args"]["url_encoded_fmt_stream_map"]) - url_data = itertools.izip_longest( - url_data["url"], - url_data["type"], - url_data["quality"], - url_data.get("sig", []), - ) + url_data_list = player_config["args"]["url_encoded_fmt_stream_map"].split(",") + best_url = None best_quality = None best_extension = None - for video_url, mimetype, quality, signature in url_data: - mimetype = mimetype.split(";")[0] + for url_data in url_data_list: + url_data = urlparse.parse_qs(url_data) + video_url = url_data["url"][0] + mimetype = url_data["type"][0].split(";")[0] + quality = url_data["quality"][0] + signature = url_data["sig"][0] + + if quality not in QUALITIES: + continue if mimetype not in MIMETYPES: continue + extension = MIMETYPES[mimetype] - quality = QUALITIES.get(quality.split(",")[0], -1) + quality = QUALITIES.get(quality, -1) + if best_quality is None or quality > best_quality: if signature: video_url = append_to_qs(video_url, {"signature": signature}) -- 2.39.2