from __future__ import annotations

import sys
import urllib.request
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
    sys.path.insert(0, str(ROOT))

from configs.kling import KlingConfig
from scripts.repository import list_pending_download_assets, update_asset_local_path


def download_pending_assets() -> list[str]:
    cfg = KlingConfig()
    out_dir = Path(cfg.assets_root)
    out_dir.mkdir(parents=True, exist_ok=True)
    downloaded = []
    for asset in list_pending_download_assets():
        url = asset['original_url']
        suffix = Path(url).suffix or '.bin'
        filename = f"{asset['asset_id']}{suffix}"
        path = out_dir / filename
        urllib.request.urlretrieve(url, path)
        update_asset_local_path(asset['asset_id'], str(path))
        downloaded.append(str(path))
    return downloaded


if __name__ == '__main__':
    for p in download_pending_assets():
        print(p)
