#!/usr/bin/env python3
# Обследование структуры обоих дисков: sk и Hram — папки 2 уровня
import json, urllib.request, urllib.parse

def get_token(fname, prefix):
    for line in open(fname, encoding="utf-8"):
        if line.startswith(prefix + "="):
            return line.split("=", 1)[1].strip()
    return None

def ls(H, path):
    url = "https://cloud-api.yandex.net/v1/disk/resources?path=" + urllib.parse.quote(path) + "&limit=200"
    req = urllib.request.Request(url, headers=H)
    return json.loads(urllib.request.urlopen(req, timeout=60).read())

def walk(H, path, depth, maxdepth):
    try:
        r = ls(H, path)
    except Exception as e:
        print("  " * depth, "ERR", path, e)
        return
    items = r.get("_embedded", {}).get("items", [])
    dirs = [it for it in items if it["type"] == "dir"]
    files = [it for it in items if it["type"] == "file"]
    if depth == 0:
        print(f"\n### {path} — папок: {len(dirs)}, файлов: {len(files)}")
    if depth >= maxdepth:
        for d in dirs:
            print("  " * (depth + 1), f"[dir] {d['name']} ({len([1])})")
        return
    for d in dirs:
        print("  " * (depth + 1), f"[dir] {d['name']}")
        walk(H, d["path"], depth + 1, maxdepth)

# Диск sk
tok_sk = get_token("/root/site/yandex/.env", "YANDEX_ACCESS_TOKEN")
H_sk = {"Authorization": f"OAuth {tok_sk}"}
print("========== ДИСК sk@dobrotniy-dom.ru ==========")
walk(H_sk, "/", 0, 2)

# Диск Hram
tok_hr = get_token("/root/site/yandex/.env_hram", "YANDEX2_ACCESS_TOKEN")
H_hr = {"Authorization": f"OAuth {tok_hr}"}
print("\n========== ДИСК Hramrozhdestva (s2239399) ==========")
walk(H_hr, "/", 0, 2)
