LazyLibrarian/example_mega_link.py
2025-01-02 11:22:02 +01:00

39 lines
1.3 KiB
Python

#!/usr/bin/python3
import os
import subprocess
import sys
# login to mega, upload a file, get a link to it, log out again and return link
# progress is logged to stderr, link is returned on stdout
# always exit 0
#
link = ''
if len(sys.argv) != 2:
print("Usage: link = megalink /path/to/file.pdf")
else:
f = sys.argv[1]
params = ["/usr/bin/mega-login", "user@email.com", "megapassword"]
print(1,params, file=sys.stderr)
p = subprocess.Popen(params, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
res, err = p.communicate()
print(2,res, file=sys.stderr)
params = ["/usr/bin/mega-put", "-c", f]
print(3,params, file=sys.stderr)
p = subprocess.Popen(params, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
res, _ = p.communicate()
print(4,res, file=sys.stderr)
params = ["/usr/bin/mega-export", "-a", "-f", os.path.basename(f)]
print(5,params, file=sys.stderr)
p = subprocess.Popen(params, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
res, _ = p.communicate()
print(6,res, file=sys.stderr)
res = res.decode('utf-8')
if 'http' in res:
link = 'http' + res.rsplit('http', 1)[1].strip('\n')
params = ["/usr/bin/mega-logout"]
p = subprocess.Popen(params, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
res, err = p.communicate()
print(7,res, file=sys.stderr)
print(link)
exit(0)