mirror of
				https://github.com/9001/copyparty.git
				synced 2025-11-04 05:43:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
import json
 | 
						|
import os
 | 
						|
import subprocess as sp
 | 
						|
import sys
 | 
						|
import time
 | 
						|
 | 
						|
try:
 | 
						|
    from copyparty.util import fsenc
 | 
						|
except:
 | 
						|
 | 
						|
    def fsenc(p):
 | 
						|
        return p.encode("utf-8")
 | 
						|
 | 
						|
 | 
						|
_ = r"""
 | 
						|
first checks the tag "vidchk" which must be "ok" to continue,
 | 
						|
then uploads all files to some cloud storage (RCLONE_REMOTE)
 | 
						|
and DELETES THE ORIGINAL FILES if rclone returns 0 ("success")
 | 
						|
 | 
						|
deps:
 | 
						|
  rclone
 | 
						|
 | 
						|
usage:
 | 
						|
  -mtp x2=t43200,ay,p2,bin/mtag/rclone-upload.py
 | 
						|
 | 
						|
explained:
 | 
						|
t43200: timeout 12h
 | 
						|
    ay: only process files which contain audio (including video with audio)
 | 
						|
    p2: set priority 2 (after vidchk's suggested priority of 1),
 | 
						|
          so the output of vidchk will be passed in here
 | 
						|
 | 
						|
complete usage example as vflags along with vidchk:
 | 
						|
  -vsrv/vidchk:vidchk:r:rw,ed:c,e2dsa,e2ts,mtp=vidchk=t600,p,bin/mtag/vidchk.py:c,mtp=rupload=t43200,ay,p2,bin/mtag/rclone-upload.py:c,mte=+vidchk,rupload
 | 
						|
 | 
						|
setup: see https://rclone.org/drive/
 | 
						|
 | 
						|
if you wanna use this script standalone / separately from copyparty,
 | 
						|
either set CONDITIONAL_UPLOAD False or provide the following stdin:
 | 
						|
  {"vidchk":"ok"}
 | 
						|
"""
 | 
						|
 | 
						|
 | 
						|
RCLONE_REMOTE = "notmybox"
 | 
						|
CONDITIONAL_UPLOAD = True
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    fp = sys.argv[1]
 | 
						|
    if CONDITIONAL_UPLOAD:
 | 
						|
        zb = sys.stdin.buffer.read()
 | 
						|
        zs = zb.decode("utf-8", "replace")
 | 
						|
        md = json.loads(zs)
 | 
						|
 | 
						|
        chk = md.get("vidchk", None)
 | 
						|
        if chk != "ok":
 | 
						|
            print(f"vidchk={chk}", file=sys.stderr)
 | 
						|
            sys.exit(1)
 | 
						|
 | 
						|
    dst = f"{RCLONE_REMOTE}:".encode("utf-8")
 | 
						|
    cmd = [b"rclone", b"copy", b"--", fsenc(fp), dst]
 | 
						|
 | 
						|
    t0 = time.time()
 | 
						|
    try:
 | 
						|
        sp.check_call(cmd)
 | 
						|
    except:
 | 
						|
        print("rclone failed", file=sys.stderr)
 | 
						|
        sys.exit(1)
 | 
						|
 | 
						|
    print(f"{time.time() - t0:.1f} sec")
 | 
						|
    os.unlink(fsenc(fp))
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    main()
 |