Files
linux-iso/setup.py
T
2025-07-08 18:03:18 +08:00

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()