X-Git-Url: https://code.delx.au/youtube-cgi/blobdiff_plain/72632096a78cec42c319ffd6ed44171c855d3b16..a5b20338f8021736597d240c73ba461f841ad392:/youtube.cgi diff --git a/youtube.cgi b/youtube.cgi index 7e76456..67153e2 100755 --- a/youtube.cgi +++ b/youtube.cgi @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python2 from __future__ import division @@ -79,6 +79,9 @@ urlopener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) referrer = "" def urlopen(url, offset=None): + if url.startswith("//"): + url = "http:" + url + global referrer req = urllib2.Request(url) if referrer: @@ -146,11 +149,11 @@ def get_player_config(doc): return player_config def extract_function(output, script, func_name): - p1 = script.find("function " + func_name) + p1 = script.find("function " + func_name + "(") p2 = script.find("}", p1) code = script[p1:p2+1] output.append(code) - deps = re.findall(R"[^\.]\b([a-zA-Z]+)\(", code) + deps = re.findall(R"[^\.][= ]([\$0-9a-zA-Z]+)\(", code) deps = set(deps) deps.remove(func_name) for dep in deps: @@ -207,9 +210,13 @@ def get_best_video(player_config): video_url = url_data["url"][0] if "sig" in url_data: signature = url_data["sig"][0] - else: + elif "s" in url_data: signature = decode_signature(js_url, url_data["s"][0]) - video_url = append_to_qs(video_url, {"signature": signature}) + else: + signature = None + + if signature: + video_url = append_to_qs(video_url, {"signature": signature}) best_url = video_url best_quality = quality