#!/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:])