From d5942525de7b54f7559402d52e89ec08fd987152 Mon Sep 17 00:00:00 2001 From: Christopher Rosell Date: Fri, 7 Sep 2012 12:39:17 +0200 Subject: Get rid of urllib and use requests instead. --- src/livestreamer/utils.py | 50 +++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 30 deletions(-) (limited to 'src/livestreamer/utils.py') diff --git a/src/livestreamer/utils.py b/src/livestreamer/utils.py index 75e7213..90b9379 100644 --- a/src/livestreamer/utils.py +++ b/src/livestreamer/utils.py @@ -1,9 +1,13 @@ -from .compat import urllib from .plugins import PluginError -import hmac, hashlib, zlib, argparse +import argparse +import hashlib +import hmac +import requests +import zlib -SWF_KEY = b"Genuine Adobe Flash Player 001" +SWFKey = b"Genuine Adobe Flash Player 001" +RequestsConfig = { "danger_mode": True } class ArgumentParser(argparse.ArgumentParser): def convert_arg_line_to_args(self, line): @@ -18,42 +22,28 @@ class ArgumentParser(argparse.ArgumentParser): else: yield "--%s" % line -def urlopen(url, data=None, timeout=None, opener=None): - try: - if opener is not None: - fd = opener.open(url, data, timeout) - else: - fd = urllib.urlopen(url, data, timeout) - - except IOError as err: - if type(err) is urllib.URLError: - raise PluginError(err.reason) - else: - raise PluginError(err) - - return fd - -def urlget(url, data=None, timeout=15, opener=None): - fd = urlopen(url, data, timeout, opener) +def urlopen(url, method="get", **args): + if "data" in args and args["data"] is not None: + method = "post" try: - data = fd.read() - fd.close() - except IOError as err: - if type(err) is urllib.URLError: - raise PluginError(err.reason) - else: - raise PluginError(err) + res = requests.request(method, url, config=RequestsConfig, timeout=15, **args) + except requests.exceptions.RequestException as err: + raise PluginError(("Unable to open URL: {url} ({err})").format(url=url, err=str(err))) + + return res - return data +def urlget(url, **args): + return urlopen(url, method="get", **args) def swfverify(url): - swf = urlget(url) + res = urlopen(url) + swf = res.content if swf[:3] == b"CWS": swf = b"F" + swf[1:8] + zlib.decompress(swf[8:]) - h = hmac.new(SWF_KEY, swf, hashlib.sha256) + h = hmac.new(SWFKey, swf, hashlib.sha256) return h.hexdigest(), len(swf) -- cgit v1.2.3