154 lines
4.5 KiB
Python
154 lines
4.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Setup script to help users get started with the Linux ISO downloader.
|
|
This script checks dependencies and provides initial setup guidance.
|
|
"""
|
|
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def check_python_version():
|
|
"""Check if Python version is compatible."""
|
|
version = sys.version_info
|
|
if version.major < 3 or (version.major == 3 and version.minor < 6):
|
|
print("❌ Python 3.6 or higher is required.")
|
|
print(f" Current version: Python {version.major}.{version.minor}")
|
|
return False
|
|
|
|
print(f"✅ Python {version.major}.{version.minor}.{version.micro} - Compatible")
|
|
return True
|
|
|
|
|
|
def check_dependencies():
|
|
"""Check if required dependencies are installed."""
|
|
try:
|
|
import requests
|
|
|
|
print(f"✅ requests {requests.__version__} - Installed")
|
|
except ImportError:
|
|
print("❌ requests library not found")
|
|
return False
|
|
|
|
try:
|
|
import tqdm
|
|
|
|
print(f"✅ tqdm {tqdm.__version__} - Installed")
|
|
except ImportError:
|
|
print("❌ tqdm library not found")
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def install_dependencies():
|
|
"""Install required dependencies."""
|
|
print("\n🔧 Installing dependencies...")
|
|
try:
|
|
subprocess.check_call(
|
|
[sys.executable, "-m", "pip", "install", "-r", "requirements.txt"]
|
|
)
|
|
print("✅ Dependencies installed successfully!")
|
|
return True
|
|
except subprocess.CalledProcessError:
|
|
print("❌ Failed to install dependencies")
|
|
return False
|
|
|
|
|
|
def create_output_directory():
|
|
"""Create the default output directory."""
|
|
output_dir = Path("./isos")
|
|
if not output_dir.exists():
|
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
print(f"✅ Created output directory: {output_dir.absolute()}")
|
|
else:
|
|
print(f"✅ Output directory already exists: {output_dir.absolute()}")
|
|
|
|
|
|
def check_urls_file():
|
|
"""Check if the URLs file exists."""
|
|
urls_file = Path("urls.txt")
|
|
if urls_file.exists():
|
|
with open(urls_file) as f:
|
|
urls = [line.strip() for line in f if line.strip()]
|
|
print(f"✅ Found {len(urls)} URLs in urls.txt")
|
|
return True
|
|
else:
|
|
print("❌ urls.txt file not found")
|
|
return False
|
|
|
|
|
|
def print_usage_examples():
|
|
"""Print usage examples."""
|
|
print("\n" + "=" * 60)
|
|
print("🚀 QUICK START EXAMPLES")
|
|
print("=" * 60)
|
|
|
|
print("\n1. Download all Linux ISOs:")
|
|
print(" python download_isos.py")
|
|
|
|
print("\n2. Download with custom settings:")
|
|
print(" python download_isos.py --max-workers 3 --retries 5")
|
|
|
|
print("\n3. Download to custom directory:")
|
|
print(" python download_isos.py --output-dir /path/to/downloads")
|
|
|
|
print("\n4. Run example scripts:")
|
|
print(" python examples/download_specific.py")
|
|
print(" python examples/create_custom_categories.py")
|
|
|
|
print("\n5. Get help:")
|
|
print(" python download_isos.py --help")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("📋 WHAT'S INCLUDED")
|
|
print("=" * 60)
|
|
print("• 17 Linux distributions in urls.txt")
|
|
print("• Parallel downloading with progress bars")
|
|
print("• Automatic resume for interrupted downloads")
|
|
print("• Example scripts in the examples/ directory")
|
|
print("• Comprehensive error handling and retry logic")
|
|
|
|
|
|
def main():
|
|
"""Main setup function."""
|
|
print("🐧 Linux ISO Downloader Setup")
|
|
print("=" * 40)
|
|
|
|
# Check Python version
|
|
if not check_python_version():
|
|
sys.exit(1)
|
|
|
|
# Check if dependencies are already installed
|
|
if not check_dependencies():
|
|
print("\n📦 Installing missing dependencies...")
|
|
if not install_dependencies():
|
|
print("\n❌ Setup failed. Please install dependencies manually:")
|
|
print(" pip install -r requirements.txt")
|
|
sys.exit(1)
|
|
|
|
# Verify installation
|
|
print("\n🔍 Verifying installation...")
|
|
if not check_dependencies():
|
|
print("❌ Dependency verification failed")
|
|
sys.exit(1)
|
|
|
|
# Create output directory
|
|
print("\n📁 Setting up directories...")
|
|
create_output_directory()
|
|
|
|
# Check URLs file
|
|
print("\n🔗 Checking URL configuration...")
|
|
check_urls_file()
|
|
|
|
# Print usage examples
|
|
print_usage_examples()
|
|
|
|
print("\n✅ Setup complete! You're ready to download Linux ISOs.")
|
|
print("\n💡 Tip: Start with 'python download_isos.py --help' to see all options.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|