#!/bin/bash
# Скачивалка файлов с cloud.mail.ru
# Использование:
#   ./mailru_download.sh <URL> [выходной_файл]

URL="$1"
OUTPUT="$2"
COOKIES="${3:-cookies.txt}"

UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"

if [ -z "$URL" ]; then
  echo "Использование: $0 <cloud.mail.ru URL> [выходной файл] [cookies.txt]"
  exit 1
fi

if [ ! -f "$COOKIES" ]; then
  echo "⚠️  Файл куков не найден: $COOKIES"
  exit 1
fi

# Из https://cloud.mail.ru/public/daKh/yT4GtXJ6x/file.MOV
# берём часть после /public/ → daKh/yT4GtXJ6x/file.MOV
REL_PATH=$(python3 -c "
from urllib.parse import urlparse
import sys, re
path = urlparse(sys.argv[1]).path
# убираем ведущий /public/
m = re.match(r'^/public/(.+)$', path)
print(m.group(1) if m else path.lstrip('/'))
" "$URL")

# Имя файла для сохранения
if [ -z "$OUTPUT" ]; then
  OUTPUT=$(python3 -c "
from urllib.parse import unquote
import sys
print(unquote(sys.argv[1]).split('/')[-1])
" "$URL")
fi

echo "🔍 Получаю прямую ссылку через API..."

# weblink_get возвращает базу вида: https://clocloXX.cloud.mail.ru/public/TOKEN/g/no
WEBLINK_BASE=$(curl -s \
  -b "$COOKIES" \
  -H "Referer: https://cloud.mail.ru/" \
  -H "User-Agent: $UA" \
  -H "Accept: application/json" \
  "https://cloud.mail.ru/api/v2/dispatcher?api=2&build=release" | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
url = data['body']['weblink_get'][0]['url']
print(url.rstrip('/'))
")

if [ -z "$WEBLINK_BASE" ]; then
  echo "❌ Не удалось получить базовый URL из API"
  exit 1
fi

# Итоговый URL: https://clocloXX.cloud.mail.ru/public/TOKEN/g/no/daKh/yT4GtXJ6x/file.MOV
DIRECT_URL="${WEBLINK_BASE}/${REL_PATH}"

echo "🔗 Прямая ссылка: $DIRECT_URL"
echo "⬇️  Скачиваю: $OUTPUT"
echo ""

curl -L \
  -b "$COOKIES" \
  -o "$OUTPUT" \
  --progress-bar \
  -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8" \
  -H "Accept-Language: en-GB,en;q=0.9" \
  -H "Cache-Control: no-cache" \
  -H "Pragma: no-cache" \
  -H "Referer: https://cloud.mail.ru/" \
  -H "Sec-Fetch-Dest: iframe" \
  -H "Sec-Fetch-Mode: navigate" \
  -H "Sec-Fetch-Site: cross-site" \
  -H "Upgrade-Insecure-Requests: 1" \
  -H "User-Agent: $UA" \
  "$DIRECT_URL"

if [ $? -eq 0 ]; then
  SIZE=$(du -h "$OUTPUT" | cut -f1)
  echo ""
  echo "✅ Готово: $OUTPUT ($SIZE)"
else
  echo ""
  echo "❌ Ошибка при скачивании"
  exit 1
fi
