mirror of
				https://github.com/9001/copyparty.git
				synced 2025-10-31 03:53:31 +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()
 |