diff --git a/bin/prisonparty.sh b/bin/prisonparty.sh index a8b8da84..d18919a1 100755 --- a/bin/prisonparty.sh +++ b/bin/prisonparty.sh @@ -11,13 +11,13 @@ sysdirs=( /bin /lib /lib32 /lib64 /sbin /usr ) help() { cat <<'EOF' usage: - ./prisonparty.sh [VOLDIR [VOLDIR...]] -- python3 copyparty-sfx.py [...]" + ./prisonparty.sh [VOLDIR [VOLDIR...]] -- python3 copyparty-sfx.py [...] example: - ./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 copyparty-sfx.py -v /mnt/nas/music::rwmd" + ./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 copyparty-sfx.py -v /mnt/nas/music::rwmd example for running straight from source (instead of using an sfx): - PYTHONPATH=$PWD ./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 -um copyparty -v /mnt/nas/music::rwmd" + PYTHONPATH=$PWD ./prisonparty.sh /var/lib/copyparty-jail 1000 1000 /mnt/nas/music -- python3 -um copyparty -v /mnt/nas/music::rwmd note that if you have python modules installed as --user (such as bpm/key detectors), you should add /home/foo/.local as a VOLDIR diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 6be3c7cb..d02af739 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -31,6 +31,7 @@ from .util import ( ProgressPrinter, absreal, atomic_move, + djoin, fsenc, min_ex, quotep, @@ -1527,7 +1528,7 @@ class Up2k(object): wark = self._get_wark(cj) now = time.time() job = None - pdir = os.path.join(cj["ptop"], cj["prel"]) + pdir = djoin(cj["ptop"], cj["prel"]) try: dev = bos.stat(pdir).st_dev except: @@ -1639,7 +1640,7 @@ class Up2k(object): for k in ["ptop", "vtop", "prel"]: job[k] = cj[k] - pdir = os.path.join(cj["ptop"], cj["prel"]) + pdir = djoin(cj["ptop"], cj["prel"]) job["name"] = self._untaken(pdir, cj["name"], now, cj["addr"]) dst = os.path.join(job["ptop"], job["prel"], job["name"]) if not self.args.nw: @@ -1655,7 +1656,7 @@ class Up2k(object): if not job: vfs = self.asrv.vfs.all_vols[cj["vtop"]] if vfs.lim: - ap1 = os.path.join(cj["ptop"], cj["prel"]) + ap1 = djoin(cj["ptop"], cj["prel"]) ap2, cj["prel"] = vfs.lim.all( cj["addr"], cj["prel"], cj["size"], ap1, reg ) @@ -2413,7 +2414,7 @@ class Up2k(object): return ret def _new_upload(self, job: dict[str, Any]) -> None: - pdir = os.path.join(job["ptop"], job["prel"]) + pdir = djoin(job["ptop"], job["prel"]) if not job["size"] and bos.path.isfile(os.path.join(pdir, job["name"])): return diff --git a/copyparty/util.py b/copyparty/util.py index 55842fe7..6497a15b 100644 --- a/copyparty/util.py +++ b/copyparty/util.py @@ -989,6 +989,11 @@ def s2hms(s: float, optional_h: bool = False) -> str: return "{}:{:02}:{:02}".format(h, m, s) +def djoin(*paths: str) -> str: + """joins without adding a trailing slash on blank args""" + return os.path.join(*[x for x in paths if x]) + + def uncyg(path: str) -> str: if len(path) < 2 or not path.startswith("/"): return path