copyparty 1.16.3__py3-none-any.whl → 1.16.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- copyparty/__version__.py +2 -2
- copyparty/up2k.py +9 -1
- copyparty/web/a/u2c.py +48 -4
- copyparty/web/browser.css.gz +0 -0
- copyparty/web/browser.js.gz +0 -0
- copyparty/web/up2k.js.gz +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.4.dist-info}/METADATA +1 -1
- {copyparty-1.16.3.dist-info → copyparty-1.16.4.dist-info}/RECORD +12 -12
- {copyparty-1.16.3.dist-info → copyparty-1.16.4.dist-info}/LICENSE +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.4.dist-info}/WHEEL +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.4.dist-info}/entry_points.txt +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.4.dist-info}/top_level.txt +0 -0
copyparty/__version__.py
CHANGED
copyparty/up2k.py
CHANGED
@@ -3077,7 +3077,8 @@ class Up2k(object):
|
|
3077
3077
|
if cur:
|
3078
3078
|
dupe = (cj["prel"], cj["name"], cj["lmod"])
|
3079
3079
|
try:
|
3080
|
-
self.dupesched[src]
|
3080
|
+
if dupe not in self.dupesched[src]:
|
3081
|
+
self.dupesched[src].append(dupe)
|
3081
3082
|
except:
|
3082
3083
|
self.dupesched[src] = [dupe]
|
3083
3084
|
|
@@ -4652,6 +4653,13 @@ class Up2k(object):
|
|
4652
4653
|
t = "forgetting partial upload {} ({})"
|
4653
4654
|
p = self._vis_job_progress(job)
|
4654
4655
|
self.log(t.format(wark, p))
|
4656
|
+
|
4657
|
+
src = djoin(ptop, vrem)
|
4658
|
+
zi = len(self.dupesched.pop(src, []))
|
4659
|
+
if zi:
|
4660
|
+
t = "...and forgetting %d links in dupesched"
|
4661
|
+
self.log(t % (zi,))
|
4662
|
+
|
4655
4663
|
assert wark
|
4656
4664
|
del reg[wark]
|
4657
4665
|
|
copyparty/web/a/u2c.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env python3
|
2
2
|
from __future__ import print_function, unicode_literals
|
3
3
|
|
4
|
-
S_VERSION = "2.
|
5
|
-
S_BUILD_DT = "2024-
|
4
|
+
S_VERSION = "2.7"
|
5
|
+
S_BUILD_DT = "2024-12-06"
|
6
6
|
|
7
7
|
"""
|
8
8
|
u2c.py: upload to copyparty
|
@@ -1031,8 +1031,8 @@ class Ctl(object):
|
|
1031
1031
|
handshake(self.ar, file, False)
|
1032
1032
|
|
1033
1033
|
def _fancy(self):
|
1034
|
+
atexit.register(self.cleanup_vt100)
|
1034
1035
|
if VT100 and not self.ar.ns:
|
1035
|
-
atexit.register(self.cleanup_vt100)
|
1036
1036
|
ss.scroll_region(3)
|
1037
1037
|
|
1038
1038
|
Daemon(self.hasher)
|
@@ -1040,6 +1040,7 @@ class Ctl(object):
|
|
1040
1040
|
Daemon(self.handshaker)
|
1041
1041
|
Daemon(self.uploader)
|
1042
1042
|
|
1043
|
+
last_sp = -1
|
1043
1044
|
while True:
|
1044
1045
|
with self.exit_cond:
|
1045
1046
|
self.exit_cond.wait(0.07)
|
@@ -1078,6 +1079,12 @@ class Ctl(object):
|
|
1078
1079
|
else:
|
1079
1080
|
txt = " "
|
1080
1081
|
|
1082
|
+
if not VT100: # OSC9;4 (taskbar-progress)
|
1083
|
+
sp = int(self.up_b * 100 / self.nbytes) or 1
|
1084
|
+
if last_sp != sp:
|
1085
|
+
last_sp = sp
|
1086
|
+
txt += "\033]9;4;1;%d\033\\" % (sp,)
|
1087
|
+
|
1081
1088
|
if not self.up_br:
|
1082
1089
|
spd = self.hash_b / ((time.time() - self.t0) or 1)
|
1083
1090
|
eta = (self.nbytes - self.hash_b) / (spd or 1)
|
@@ -1095,6 +1102,8 @@ class Ctl(object):
|
|
1095
1102
|
tail = "\033[K\033[u" if VT100 and not self.ar.ns else "\r"
|
1096
1103
|
|
1097
1104
|
t = "%s eta @ %s/s, %s, %d# left\033[K" % (self.eta, spd, sleft, nleft)
|
1105
|
+
if not self.hash_b:
|
1106
|
+
t = " now hashing..."
|
1098
1107
|
eprint(txt + "\033]0;{0}\033\\\r{0}{1}".format(t, tail))
|
1099
1108
|
|
1100
1109
|
if self.ar.wlist:
|
@@ -1115,7 +1124,10 @@ class Ctl(object):
|
|
1115
1124
|
handshake(self.ar, file, False)
|
1116
1125
|
|
1117
1126
|
def cleanup_vt100(self):
|
1118
|
-
|
1127
|
+
if VT100:
|
1128
|
+
ss.scroll_region(None)
|
1129
|
+
else:
|
1130
|
+
eprint("\033]9;4;0\033\\")
|
1119
1131
|
eprint("\033[J\033]0;\033\\")
|
1120
1132
|
|
1121
1133
|
def cb_hasher(self, file, ofs):
|
@@ -1536,6 +1548,38 @@ source file/folder selection uses rsync syntax, meaning that:
|
|
1536
1548
|
except:
|
1537
1549
|
pass
|
1538
1550
|
|
1551
|
+
# msys2 doesn't uncygpath absolute paths with whitespace
|
1552
|
+
if not VT100:
|
1553
|
+
zsl = []
|
1554
|
+
for fn in ar.files:
|
1555
|
+
if re.search("^/[a-z]/", fn):
|
1556
|
+
fn = r"%s:\%s" % (fn[1:2], fn[3:])
|
1557
|
+
zsl.append(fn.replace("/", "\\"))
|
1558
|
+
ar.files = zsl
|
1559
|
+
|
1560
|
+
fok = []
|
1561
|
+
fng = []
|
1562
|
+
for fn in ar.files:
|
1563
|
+
if os.path.exists(fn):
|
1564
|
+
fok.append(fn)
|
1565
|
+
elif VT100:
|
1566
|
+
fng.append(fn)
|
1567
|
+
else:
|
1568
|
+
# windows leaves glob-expansion to the invoked process... okayyy let's get to work
|
1569
|
+
from glob import glob
|
1570
|
+
|
1571
|
+
fns = glob(fn)
|
1572
|
+
if fns:
|
1573
|
+
fok.extend(fns)
|
1574
|
+
else:
|
1575
|
+
fng.append(fn)
|
1576
|
+
|
1577
|
+
if fng:
|
1578
|
+
t = "some files/folders were not found:\n %s"
|
1579
|
+
raise Exception(t % ("\n ".join(fng),))
|
1580
|
+
|
1581
|
+
ar.files = fok
|
1582
|
+
|
1539
1583
|
if ar.drd:
|
1540
1584
|
ar.dr = True
|
1541
1585
|
|
copyparty/web/browser.css.gz
CHANGED
Binary file
|
copyparty/web/browser.js.gz
CHANGED
Binary file
|
copyparty/web/up2k.js.gz
CHANGED
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: copyparty
|
3
|
-
Version: 1.16.
|
3
|
+
Version: 1.16.4
|
4
4
|
Summary: Portable file server with accelerated resumable uploads, deduplication, WebDAV, FTP, zeroconf, media indexer, video thumbnails, audio transcoding, and write-only folders
|
5
5
|
Author-email: ed <copyparty@ocv.me>
|
6
6
|
License: MIT
|
@@ -1,6 +1,6 @@
|
|
1
1
|
copyparty/__init__.py,sha256=iRCNvMPg6k9WG_O2uCtlkD4vWogH8EgP9elp9XwSIJs,2610
|
2
2
|
copyparty/__main__.py,sha256=fA4D0yAs6twyBcawN9lM7CtHuFagTsQloljWX9MZ1j0,113240
|
3
|
-
copyparty/__version__.py,sha256=
|
3
|
+
copyparty/__version__.py,sha256=PSHPFmB4WReQ90GVjo2tS3ZE1I6F3Z2igIEoAOtf4ZQ,251
|
4
4
|
copyparty/authsrv.py,sha256=CIK5OKl38LehdAt4hidCMpsATdJhPABJPkJStpQpp9U,103405
|
5
5
|
copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
|
6
6
|
copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
|
@@ -31,7 +31,7 @@ copyparty/tftpd.py,sha256=FRCALO3PigoBlwUrqxoKHM_xk7wT2O0GPG1TvNRtjOY,13606
|
|
31
31
|
copyparty/th_cli.py,sha256=o6FMkerYvAXS455z3DUossVztu_nzFlYSQhs6qN6Jt8,4636
|
32
32
|
copyparty/th_srv.py,sha256=LBcB4LpsF-H7L52Z0Dhn9LogRjJVPp1GKa8MeIMIBnw,29596
|
33
33
|
copyparty/u2idx.py,sha256=kF4TE-j78Faq_f4vGh5So5raYDYLt2UDpza6yBA3f54,13687
|
34
|
-
copyparty/up2k.py,sha256=
|
34
|
+
copyparty/up2k.py,sha256=KQZcpqWRwjvmJLFEo3ejVWDroQi10jQdvgxuASDpUlY,174476
|
35
35
|
copyparty/util.py,sha256=UyaYXfVO4nOkqhSMi9SZn2zK2W9texb9CL9rsqMak8I,95135
|
36
36
|
copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
37
|
copyparty/bos/bos.py,sha256=Wb7eWsXJgR5AFlBR9ZOyKrLTwy-Kct9RrGiOu4Jo37Y,1622
|
@@ -55,9 +55,9 @@ copyparty/stolen/ifaddr/_posix.py,sha256=-67NdfGrCktfQPakT2fLbjl2U00QMvyBGkSvrUu
|
|
55
55
|
copyparty/stolen/ifaddr/_shared.py,sha256=uNC4SdEIgdSLKvuUzsf1aM-H1Xrc_9mpLoOT43YukGs,6206
|
56
56
|
copyparty/stolen/ifaddr/_win32.py,sha256=EE-QyoBgeB7lYQ6z62VjXNaRozaYfCkaJBHGNA8QtZM,4026
|
57
57
|
copyparty/web/baguettebox.js.gz,sha256=_amC3ipOrXKEFz8DsVP-JEl49VjMQYiKyF78eWfG-uk,7965
|
58
|
-
copyparty/web/browser.css.gz,sha256=
|
58
|
+
copyparty/web/browser.css.gz,sha256=kurx_iA-KxLYx8PqJsn0bJVjkAxP-0YTOHSV9l_oouo,11645
|
59
59
|
copyparty/web/browser.html,sha256=KCkZ_LwzQnj9xhXKYptAxp6W3nVGiDoSJ4ioZDo7rQ0,4827
|
60
|
-
copyparty/web/browser.js.gz,sha256=
|
60
|
+
copyparty/web/browser.js.gz,sha256=7YbcHLByMAc71j3nKKUrCEExAzfenYnHPBSrnJ8iJFA,89833
|
61
61
|
copyparty/web/browser2.html,sha256=NRUZ08GH-e2YcGXcoz0UjYg6JIVF42u4IMX4HHwWTmg,1587
|
62
62
|
copyparty/web/cf.html,sha256=lJThtNFNAQT1ClCHHlivAkDGE0LutedwopXD62Z8Nys,589
|
63
63
|
copyparty/web/dbg-audio.js.gz,sha256=Ma-KZtK8LnmiwNvNKFKXMPYl_Nn_3U7GsJ6-DRWC2HE,688
|
@@ -80,12 +80,12 @@ copyparty/web/splash.js.gz,sha256=EEfsi9YGtPTYRB6MPX8Dfg4YyfqncI9ldJS7_MGVOhs,27
|
|
80
80
|
copyparty/web/svcs.html,sha256=P5YZimYLeQMT0uz6u3clQSNZRc5Zs0Ok-ffcbcGSYuc,11762
|
81
81
|
copyparty/web/svcs.js.gz,sha256=k81ZvZ3I-f4fMHKrNGGOgOlvXnCBz0mVjD-8mieoWCA,520
|
82
82
|
copyparty/web/ui.css.gz,sha256=v8U-1tetZzuzTpITjq8NWj1gg3jEiYDIIE8aE0dx63k,2800
|
83
|
-
copyparty/web/up2k.js.gz,sha256=
|
83
|
+
copyparty/web/up2k.js.gz,sha256=vB3hLpRZzVStcN2-NAGjFdfroxFPbFvKss4vxVYyy1c,23371
|
84
84
|
copyparty/web/util.js.gz,sha256=MMDIZbxzBwBYE5eYLzhGGpC7h257oEFZaBKZwJ4uhc8,15077
|
85
85
|
copyparty/web/w.hash.js.gz,sha256=l3GpSJD6mcU-1CRWkIj7PybgbjlfSr8oeO3vortIrQk,1105
|
86
86
|
copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
87
|
copyparty/web/a/partyfuse.py,sha256=9p5Hpg_IBiSimv7j9kmPhCGpy-FLXSRUOYnLjJ5JifU,28049
|
88
|
-
copyparty/web/a/u2c.py,sha256=
|
88
|
+
copyparty/web/a/u2c.py,sha256=1XcH5XfC2UuGrpTnLVHCe4KFU0Vl6uC02CZz04rvKOc,51612
|
89
89
|
copyparty/web/a/webdav-cfg.bat,sha256=Y4NoGZlksAIg4cBMb7KdJrpKC6Nx97onaTl6yMjaimk,1449
|
90
90
|
copyparty/web/dd/2.png,sha256=gJ14XFPzaw95L6z92fSq9eMPikSQyu-03P1lgiGe0_I,258
|
91
91
|
copyparty/web/dd/3.png,sha256=4lho8Koz5tV7jJ4ODo6GMTScZfkqsT05yp48EDFIlyg,252
|
@@ -106,9 +106,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
|
|
106
106
|
copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
|
107
107
|
copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
|
108
108
|
copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
|
109
|
-
copyparty-1.16.
|
110
|
-
copyparty-1.16.
|
111
|
-
copyparty-1.16.
|
112
|
-
copyparty-1.16.
|
113
|
-
copyparty-1.16.
|
114
|
-
copyparty-1.16.
|
109
|
+
copyparty-1.16.4.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
|
110
|
+
copyparty-1.16.4.dist-info/METADATA,sha256=yo6iBPRZrSl4VBK6h32czwBccoFewYTRoSFVaOOYr5s,140656
|
111
|
+
copyparty-1.16.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
112
|
+
copyparty-1.16.4.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
|
113
|
+
copyparty-1.16.4.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
|
114
|
+
copyparty-1.16.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|