aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Taylor <user234683@users.noreply.github.com>2018-12-23 02:16:15 -0800
committerJames Taylor <user234683@users.noreply.github.com>2018-12-23 02:16:15 -0800
commitb1fff10065a8bb4e3959ad2469527f502940de9b (patch)
tree518b576d49322271120ec089b42e534e65678dce
parent6217e6f558cb19fb756d6549e218008e76d4d29f (diff)
downloadyt-local-b1fff10065a8bb4e3959ad2469527f502940de9b.tar.lz
yt-local-b1fff10065a8bb4e3959ad2469527f502940de9b.tar.xz
yt-local-b1fff10065a8bb4e3959ad2469527f502940de9b.zip
common: support for POST data in fetch_url
-rw-r--r--youtube/common.py21
1 files changed, 10 insertions, 11 deletions
diff --git a/youtube/common.py b/youtube/common.py
index f534d84..cef1620 100644
--- a/youtube/common.py
+++ b/youtube/common.py
@@ -148,20 +148,19 @@ def decode_content(content, encoding_header):
content = gzip.decompress(content)
return content
-def fetch_url(url, headers=(), timeout=15, report_text=None):
- if isinstance(headers, list):
- headers += [('Accept-Encoding', 'gzip, br')]
- headers = dict(headers)
- elif isinstance(headers, tuple):
- headers += (('Accept-Encoding', 'gzip, br'),)
- headers = dict(headers)
- else:
- headers = headers.copy()
- headers['Accept-Encoding'] = 'gzip, br'
+def fetch_url(url, headers=(), timeout=15, report_text=None, data=None):
+ headers = dict(headers) # Note: Calling dict() on a dict will make a copy
+ headers['Accept-Encoding'] = 'gzip, br'
+ if data is not None:
+ if isinstance(data, str):
+ data = data.encode('ascii')
+ elif not isinstance(data, bytes):
+ data = urllib.parse.urlencode(data).encode('ascii')
+
start_time = time.time()
- req = urllib.request.Request(url, headers=headers)
+ req = urllib.request.Request(url, data=data, headers=headers)
response = urllib.request.urlopen(req, timeout=timeout)
response_time = time.time()