Commite Code
This commit is contained in:
70
Moodle/Tools/agets.sh
Normal file
70
Moodle/Tools/agets.sh
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/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"
|
Reference in New Issue
Block a user