77 lines
1.7 KiB
Python
77 lines
1.7 KiB
Python
# This is meant to run on the badge
|
|
import hashlib, binascii, os
|
|
|
|
def split(path):
|
|
if path == "":
|
|
return ("", "")
|
|
r = path.rsplit("/", 1)
|
|
if len(r) == 1:
|
|
return ("", path)
|
|
head = r[0]
|
|
if not head:
|
|
head = "/"
|
|
return (head, r[1])
|
|
|
|
def dirname(path):
|
|
return split(path)[0]
|
|
|
|
def exists(path):
|
|
try:
|
|
os.stat(path)[0]
|
|
return True
|
|
except OSError:
|
|
return False
|
|
|
|
def makedirs(path):
|
|
sub_path = split(path)[0]
|
|
if sub_path and (not exists(sub_path)):
|
|
makedirs(sub_path)
|
|
if not exists(path):
|
|
os.mkdir(path)
|
|
|
|
def isdir(path):
|
|
try:
|
|
return os.stat(path)[0] & 0o170000 == 0o040000
|
|
except OSError:
|
|
return False
|
|
|
|
def h(p):
|
|
try:
|
|
with open(p, "rb") as f:
|
|
h = hashlib.sha256()
|
|
h.update(f.read())
|
|
print(str(binascii.hexlify(h.digest()), "utf8")[:10])
|
|
return
|
|
except:
|
|
pass
|
|
print("nooooooooo")
|
|
|
|
def w(p, c):
|
|
try:
|
|
print("file", p)
|
|
makedirs(dirname(p))
|
|
with open(p, "wb") as f:
|
|
f.write(binascii.a2b_base64(c))
|
|
os.sync()
|
|
print("OK")
|
|
except Exception as e:
|
|
import sys
|
|
print("Error while writing file %s" % p)
|
|
sys.print_exception(e)
|
|
pass
|
|
|
|
def clean(path=""):
|
|
for s in os.listdir(path):
|
|
full = "/".join([path, s]) if path else s
|
|
try:
|
|
if isdir(full):
|
|
try:
|
|
clean(full)
|
|
except:
|
|
pass
|
|
os.rmdir(full)
|
|
else:
|
|
os.remove(full)
|
|
except Exception as e:
|
|
print("Error while trying to clean '%s'" % full)
|