#!/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"