Files
felhom.eu/documentation/audits/rehearsal-2026-10-20/tools/counts.py
T

24 lines
1.8 KiB
Python

#!/usr/bin/python3
"""counts.py — what each app holds now, read through the app's own API (B4/B5/B7 comparisons). Env names are args."""
import json, os, subprocess, sys
sys.path.insert(0, "/root/work"); import apps
from apps import http, basic
def paperless(u, p):
st, out, _ = http("GET", "https://paperless.tester4.test/api/documents/?page_size=1", None, {"Authorization": basic(os.environ[u], os.environ[p])})
t = json.loads(out).get("count") if st == 200 else out[:120]
st2, out2, _ = http("GET", "https://paperless.tester4.test/api/tasks/?status=FAILURE", None, {"Authorization": basic(os.environ[u], os.environ[p])})
fails = [x.get("task_file_name") for x in json.loads(out2)] if st2 == 200 else out2[:100]
print("paperless documents:", t, "| failed tasks:", fails)
def immich(e, p):
st, out, _ = http("POST", "https://photos.tester4.test/api/auth/login", {"email": os.environ[e], "password": os.environ[p]})
tok = {"Authorization": "Bearer " + json.loads(out)["accessToken"]}
st, out, _ = http("GET", "https://photos.tester4.test/api/assets/statistics", None, tok)
print("immich assets:", out.decode()[:200])
def nextcloud(u, p):
obs = subprocess.run(["rclone", "obscure", "-"], input=os.environ[p], capture_output=True, text=True).stdout.strip()
env = dict(os.environ, RCLONE_CONFIG_NC_TYPE="webdav", RCLONE_CONFIG_NC_URL=f"https://cloud.tester4.test/remote.php/dav/files/{os.environ[u]}",
RCLONE_CONFIG_NC_VENDOR="nextcloud", RCLONE_CONFIG_NC_USER=os.environ[u], RCLONE_CONFIG_NC_PASS=obs)
r = subprocess.run(["rclone", "size", "--no-check-certificate", "nc:/Csalad"], env=env, capture_output=True, text=True)
print("nextcloud Csalad:", (r.stdout + r.stderr).strip().replace("\n", " | ")[:300])
globals()[sys.argv[1]](*sys.argv[2:])