#!/bin/bash

# Check if there are any .txt files in the current directory
txt_files=(*.txt)
if [ ${#txt_files[@]} -eq 0 ]; then
  echo "No .txt files found in the current directory!"
  exit 1
fi

total_files=0
total_size=0
downloaded_files=0
downloaded_size=0

# Calculate total number of files and total size to download
for file in *.txt; do
  while IFS= read -r url; do
    if [[ -n $url ]]; then
      total_files=$((total_files + 1))
      size=$(wget --spider "$url" 2>&1 | awk '/Length/ {print $2}')
      total_size=$((total_size + size))
    fi
  done < "$file"
done

# Loop through each .txt file and download each URL in parallel
for file in *.txt; do
  echo "Processing $file..."
  while IFS= read -r url; do
    if [[ -n $url ]]; then
      {
        wget -q --show-progress "$url"
        downloaded_files=$((downloaded_files + 1))
        size=$(wget --spider "$url" 2>&1 | awk '/Length/ {print $2}')
        downloaded_size=$((downloaded_size + size))
        remaining_files=$((total_files - downloaded_files))
        remaining_size=$((total_size - downloaded_size))
        echo "Downloaded: $downloaded_files/$total_files files, $downloaded_size/$total_size bytes"
        echo "Remaining: $remaining_files files, $remaining_size bytes"
      } &
    fi
  done < "$file"
done

# Wait for all background jobs to complete
wait
