Initial commit
This commit is contained in:
commit
7bf2b23738
10 files changed
+945
No files matched your search
@@ -0,0 +1,153 @@
|
||||
#!/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()
|
||||
Reference in new issue
Block a user