#!/bin/bash

INPUT_LIST="list.txt"
TEMP_LIST="list_to_download.txt"
MIN_VALID_SIZE=1024  # Kích thước tối thiểu (bytes) để coi là file hợp lệ

# 🔍 Kiểm tra aria2c đã cài chưa
if ! command -v aria2c &> /dev/null; then
    echo "❌ Lỗi: aria2c chưa được cài. Vui lòng cài aria2 trước."
    exit 1
fi

# 📂 Kiểm tra file list.txt có tồn tại không
if [ ! -f "$INPUT_LIST" ]; then
    echo "❌ Không tìm thấy file $INPUT_LIST"
    exit 1
fi

# 📝 Tạo danh sách tạm các URL cần tải
> "$TEMP_LIST"

while read -r url; do
    # 👉 Bỏ qua dòng trống hoặc comment
    [[ -z "$url" || "$url" == \#* ]] && continue

    # 🎯 Lấy tên file bỏ phần query string
    filename=$(basename "${url%%\?*}")

    # 📦 Kiểm tra trạng thái file
    if [ ! -f "$filename" ]; then
        echo "$url" >> "$TEMP_LIST"
        echo "⬇️  Thiếu file: $filename"
    elif [ -f "$filename.aria2" ]; then
        echo "$url" >> "$TEMP_LIST"
        echo "🔄 Đang tải dở: $filename"
    elif [ "$(stat -c%s "$filename")" -lt "$MIN_VALID_SIZE" ]; then
        echo "$url" >> "$TEMP_LIST"
        echo "⚠️  File nhỏ bất thường (<$MIN_VALID_SIZE bytes), sẽ tải lại: $filename"
    else
        echo "✅ Đã có đầy đủ: $filename"
    fi
done < "$INPUT_LIST"

# 🚫 Nếu không còn gì để tải
if [ ! -s "$TEMP_LIST" ]; then
    echo "🎉 Tất cả file đã được tải đầy đủ."
    rm -f "$TEMP_LIST"
    exit 0
fi

# 🚀 Bắt đầu tải bằng aria2c
aria2c \
  -i "$TEMP_LIST" \
  --dir=. \
  --max-connection-per-server=16 \
  --split=16 \
  --min-split-size=1M \
  --max-concurrent-downloads=10 \
  --continue=true \
  --remove-control-file=true \
  --auto-file-renaming=false \
  --file-allocation=none \
  --summary-interval=0 \
  --console-log-level=warn \
  --log="aria2_download.log" \
  --log-level=notice

# ✅ Hoàn tất
echo "✅ Hoàn tất tải các file chưa đầy đủ."
rm -f "$TEMP_LIST"
