Releases: Rashed-alothman/Snatch
v1.8.0
Architectural Overhaul
-
Modular Package: Monolithic Snatch.py split into a clean package under Modules/ (soon snatch/), with dedicated modules for CLI, config, manager, cache, progress, utils, plugins, P2P, logging, defaults, constants, and metadata.
-
Entry Points: Scaffolded Modules/main.py for python -m Modules, and setup.py configured for a snatch console script.
-
Editable Installs: Supports pip install -e . for rapid development.
Logging & Configuration
-
Unified Logging: Central logging_config.py (Colorama for human‑readable; JSON formatter for machine parsing).
-
Root Logger: Automatically configured in cli.py, with module‑local logger = getLogger(name) everywhere.
Interactive Download Mode (WIP)
-
Interactive Mode: New interactive_mode.py consolidates prompts (media type, audio codec, channels, resolution).
-
Crash Fix: Resolved 'NoneType' object has no attribute 'get' when metadata missing.
-
Flags: --no-interactive placeholder for non‑interactive defaults.
DownloadManager Improvements (WIP)
-
Format Options: Scaffold to accept format_opts dict (audio/video filters).
-
Exit Codes: Defined 0=success, 1=partial failure, 2=fatal error.
Extensibility Scaffolds
-
Plugin API: plugins.py stub for entry‑point discovery and hook registry.
-
P2P Sharing: p2p.py stubs for share_file() and fetch_file(), paving the way for direct Snatch‑to‑Snatch transfers.
Planned Advanced Features
-
Proxy Auto‑Config & NTLM/Kerberos support
-
Multi‑host mirror & failover (Metalink, chunk scheduling)
-
Video upscaling (SRCNN/ESPCN/Topaz AI) and audio enhancement (RNNoise, loudnorm)
-
Internationalization (gettext, locales/)
-
CI‑driven testing matrix and shell‑completion scripts
Known Issues in This Pre‑Release
-
Interactive Mode Incomplete: Some prompts may not correctly override defaults or honor --no-interactive.
-
Audio‑Format Flag: --audio-format binding to DownloadManager is not yet fully wired.
-
P2P Workflow: Handshake, NAT traversal, and error handling are placeholders needing robust testing.
-
Plugin Hooks: No real plugins yet; hook points need integration.
-
Packaging Edges: Windows console‑script shim may require manual PATH adjustments.
Snatch v1.7.0
Snatch v1.7.0 - Performance Optimization & User Experience
Major Improvements
- Smart Format Selection: Automatically selects optimal formats without testing all possibilities
- Network Speed Test: Automatically tests network speed and optimizes download settings
- Advanced Temp File Management: Better handling of locked files and cleanup of orphaned fragments
- Unified Spinner Animation: Merged animation classes for better code maintainability
- Optional Format Testing: Now asks before testing all formats, drastically improving initial load speed
Bug Fixes
- Fixed bare exception handlers throughout the codebase
- Fixed issues with speedtest caching and result interpretation
- Fixed errors with FLAC conversion and file verification
- Fixed issues with URI handling and network tests
- Fixed memory leaks during large downloads
User Experience Enhancements
- Added clear prompts for better format selection
- More accurate download size estimation
- Better error messages with clear resolution steps
- Improved progress display with better visuals
- Intelligent resolution selection based on network speed
Technical Improvements
- Added efficient caching of media info
- Improved resource management
- Enhanced error handling and reporting
- Optimized I/O operations
- Added fuzzy command matching for typo tolerance
Snatch v1.6.0
Snatch v1.6.0 Release Notes
Major Enhancements
-
Direct URL Processing: Simply paste a URL at the prompt for automatic best-quality video download
-
Enhanced Audio Configuration: New interactive prompts for audio channel configuration (Stereo 2.0 or Surround 7.1)
-
Format-specific Optimizations: Specialized handling for FLAC, MP3, MP4 and other formats with quality presets
-
Improved Progress Display: Real-time download statistics with ETA, speed metrics and visual indicators
-
Smart Network Detection: Adaptive download parameters based on connection speed and reliability
Performance Improvements
-
Memory Efficiency: Reduced RAM usage during large downloads with optimized buffer management
-
Faster Metadata Extraction: Single-pass analysis with format-specific optimization paths
-
Smarter Downloading: Dynamic chunk sizing based on network conditions
-
Parallel Processing: Better utilization of multi-core systems for faster downloads
-
Intelligent Caching: LRU-based caching system for repeated operations
User Experience Enhancements
-
Better Terminal UI: Adaptive progress bars with color-coding and real-time statistics
-
** Clearer Help Menu: Redesigned command center with visual examples and intuitive organization**
-
Improved Error Handling: More descriptive error messages with actionable recovery steps
-
Graceful Degradation: Better handling of limited terminal capabilities and system resources
-
Enhanced Playlist Management: More options for handling playlist downloads with previews and selections
Bug Fixes
-
Fixed "Finished status received but no filename provided" error during FLAC conversion
-
Corrected parameter name for FLAC encoding ([bits_per_sample]→( bits_per_raw_sample)
-
Fixed network connectivity checking implementation
-
Resolved URL parsing issues with YouTube links containing query parameters
-
Improved handling of special characters in filenames and paths
-
Fixed memory leaks during large batch downloads
New Analytics Features
- Advanced Statistics: Track download performance with detailed metrics
- Speed Analysis: Monitor average, median, and peak speeds with deviation calculation
- Visual Reports: Terminal-based graphs for download performance analysis
- Session Management: Better handling of download history and interrupted transfers
Additional Improvements
- File Organization: Enhanced metadata-based file organization with customizable templates
- Cross-platform Compatibility: Better handling of path differences between Windows and Unix
- Resource Management: Intelligent system resource monitoring to prevent overloading
- Terminal Adaptability: Responsive layouts that adjust to terminal size changes
Installation Notes
- No new dependencies required
- Recommended: Latest version of ffmpeg for optimal media processing
- Optional: aria2c for even faster downloads with advanced connection management
Snatch v1.5.0
Enhanced Retry Mechanism:
Increased the default MAX_RETRIES from 10 to 15
Added exponential backoff with jitter for more distributed retry attempts
Improved detection of retriable network errors via the _is_retriable_error method
Added command-line options for users to control retry behavior
User-Friendly Feedback:
Added detailed error messages mapping for common network errors in NETWORK_ERROR_MESSAGES
Created a _get_friendly_error_message method that generates readable error messages
Added retry attempt counter in error messages
Better connection handling with improved socket timeout and keep-alive headers
Better Logging and Diagnostics:
Detailed logging of retry attempts with DEBUG level messages
Clear indication when maximum retries are reached
Type-specific error handling for different network failures
Suggestions for potential fixes (like using --throttle option)
x the issue with the audioChannels parameter in the FFmpegExtractAudio postprocessor. The error occurs because the parameter name is incorrect in the options dictionary.
This change fixes the parameter name from audioChannels to audio_channels, which is the correct parameter name expected by the FFmpegExtractAudio postprocessor. The error was happening because yt-dlp was receiving an unexpected parameter name that it didn't recognize.
Full Changelog: v1.4.0...v1.5.0
Snatch v1.4.0
New Features and Enhancements
Improved Error Handling & Automatic Retry Logic:
Added robust error handling during downloads.
Implemented automatic retry with exponential backoff for failed download attempts.
Enhanced Caching with LRU Eviction:
Integrated an LRU cache mechanism to manage repeated downloads efficiently.
Automatically evicts the least recently used cache entries when storage limits are exceeded.
Download Session Management & Resume Capability:
Introduced a session manager to track and resume interrupted downloads.
Session data is stored in a JSON file for persistent progress tracking.
Enhanced Metadata Extraction & File Organization:
Improved extraction of media metadata (e.g., upload date, title).
Added functionality to automatically organize downloaded files into subdirectories based on metadata.
Enhanced Logging & Debugging:
Upgraded logging system to include both console and file logging with multiple log levels (DEBUG, INFO, etc.).
Enhanced error messages and troubleshooting output when using the --verbose flag.
Network Connectivity Verification:
Added a preliminary network check to ensure connectivity before starting downloads.
Accurate Progress Reporting:
Updated progress bar logic to accurately show the real percentage of remaining download.
File Naming Cleanup:
Fixed an issue where redundant file extensions (e.g., ".wav.flac") were appended.
Now cleans up the file name to display only the correct final extension.
FFmpeg Audio Conversion Improvements:
Updated FFmpeg parameters to default to Opus (instead of MP3) for audio conversions.
Added interactive prompt to allow users to select between stereo (2 channels) or 7.1 surround sound.
Fixed FLAC conversion metadata handling issues.
Thumbnail Download and Embedding:
Enabled thumbnail downloading with audio downloads.
Embedded the downloaded thumbnail as cover art in the audio file.
Bug Fixes
Resolved issues with file naming that caused redundant extensions.
Fixed problems with FLAC metadata not being copied properly during conversion.
Corrected progress bar calculations to reflect actual download progress.
CLI Enhancements
Added and improved functionality for several CLI options:
--version: Displays the current version.
--resume: Resumes interrupted downloads.
--stats: Shows download statistics.
--system-stats: Displays system resource stats.
--format-id : Allows selection of specific format IDs.
--no-cache: Skips using cached media information.
--no-retry: Disables automatic retry logic.
--throttle : Limits the download speed.
--aria2c: Uses aria2c as the download engine.
--verbose: Enables detailed debugging output.