mirror of
				https://github.com/9001/copyparty.git
				synced 2025-10-30 20:22:20 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| import subprocess as sp
 | |
| from plyer import notification
 | |
| 
 | |
| 
 | |
| _ = r"""
 | |
| show os notification on upload; works on windows, linux, macos, android
 | |
| 
 | |
| dependencies:
 | |
|     windows: python3 -m pip install --user -U plyer
 | |
|     linux:   python3 -m pip install --user -U plyer
 | |
|     macos:   python3 -m pip install --user -U plyer pyobjus
 | |
|     android: just termux and termux-api
 | |
| 
 | |
| example usages; either as global config (all volumes) or as volflag:
 | |
|     --xau f,bin/hooks/notify.py
 | |
|     -v srv/inc:inc:r:rw,ed:c,xau=f,bin/hooks/notify.py
 | |
|                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | |
| 
 | |
|     (share filesystem-path srv/inc as volume /inc,
 | |
|      readable by everyone, read-write for user 'ed',
 | |
|      running this plugin on all uploads with the params listed below)
 | |
| 
 | |
| parameters explained,
 | |
|     xau = execute after upload
 | |
|     f   = fork so it doesn't block uploads
 | |
| """
 | |
| 
 | |
| 
 | |
| try:
 | |
|     from copyparty.util import humansize
 | |
| except:
 | |
| 
 | |
|     def humansize(n):
 | |
|         return n
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     fp = sys.argv[1]
 | |
|     dp, fn = os.path.split(fp)
 | |
|     try:
 | |
|         sz = humansize(os.path.getsize(fp))
 | |
|     except:
 | |
|         sz = "?"
 | |
| 
 | |
|     msg = "{} ({})\n📁 {}".format(fn, sz, dp)
 | |
|     title = "File received"
 | |
| 
 | |
|     if "com.termux" in sys.executable:
 | |
|         sp.run(["termux-notification", "-t", title, "-c", msg])
 | |
|         return
 | |
| 
 | |
|     icon = "emblem-documents-symbolic" if sys.platform == "linux" else ""
 | |
|     notification.notify(
 | |
|         title=title,
 | |
|         message=msg,
 | |
|         app_icon=icon,
 | |
|         timeout=10,
 | |
|     )
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |