Skip to content

Commit e95d6c9

Browse files
authored
Add files via upload
1 parent 7e2567b commit e95d6c9

8 files changed

Lines changed: 284 additions & 14 deletions

PyWWW/pywwwget_chatgpt.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,9 +1004,32 @@ def upload_file_to_pysftp_string(data, url):
10041004
return False
10051005
return upload_file_to_sftp_string(data, url)
10061006

1007-
# --------------------------
1008-
# HTTP helpers (download only)
1009-
# --------------------------
1007+
def decoded_stream(resp):
1008+
# resp can be urllib response or anything file-like with headers
1009+
enc = None
1010+
try:
1011+
enc = resp.headers.get("Content-Encoding")
1012+
except Exception:
1013+
pass
1014+
1015+
if not enc:
1016+
return resp
1017+
1018+
enc = enc.lower().strip()
1019+
1020+
if enc == "gzip":
1021+
return gzip.GzipFile(fileobj=resp)
1022+
if enc == "deflate":
1023+
# deflate is ambiguous; try zlib header first, then raw deflate
1024+
data = resp.read()
1025+
try:
1026+
return io.BytesIO(zlib.decompress(data))
1027+
except zlib.error:
1028+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1029+
1030+
# br requires brotli package; zstd requires zstandard package.
1031+
# If you need these, handle here.
1032+
return resp
10101033

10111034
# --------------------------
10121035
# HTTP helpers (download only)
@@ -1100,7 +1123,8 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
11001123
else:
11011124
opener = build_opener()
11021125
resp = opener.open(req)
1103-
shutil.copyfileobj(resp, httpfile)
1126+
resp2 = decoded_stream(resp)
1127+
shutil.copyfileobj(resp2, httpfile)
11041128

11051129
try:
11061130
httpfile.seek(0, 0)

PyWWW/pywwwget_deepseek.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,33 @@ def upload_file_to_pysftp_string(data, url):
12131213
return False
12141214
return upload_file_to_sftp_string(data, url)
12151215

1216+
def decoded_stream(resp):
1217+
# resp can be urllib response or anything file-like with headers
1218+
enc = None
1219+
try:
1220+
enc = resp.headers.get("Content-Encoding")
1221+
except Exception:
1222+
pass
1223+
1224+
if not enc:
1225+
return resp
1226+
1227+
enc = enc.lower().strip()
1228+
1229+
if enc == "gzip":
1230+
return gzip.GzipFile(fileobj=resp)
1231+
if enc == "deflate":
1232+
# deflate is ambiguous; try zlib header first, then raw deflate
1233+
data = resp.read()
1234+
try:
1235+
return io.BytesIO(zlib.decompress(data))
1236+
except zlib.error:
1237+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1238+
1239+
# br requires brotli package; zstd requires zstandard package.
1240+
# If you need these, handle here.
1241+
return resp
1242+
12161243
# --------------------------
12171244
# HTTP helpers (download only)
12181245
# --------------------------
@@ -1305,7 +1332,8 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
13051332
else:
13061333
opener = build_opener()
13071334
resp = opener.open(req)
1308-
shutil.copyfileobj(resp, httpfile)
1335+
resp2 = decoded_stream(resp)
1336+
shutil.copyfileobj(resp2, httpfile)
13091337

13101338
try:
13111339
httpfile.seek(0, 0)

PyWWW/pywwwget_merged.py

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,60 @@ def upload_file_to_pysftp_string(data, url):
10111011
return False
10121012
return upload_file_to_sftp_string(data, url)
10131013

1014+
def decoded_stream(resp):
1015+
# resp can be urllib response or anything file-like with headers
1016+
enc = None
1017+
try:
1018+
enc = resp.headers.get("Content-Encoding")
1019+
except Exception:
1020+
pass
1021+
1022+
if not enc:
1023+
return resp
1024+
1025+
enc = enc.lower().strip()
1026+
1027+
if enc == "gzip":
1028+
return gzip.GzipFile(fileobj=resp)
1029+
if enc == "deflate":
1030+
# deflate is ambiguous; try zlib header first, then raw deflate
1031+
data = resp.read()
1032+
try:
1033+
return io.BytesIO(zlib.decompress(data))
1034+
except zlib.error:
1035+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1036+
1037+
# br requires brotli package; zstd requires zstandard package.
1038+
# If you need these, handle here.
1039+
return resp
1040+
1041+
def decoded_stream(resp):
1042+
# resp can be urllib response or anything file-like with headers
1043+
enc = None
1044+
try:
1045+
enc = resp.headers.get("Content-Encoding")
1046+
except Exception:
1047+
pass
1048+
1049+
if not enc:
1050+
return resp
1051+
1052+
enc = enc.lower().strip()
1053+
1054+
if enc == "gzip":
1055+
return gzip.GzipFile(fileobj=resp)
1056+
if enc == "deflate":
1057+
# deflate is ambiguous; try zlib header first, then raw deflate
1058+
data = resp.read()
1059+
try:
1060+
return io.BytesIO(zlib.decompress(data))
1061+
except zlib.error:
1062+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1063+
1064+
# br requires brotli package; zstd requires zstandard package.
1065+
# If you need these, handle here.
1066+
return resp
1067+
10141068
# --------------------------
10151069
# HTTP helpers (download only)
10161070
# --------------------------
@@ -1103,7 +1157,8 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
11031157
else:
11041158
opener = build_opener()
11051159
resp = opener.open(req)
1106-
shutil.copyfileobj(resp, httpfile)
1160+
resp2 = decoded_stream(resp)
1161+
shutil.copyfileobj(resp2, httpfile)
11071162

11081163
try:
11091164
httpfile.seek(0, 0)

PyWWW/pywwwget_nextver.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1025,6 +1025,33 @@ def upload_file_to_pysftp_string(data, url):
10251025
return False
10261026
return upload_file_to_sftp_string(data, url)
10271027

1028+
def decoded_stream(resp):
1029+
# resp can be urllib response or anything file-like with headers
1030+
enc = None
1031+
try:
1032+
enc = resp.headers.get("Content-Encoding")
1033+
except Exception:
1034+
pass
1035+
1036+
if not enc:
1037+
return resp
1038+
1039+
enc = enc.lower().strip()
1040+
1041+
if enc == "gzip":
1042+
return gzip.GzipFile(fileobj=resp)
1043+
if enc == "deflate":
1044+
# deflate is ambiguous; try zlib header first, then raw deflate
1045+
data = resp.read()
1046+
try:
1047+
return io.BytesIO(zlib.decompress(data))
1048+
except zlib.error:
1049+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1050+
1051+
# br requires brotli package; zstd requires zstandard package.
1052+
# If you need these, handle here.
1053+
return resp
1054+
10281055
# --------------------------
10291056
# HTTP helpers (download only)
10301057
# --------------------------
@@ -1117,7 +1144,8 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
11171144
else:
11181145
opener = build_opener()
11191146
resp = opener.open(req)
1120-
shutil.copyfileobj(resp, httpfile)
1147+
resp2 = decoded_stream(resp)
1148+
shutil.copyfileobj(resp2, httpfile)
11211149

11221150
try:
11231151
httpfile.seek(0, 0)

pywwwget_chatgpt.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,9 +1004,32 @@ def upload_file_to_pysftp_string(data, url):
10041004
return False
10051005
return upload_file_to_sftp_string(data, url)
10061006

1007-
# --------------------------
1008-
# HTTP helpers (download only)
1009-
# --------------------------
1007+
def decoded_stream(resp):
1008+
# resp can be urllib response or anything file-like with headers
1009+
enc = None
1010+
try:
1011+
enc = resp.headers.get("Content-Encoding")
1012+
except Exception:
1013+
pass
1014+
1015+
if not enc:
1016+
return resp
1017+
1018+
enc = enc.lower().strip()
1019+
1020+
if enc == "gzip":
1021+
return gzip.GzipFile(fileobj=resp)
1022+
if enc == "deflate":
1023+
# deflate is ambiguous; try zlib header first, then raw deflate
1024+
data = resp.read()
1025+
try:
1026+
return io.BytesIO(zlib.decompress(data))
1027+
except zlib.error:
1028+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1029+
1030+
# br requires brotli package; zstd requires zstandard package.
1031+
# If you need these, handle here.
1032+
return resp
10101033

10111034
# --------------------------
10121035
# HTTP helpers (download only)
@@ -1100,7 +1123,8 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
11001123
else:
11011124
opener = build_opener()
11021125
resp = opener.open(req)
1103-
shutil.copyfileobj(resp, httpfile)
1126+
resp2 = decoded_stream(resp)
1127+
shutil.copyfileobj(resp2, httpfile)
11041128

11051129
try:
11061130
httpfile.seek(0, 0)

pywwwget_deepseek.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,33 @@ def upload_file_to_pysftp_string(data, url):
12131213
return False
12141214
return upload_file_to_sftp_string(data, url)
12151215

1216+
def decoded_stream(resp):
1217+
# resp can be urllib response or anything file-like with headers
1218+
enc = None
1219+
try:
1220+
enc = resp.headers.get("Content-Encoding")
1221+
except Exception:
1222+
pass
1223+
1224+
if not enc:
1225+
return resp
1226+
1227+
enc = enc.lower().strip()
1228+
1229+
if enc == "gzip":
1230+
return gzip.GzipFile(fileobj=resp)
1231+
if enc == "deflate":
1232+
# deflate is ambiguous; try zlib header first, then raw deflate
1233+
data = resp.read()
1234+
try:
1235+
return io.BytesIO(zlib.decompress(data))
1236+
except zlib.error:
1237+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1238+
1239+
# br requires brotli package; zstd requires zstandard package.
1240+
# If you need these, handle here.
1241+
return resp
1242+
12161243
# --------------------------
12171244
# HTTP helpers (download only)
12181245
# --------------------------
@@ -1305,7 +1332,8 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
13051332
else:
13061333
opener = build_opener()
13071334
resp = opener.open(req)
1308-
shutil.copyfileobj(resp, httpfile)
1335+
resp2 = decoded_stream(resp)
1336+
shutil.copyfileobj(resp2, httpfile)
13091337

13101338
try:
13111339
httpfile.seek(0, 0)

pywwwget_merged.py

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,60 @@ def upload_file_to_pysftp_string(data, url):
10111011
return False
10121012
return upload_file_to_sftp_string(data, url)
10131013

1014+
def decoded_stream(resp):
1015+
# resp can be urllib response or anything file-like with headers
1016+
enc = None
1017+
try:
1018+
enc = resp.headers.get("Content-Encoding")
1019+
except Exception:
1020+
pass
1021+
1022+
if not enc:
1023+
return resp
1024+
1025+
enc = enc.lower().strip()
1026+
1027+
if enc == "gzip":
1028+
return gzip.GzipFile(fileobj=resp)
1029+
if enc == "deflate":
1030+
# deflate is ambiguous; try zlib header first, then raw deflate
1031+
data = resp.read()
1032+
try:
1033+
return io.BytesIO(zlib.decompress(data))
1034+
except zlib.error:
1035+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1036+
1037+
# br requires brotli package; zstd requires zstandard package.
1038+
# If you need these, handle here.
1039+
return resp
1040+
1041+
def decoded_stream(resp):
1042+
# resp can be urllib response or anything file-like with headers
1043+
enc = None
1044+
try:
1045+
enc = resp.headers.get("Content-Encoding")
1046+
except Exception:
1047+
pass
1048+
1049+
if not enc:
1050+
return resp
1051+
1052+
enc = enc.lower().strip()
1053+
1054+
if enc == "gzip":
1055+
return gzip.GzipFile(fileobj=resp)
1056+
if enc == "deflate":
1057+
# deflate is ambiguous; try zlib header first, then raw deflate
1058+
data = resp.read()
1059+
try:
1060+
return io.BytesIO(zlib.decompress(data))
1061+
except zlib.error:
1062+
return io.BytesIO(zlib.decompress(data, -zlib.MAX_WBITS))
1063+
1064+
# br requires brotli package; zstd requires zstandard package.
1065+
# If you need these, handle here.
1066+
return resp
1067+
10141068
# --------------------------
10151069
# HTTP helpers (download only)
10161070
# --------------------------
@@ -1103,7 +1157,8 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
11031157
else:
11041158
opener = build_opener()
11051159
resp = opener.open(req)
1106-
shutil.copyfileobj(resp, httpfile)
1160+
resp2 = decoded_stream(resp)
1161+
shutil.copyfileobj(resp2, httpfile)
11071162

11081163
try:
11091164
httpfile.seek(0, 0)

0 commit comments

Comments
 (0)