#!/usr/bin/env python3
import json
import subprocess
import urllib.parse
import urllib.request
from pathlib import Path

PUBLIC = 'https://disk.yandex.ru/d/NjkmlkTUnYawKA'
API = 'https://cloud-api.yandex.net/v1/disk/public/resources/download'
OUT = Path('/home/spazio/ksd30_transcription/downloads')
FILES = [
    ('ПодарокКСД27_Верю в Себя.mp4', 'ПодарокКСД27_Верю в Себя.mp4', 144924345),
    ('Упражнение с жертвой.Потоки.mp3', 'Упражнение с жертвой.Потоки.mp3', 47338194),
]
for remote, local, expected in FILES:
    target = OUT / local
    if target.exists() and target.stat().st_size == expected:
        print('SKIP', local, flush=True)
        continue
    q = urllib.parse.urlencode({'public_key': PUBLIC, 'path': '/' + remote})
    with urllib.request.urlopen(API + '?' + q, timeout=60) as r:
        href = json.load(r)['href']
    part = target.with_suffix(target.suffix + '.part')
    cmd = ['curl', '-L', '--fail', '--retry', '20', '--retry-all-errors', '--retry-delay', '3', '-C', '-', '-o', str(part), href]
    print('DOWNLOAD', local, flush=True)
    subprocess.run(cmd, check=True)
    if part.stat().st_size != expected:
        raise RuntimeError(f'{local}: {part.stat().st_size} != {expected}')
    part.replace(target)
    print('DONE', local, flush=True)
