#!/usr/bin/env python3
import json, urllib.request, urllib.parse, os, sys

token = None
for line in open("/root/site/yandex/.env", encoding="utf-8"):
    if line.startswith("YANDEX_ACCESS_TOKEN="):
        token = line.split("=", 1)[1].strip()

def api(path):
    url = "https://cloud-api.yandex.net/v1/disk/resources?path=" + urllib.parse.quote(path)
    req = urllib.request.Request(url, headers={"Authorization": f"OAuth {token}"})
    with urllib.request.urlopen(req, timeout=30) as r:
        return json.loads(r.read().decode())

def get_item(path, name):
    d = api(path)
    for i in d.get("_embedded", {}).get("items", []):
        if i["type"] == "file" and i["name"] == name:
            return i
    return None

targets = [
    ("/Добротный дом рендеры/Добротный 1.0 Троицкий/Вывеска", "01.3.jpg", "/root/site/video/renders/vyveska_01.3.jpg"),
    ("/Добротный дом рендеры/Добротный 1.0 Троицкий/Вывеска", "03.3.jpg", "/root/site/video/renders/vyveska_03.3.jpg"),
    ("/Добротный дом рендеры/Добротный 1.0 Троицкий/Видео", "1.mp4", "/root/site/video/renders/video_1.mp4"),
    ("/Добротный дом рендеры/Добротный 1.0 Троицкий/Видео обзор дома", "Обзор дома Троицкий.mov", "/root/site/video/renders/obzor_troitskiy.mov"),
]

for folder, name, dest in targets:
    if os.path.exists(dest) and os.path.getsize(dest) > 1000:
        print("skip", name); continue
    it = get_item(folder, name)
    if not it:
        print("NOT FOUND:", name); continue
    print(f"downloading {name} ({it.get('size')} bytes)...", flush=True)
    req = urllib.request.Request(it["file"], headers={"Authorization": f"OAuth {token}"})
    with urllib.request.urlopen(req, timeout=1800) as r:
        open(dest, "wb").write(r.read())
    print("done:", name)
