Update README.md
This commit is contained in:
@@ -1,2 +1,65 @@
|
||||
# Air_Engine
|
||||
Air2 是一款基于 Python 开发的下一代下载管理器,专为极致速度、稳定性和灵活性而设计
|
||||
Air2: High-Performance Download Engine
|
||||
Air2 is a high-performance, multi-threaded download manager written in Python. It focuses on maximizing download speed through ultra-high concurrency, dynamic chunking strategies, and support for multiple protocols including HTTP/HTTPS, SFTP, and extensible architectures for BitTorrent. The tool provides both an interactive command-line interface (CLI) with modern visual feedback and a scriptable mode for automation.
|
||||
Features
|
||||
High Concurrency: Optimized thread pool supporting up to 200 concurrent workers to maximize bandwidth usage.
|
||||
Dynamic Chunking: Automatically adjusts chunk sizes based on file size to optimize throughput and reduce overhead.
|
||||
Multi-Protocol Support: Native support for HTTP/HTTPS and SFTP; architecture designed for easy addition of BitTorrent and other protocols.
|
||||
Robust Resume Capability: Handles Range requests efficiently to ensure zero data loss during network interruptions.
|
||||
Modern CLI Interface: Built with the rich library for real-time progress bars, speed meters, and ETA calculations without clutter.
|
||||
Intelligent Input: Optional integration with prompt_toolkit for command auto-completion, history navigation, and syntax highlighting.
|
||||
Task Management: Full lifecycle control including add, start, pause, resume, cancel, remove, and automatic ZIP extraction.
|
||||
Speed Limiting: Configurable download speed limits to prevent network congestion.
|
||||
Single File Deployment: Designed as a single executable script for easy distribution and deployment.
|
||||
Installation
|
||||
Ensure you have Python 3.8 or higher installed. Install the required dependencies:
|
||||
bash
|
||||
1
|
||||
Note: prompt_toolkit is optional but recommended for enhanced command-line features like auto-completion.
|
||||
Usage
|
||||
Interactive Mode
|
||||
Run the script directly to enter the interactive shell:
|
||||
bash
|
||||
1
|
||||
Available Commands:
|
||||
help: Display command list and help text.
|
||||
add <URL> [options]: Add a new download task.
|
||||
start <task_id>: Start a waiting task.
|
||||
pause <task_id>: Pause a running task.
|
||||
resume <task_id>: Resume a paused task.
|
||||
cancel <task_id>: Cancel a task (keeps downloaded files).
|
||||
remove <task_id> [--delete]: Remove a task and optionally delete the file.
|
||||
unzip <task_id> [output_dir]: Extract completed ZIP files.
|
||||
list / ls: Show all tasks and their status.
|
||||
status: Display system statistics and overall progress.
|
||||
exit / quit: Close the application.
|
||||
Example:
|
||||
text
|
||||
1234
|
||||
Command Line Mode (Scripting)
|
||||
You can also run commands directly from the terminal without entering the interactive shell:
|
||||
bash
|
||||
1234567891011
|
||||
Options for add Command
|
||||
--threads=N: Number of concurrent threads (default: 8).
|
||||
--output=DIR: Destination directory (default: current directory).
|
||||
--chunk-size=S: Force specific chunk size (e.g., 10M, 1G). Defaults to dynamic calculation.
|
||||
--speed-limit=N: Limit download speed in KB/s (0 for unlimited).
|
||||
--timeout=N: Request timeout in seconds.
|
||||
--retry=N: Number of retry attempts on failure.
|
||||
Architecture
|
||||
The codebase is structured into distinct modules for maintainability:
|
||||
DownloadEngine: Manages the core logic, including task queues, thread pools, and state synchronization.
|
||||
ChunkDownloader: Handles individual block retrieval, error recovery, and checksum verification.
|
||||
ProtocolHandler: Abstract base class for different protocols (HTTP, SFTP, etc.), allowing easy extension.
|
||||
ModernCLI: Provides the user interface layer using rich and prompt_toolkit.
|
||||
Configuration
|
||||
The engine automatically detects file sizes and adjusts chunk counts. For large files (>1GB), it increases chunk size to 16MB; for medium files (>100MB), it uses 4MB chunks. This dynamic approach minimizes connection overhead while maintaining high parallelism.
|
||||
Users can override these defaults via command-line arguments if specific network conditions require manual tuning.
|
||||
License
|
||||
This project is licensed under the MIT License.
|
||||
Requirements
|
||||
Python 3.8+
|
||||
requests
|
||||
rich
|
||||
urllib3
|
||||
prompt_toolkit (optional)
|
||||
|
||||
Reference in New Issue
Block a user