#!/usr/bin/env python3
# Докачка упавшего файла + проверка структуры
import json, urllib.request, urllib.parse

tok = None
for line in open("/root/site/yandex/.env_hram", encoding="utf-8"):
    if line.startswith("YANDEX2_ACCESS_TOKEN="):
        tok = line.split("=", 1)[1].strip()
H = {"Authorization": f"OAuth {tok}"}

def ls(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())

# докачка IMG_5955.HEIC
src = None
cache = json.load(open("/root/site/video/gps_cache2.json", encoding="utf-8"))
for key, val in cache.items():
    if val.get("name") == "IMG_5955.HEIC":
        src = key
        break
if src:
    def get_download_url(path):
        url = "https://cloud-api.yandex.net/v1/disk/resources/download?path=" + urllib.parse.quote(path)
        return json.loads(urllib.request.urlopen(urllib.request.Request(url, headers=H), timeout=60).read())["href"]
    def upload_url(path):
        url = "https://cloud-api.yandex.net/v1/disk/resources/upload?path=" + urllib.parse.quote(path) + "&overwrite=true"
        return json.loads(urllib.request.urlopen(urllib.request.Request(url, headers=H), timeout=60).read())["href"]
    try:
        data = urllib.request.urlopen(urllib.request.Request(get_download_url(src)), timeout=180).read()
        dst = "/Фото домов по объектам/Владимирская область — стройка (каркас-кровля-отделка)/IMG_5955.HEIC"
        urllib.request.urlopen(urllib.request.Request(upload_url(dst), data=data, method="PUT"), timeout=180)
        print("Докачано:", dst, len(data), "байт")
    except Exception as e:
        print("FAIL:", e)

# проверка структуры
print("\n=== Структура /Фото домов по объектам ===")
root = ls("/Фото домов по объектам")
for it in root.get("_embedded", {}).get("items", []):
    if it["type"] == "dir":
        sub = ls(it["path"])
        files = [c for c in sub.get("_embedded", {}).get("items", []) if c["type"] == "file"]
        print(f"  {it['name']}: {len(files)} файлов")
