#!/bin/bash

# ---- Zenodo 自动下载脚本 ----
# 用法： ./zenodo.sh 7412512

if [ -z "$1" ]; then
    echo "用法: $0 <zenodo_record_id>"
    exit 1
fi

ID=$1
BASE_DIR="/www/wwwroot/dataset/zenodo/$ID"

echo "==> 创建目录: $BASE_DIR"
mkdir -p "$BASE_DIR"
cd "$BASE_DIR"

echo "==> 获取 API: https://zenodo.org/api/records/$ID"
JSON=$(curl -s "https://zenodo.org/api/records/$ID")

echo "==> 解析文件信息..."
FILES=$(echo "$JSON" | jq -r '.files[] | @base64')

dl() {
    echo "$1" | base64 --decode
}

echo "--------------------------------------------"
echo "将下载以下文件："
echo "--------------------------------------------"

for f in $FILES; do
    NAME=$(dl $f | jq -r '.key')
    SIZE=$(dl $f | jq -r '.size')
    URL="https://zenodo.org/records/$ID/files/$NAME?download=1"

    if [ "$SIZE" -gt 5000000 ]; then
        # 大文件 → 32 线程
        echo "[大文件] $NAME  ($SIZE bytes)"
        echo "aria2c -x 32 -s 32 -k 1M --continue=true \"$URL\""
        aria2c -x 32 -s 32 -k 1M --continue=true "$URL"
    else
        # 小文件 → 单线程避免 416
        echo "[小文件] $NAME  ($SIZE bytes)"
        echo "aria2c -x 1 -s 1 --continue=true \"$URL\""
        aria2c -x 1 -s 1 --continue=true "$URL"
    fi

    echo "--------------------------------------------"
done

echo "==> 全部文件处理完毕。"
