copyparty 1.16.20__py3-none-any.whl → 1.16.21__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 CHANGED
@@ -1,8 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- VERSION = (1, 16, 20)
3
+ VERSION = (1, 16, 21)
4
4
  CODENAME = "COPYparty"
5
- BUILD_DT = (2025, 4, 13)
5
+ BUILD_DT = (2025, 4, 20)
6
6
 
7
7
  S_VERSION = ".".join(map(str, VERSION))
8
8
  S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
copyparty/szip.py CHANGED
@@ -48,6 +48,7 @@ def gen_fdesc(sz , crc32 , z64 ) :
48
48
 
49
49
  def gen_hdr(
50
50
  h_pos ,
51
+ z64 ,
51
52
  fn ,
52
53
  sz ,
53
54
  lastmod ,
@@ -64,7 +65,6 @@ def gen_hdr(
64
65
  # appnote 4.5 / zip 3.0 (2008) / unzip 6.0 (2009) says to add z64
65
66
  # extinfo for values which exceed H, but that becomes an off-by-one
66
67
  # (can't tell if it was clamped or exactly maxval), make it obvious
67
- z64 = sz >= 0xFFFFFFFF
68
68
  z64v = [sz, sz] if z64 else []
69
69
  if h_pos and h_pos >= 0xFFFFFFFF:
70
70
  # central, also consider ptr to original header
@@ -238,6 +238,7 @@ class StreamZip(StreamArc):
238
238
 
239
239
  sz = st.st_size
240
240
  ts = st.st_mtime
241
+ h_pos = self.pos
241
242
 
242
243
  crc = 0
243
244
  if self.pre_crc:
@@ -246,8 +247,12 @@ class StreamZip(StreamArc):
246
247
 
247
248
  crc &= 0xFFFFFFFF
248
249
 
249
- h_pos = self.pos
250
- buf = gen_hdr(None, name, sz, ts, self.utf8, crc, self.pre_crc)
250
+ # some unzip-programs expect a 64bit data-descriptor
251
+ # even if the only 32bit-exceeding value is the offset,
252
+ # so force that by placeholdering the filesize too
253
+ z64 = h_pos >= 0xFFFFFFFF or sz >= 0xFFFFFFFF
254
+
255
+ buf = gen_hdr(None, z64, name, sz, ts, self.utf8, crc, self.pre_crc)
251
256
  yield self._ct(buf)
252
257
 
253
258
  for buf in yieldfile(src, self.args.iobuf):
@@ -260,8 +265,6 @@ class StreamZip(StreamArc):
260
265
 
261
266
  self.items.append((name, sz, ts, crc, h_pos))
262
267
 
263
- z64 = sz >= 4 * 1024 * 1024 * 1024
264
-
265
268
  if z64 or not self.pre_crc:
266
269
  buf = gen_fdesc(sz, crc, z64)
267
270
  yield self._ct(buf)
@@ -300,7 +303,8 @@ class StreamZip(StreamArc):
300
303
 
301
304
  cdir_pos = self.pos
302
305
  for name, sz, ts, crc, h_pos in self.items:
303
- buf = gen_hdr(h_pos, name, sz, ts, self.utf8, crc, self.pre_crc)
306
+ z64 = h_pos >= 0xFFFFFFFF or sz >= 0xFFFFFFFF
307
+ buf = gen_hdr(h_pos, z64, name, sz, ts, self.utf8, crc, self.pre_crc)
304
308
  mbuf += self._ct(buf)
305
309
  if len(mbuf) >= 16384:
306
310
  yield mbuf
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: copyparty
3
- Version: 1.16.20
3
+ Version: 1.16.21
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
@@ -205,6 +205,7 @@ just run **[copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/
205
205
  * or if you are on android, [install copyparty in termux](#install-on-android)
206
206
  * or maybe you have a [synology nas / dsm](./docs/synology-dsm.md)
207
207
  * or if your computer is messed up and nothing else works, [try the pyz](#zipapp)
208
+ * or if your OS is dead, give the [bootable flashdrive / cd-rom](https://a.ocv.me/pub/stuff/edcd001/enterprise-edition/) a spin
208
209
  * or if you don't trust copyparty yet and want to isolate it a little, then...
209
210
  * ...maybe [prisonparty](./bin/prisonparty.sh) to create a tiny [chroot](https://wiki.archlinux.org/title/Chroot) (very portable),
210
211
  * ...or [bubbleparty](./bin/bubbleparty.sh) to wrap it in [bubblewrap](https://github.com/containers/bubblewrap) (much better)
@@ -360,6 +361,8 @@ project goals / philosophy
360
361
  * adaptable, malleable, hackable
361
362
  * no build steps; modify the js/python without needing node.js or anything like that
362
363
 
364
+ becoming rich is specifically *not* a motivation, but if you wanna donate then see my [github profile](https://github.com/9001) regarding donations for my FOSS stuff in general (also THANKS!)
365
+
363
366
 
364
367
  ## notes
365
368
 
@@ -788,6 +791,7 @@ select which type of archive you want in the `[⚙️] config` tab:
788
791
  * `up2k.db` and `dir.txt` is always excluded
789
792
  * bsdtar supports streaming unzipping: `curl foo?zip | bsdtar -xv`
790
793
  * good, because copyparty's zip is faster than tar on small files
794
+ * but `?tar` is better for large files, especially if the total exceeds 4 GiB
791
795
  * `zip_crc` will take longer to download since the server has to read each file twice
792
796
  * this is only to support MS-DOS PKZIP v2.04g (october 1993) and older
793
797
  * how are you accessing copyparty actually
@@ -1092,6 +1096,7 @@ click the `play` link next to an audio file, or copy the link target to [share i
1092
1096
 
1093
1097
  open the `[🎺]` media-player-settings tab to configure it,
1094
1098
  * "switches":
1099
+ * `[🔁]` repeats one single song forever
1095
1100
  * `[🔀]` shuffles the files inside each folder
1096
1101
  * `[preload]` starts loading the next track when it's about to end, reduces the silence between songs
1097
1102
  * `[full]` does a full preload by downloading the entire next file; good for unreliable connections, bad for slow connections
@@ -1,6 +1,6 @@
1
1
  copyparty/__init__.py,sha256=TnFSStmHlwlRIClWW8jSHxZpt3dl_kN6_pEnqBqh3mE,2638
2
2
  copyparty/__main__.py,sha256=CpLrZnUB6NZLjUTV5Z5deaR2PkVcmaz5USgv0Ufs4K8,119405
3
- copyparty/__version__.py,sha256=SA89vIgdFcMeHnlEvEu-dBge3avvPsAzDaUsiBCRFgs,252
3
+ copyparty/__version__.py,sha256=VMLa4h9U-dGYpIY1KfH1iBCZ1snRW76WxbQE5npykwo,252
4
4
  copyparty/authsrv.py,sha256=S4HrUq-C6wpe_IT3KN75yo9GJw9Uzj5y558ooYCQqng,113286
5
5
  copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
6
6
  copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
@@ -25,7 +25,7 @@ copyparty/ssdp.py,sha256=R1Z61GZOxBMF2Sk4RTxKWMOemogmcjEWG-CvLihd45k,7023
25
25
  copyparty/star.py,sha256=tV5BbX6AiQ7N4UU8DYtSTckNYeoeey4DBqq4LjfymbY,3818
26
26
  copyparty/sutil.py,sha256=6zEEGl4hRe6bTB83Y_RtnBGxr2JcUa__GdiAMqNJZnY,3208
27
27
  copyparty/svchub.py,sha256=Fn-qmJHtfZ0BgvRDCSPs0uqYg90kGj80a8KyEMLcd_I,46337
28
- copyparty/szip.py,sha256=7_RVwHCGk7ON79sAB5HAIUbTEbjDDtn99141aGaI_MA,8596
28
+ copyparty/szip.py,sha256=9srQzjsTBrBadf6QMh4YRAL70rkZLevAOHqXWK5jvr8,8846
29
29
  copyparty/tcpsrv.py,sha256=F5K4Qr4eBLfhdLT_39yDf6ftrhWuGTrd6DSqqp_6e-Q,20480
30
30
  copyparty/tftpd.py,sha256=HAXNbIM7I3yFng_a4ubLWGQ4trRTineAZsUPTZDWNQs,14001
31
31
  copyparty/th_cli.py,sha256=IEX5tCb0gw9Z2aRIDL9bwdvJ6g5jhWZ8OEAAz16_xN4,5426
@@ -57,7 +57,7 @@ copyparty/stolen/ifaddr/_win32.py,sha256=EE-QyoBgeB7lYQ6z62VjXNaRozaYfCkaJBHGNA8
57
57
  copyparty/web/baguettebox.js.gz,sha256=r2c_hOZV_RTyl4CqWWX14FDWP8nnDVwGkDl4Sfk0rU4,8239
58
58
  copyparty/web/browser.css.gz,sha256=5n-uSw003hMJB4HZKOcWJQFENoNOEg1Q1bngkqIfL28,11654
59
59
  copyparty/web/browser.html,sha256=auvhLVE_t0aIN0q-nk0zOWFqITgDhroMAAviBNLoFfc,4788
60
- copyparty/web/browser.js.gz,sha256=uJNkyHmyWmjPerphoOsxdpTAx1xodxgOwcX3HrT6G7M,92490
60
+ copyparty/web/browser.js.gz,sha256=7PNA5VtA1ibzrm_tuWNL61Ebbr7QEkIojQx5JR6-5WA,92766
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
@@ -109,9 +109,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
109
109
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
110
110
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
111
111
  copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
112
- copyparty-1.16.20.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
113
- copyparty-1.16.20.dist-info/METADATA,sha256=IfzJvVt-XFF8RyYEReXcNYcWJPhwFDD2k4R9S_Ut2Ck,160161
114
- copyparty-1.16.20.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
115
- copyparty-1.16.20.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
116
- copyparty-1.16.20.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
117
- copyparty-1.16.20.dist-info/RECORD,,
112
+ copyparty-1.16.21.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
113
+ copyparty-1.16.21.dist-info/METADATA,sha256=VoeoY-hqStlwlP-4HcpeLc17wef9pmDqDvJ1rnvnOkY,160609
114
+ copyparty-1.16.21.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
115
+ copyparty-1.16.21.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
116
+ copyparty-1.16.21.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
117
+ copyparty-1.16.21.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (79.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5