From 65a17baddbcccc5cd4d4234cdfde5803e60a0899 Mon Sep 17 00:00:00 2001 From: James Bunton Date: Wed, 9 Apr 2014 23:00:26 +1000 Subject: [PATCH] fixes for recent changes --- youtube.cgi | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/youtube.cgi b/youtube.cgi index fef9beb..56b8937 100755 --- a/youtube.cgi +++ b/youtube.cgi @@ -117,36 +117,18 @@ def append_to_qs(url, params): url = urlparse.urlunsplit(r) return url -def convert_from_old_itag(player_config): - url_data = urlparse.parse_qs(player_config["args"]["url_encoded_fmt_stream_map"]) - url_data["url"] = [] - for itag_url in url_data["itag"]: - pos = itag_url.find("url=") - url_data["url"].append(itag_url[pos+4:]) - player_config["args"]["url_encoded_fmt_stream_map"] = urllib.urlencode(url_data, True) - def get_player_config(doc): player_config = None for script in doc.xpath("//script"): if not script.text: continue for line in script.text.split("\n"): - if "yt.playerConfig =" in line: - p1 = line.find("=") - p2 = line.rfind(";") - if p1 >= 0 and p2 > 0: - return json.loads(line[p1+1:p2]) - if "ytplayer.config =" in line: - p1 = line.find("ytplayer.config =") - p2 = line.rfind(";") + s = "ytplayer.config = {" + if s in line: + p1 = line.find(s) + len(s) - 1 + p2 = line.find("};", p1) + 1 if p1 >= 0 and p2 > 0: - return json.loads(line[p1+18:p2]) - if "'PLAYER_CONFIG': " in line: - p1 = line.find(":") - if p1 >= 0: - player_config = json.loads(line[p1+1:]) - convert_from_old_itag(player_config) - return player_config + return json.loads(line[p1:p2]) def extract_function(output, script, func_name): p1 = script.find("function " + func_name + "(") -- 2.39.2