Observed since 20 Oct, 18:05 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A command-line download client for ACDown Server with chunked, authenticated downloads
A powerful command-line download client for ACDown Server with chunked, authenticated downloads.
# Clone the repository
git clone <repository-url>
cd acdown-client
# Create virtual environment and install dependencies
uv sync
# Activate virtual environment (optional, uv run handles this)
source .venv/bin/activate # On Linux/macOS
# Set your ACDown server URL (required before first use)
acdown config set server_url http://your-server:3000
Note: The server URL must be configured before using any other commands. The application will prompt you if it's not set.
# Get a TOTP code from your authenticator app
acdown auth 123456
# Simple download
acdown https://example.com/file.zip
# Download with custom output path
acdown https://example.com/file.zip -o ./downloads/myfile.zip
# Download with custom concurrency
acdown https://example.com/large-file.iso -c 5
# Verbose mode
acdown https://example.com/file.zip -v
acdown <url> [OPTIONS]
Arguments:
URL: The URL to download (required)Options:
-o, --output PATH: Output file path (default: extract from URL)-c, --concurrent INT: Number of concurrent downloads (default: 3)-v, --verbose: Enable verbose logging-ip, --individual-progress: Show individual progress bars for each download thread--help: Show help messageExamples:
# Basic download
acdown https://github.com/example/app/releases/download/v1.0/app.zip
# Custom output location
acdown https://example.com/file.iso -o ~/Downloads/file.iso
# High concurrency for fast connection
acdown https://example.com/huge-file.zip -c 10
# Show individual progress bars for each concurrent thread
acdown https://example.com/large-file.zip -c 5 --individual-progress
# Debug mode
acdown https://example.com/file.zip -v
acdown auth <totp-code>
Authenticate with the ACDown server using a 6-digit TOTP code.
Example:
acdown auth 654321
Output:
╭─────────────────────────────────────╮
│ Authentication │
├─────────────────────────────────────┤
│ ✓ Authentication successful │
│ │
│ Server URL: http://localhost:3000 │
│ Token saved to: data.bin │
│ Expires: 2024-01-02 15:30:00 │
╰─────────────────────────────────────╯
acdown config <action> [key] [value]
Manage server configuration settings.
Actions:
set <key> <value>: Set a configuration valueget [key]: Get configuration value(s)Configuration Keys:
server_url: ACDown server base URL (required, no default)parallel: Number of concurrent downloads (default: 3)verbose: Enable verbose logging (default: false)output: Default output directory (default: .)Examples:
# Set ACDown server URL
acdown config set server_url http://myserver.com:3000
# Set concurrent downloads
acdown config set parallel 5
# Enable verbose mode
acdown config set verbose true
# Set default output directory
acdown config set output ./downloads
# Get specific config value
acdown config get server_url
# Get all configuration
acdown config get
acdown logout
Clear the saved authentication token while keeping configuration.
Output:
╭─────────────────────────────────────╮
│ Logout │
├─────────────────────────────────────┤
│ ✓ Logged out successfully │
│ │
│ Authentication token has been │
│ cleared. │
╰─────────────────────────────────────╯
# 1. Set server URL
acdown config set server_url http://my-acdown-server.com:3000
# 2. Authenticate
acdown auth 123456
# 3. Download a file
acdown https://example.com/software.zip
# Use high concurrency for large files
acdown https://example.com/ubuntu-24.04.iso -c 8 -o ~/Downloads/ubuntu.iso
# Create a script for multiple downloads
for url in $(cat urls.txt); do
acdown "$url" -o ./downloads/
done
# Enable verbose mode to see detailed information
acdown https://example.com/file.zip -v
All configuration and authentication data is stored in data.bin using a secure binary format.
The data file is stored in the system's application data directory:
~/.local/share/acdown/data.bin~/Library/Application Support/acdown/data.binC:\Users\<username>\AppData\Local\acdown\data.bin[config_length(4 bytes)][config_json][token_length(4 bytes)][token][expires_at(8 bytes)]
The file has restrictive permissions (600) for security.
The client handles various error scenarios gracefully:
✗ Authentication failed
Error: Invalid TOTP code
Hint: TOTP codes expire every 30 seconds
✗ Download failed
Error: Connection timeout
Retrying... (attempt 2/3)
✗ Not authenticated. Please run 'acdown auth <code>' first.
Increase Concurrency: For fast connections, increase concurrent downloads
acdown config set parallel 8
Use Verbose Mode: Monitor download details
acdown <url> -v
Check Server Health: Ensure server is running before downloading
curl http://your-server:3000/health
Problem: "Not authenticated" error
Solution:
# Re-authenticate with fresh TOTP code
acdown auth <new-code>
Problem: Connection timeout or refused
Solutions:
curl http://server:3000/healthacdown config get urlProblem: Download fails repeatedly
Solutions:
acdown <url> -vacdown <url> -c 1Problem: Token expires frequently
Solution: Tokens have a fixed lifetime set by the server. Re-authenticate when needed:
acdown auth <new-code>
acdown-client/
├── acdown/ # Main package
│ ├── __init__.py # Package exports
│ ├── cli.py # CLI commands (Typer)
│ ├── auth.py # Authentication manager
│ ├── downloader.py # Download engine
│ ├── progress.py # Progress tracking
│ ├── logger.py # Logging configuration
│ └── utils.py # Utility functions
├── config.example.toml # Example configuration
├── pyproject.toml # Project metadata
└── README.md # This file
acdown/auth.py): Handles TOTP authentication, token storage, and configurationacdown/downloader.py): Manages file analysis, chunked downloads, and concatenationacdown/progress.py): Beautiful progress display using Rich libraryacdown/logger.py): Configurable logging systemacdown/utils.py): Helper functions for URL validation, size formatting, etc.acdown/cli.py): Typer-based command-line interfaceThis client is designed to work with ACDown Server API endpoints:
POST /api/auth/login - AuthenticationPOST /api/proxy/analyze - File analysisGET /api/proxy/part/:encryptedParams - Chunk downloadGET /health - Health check# Using uv (recommended)
uv run acdown --help
# Or activate virtual environment first
source .venv/bin/activate
acdown --help
from acdown import AuthManager, Downloader, ProgressTracker
from acdown import validate_url, format_size
# Create instances
auth = AuthManager()
downloader = Downloader(config)
pyproject.tomluv sync to update lock fileThis project is open source. See LICENSE file for details.
For issues and feature requests, please visit the project repository.
Happy Downloading! 🚀
pypistats · 40 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-18 – 2026-10-18 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-17 – 2026-10-17 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-13 – 2026-10-13 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-10 – 2026-10-10 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-09 – 2026-10-09 | 3 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-08 – 2026-10-08 | 4 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-07 – 2026-10-07 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-06 – 2026-10-06 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-02 – 2026-10-02 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-10-01 – 2026-10-01 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-30 – 2026-09-30 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-29 – 2026-09-29 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-26 – 2026-09-26 | 3 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-21 – 2026-09-21 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-18 – 2026-09-18 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-09 – 2026-09-09 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-07 – 2026-09-07 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-06 – 2026-09-06 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-02 – 2026-09-02 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-09-01 – 2026-09-01 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-24 – 2026-08-24 | 8 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-23 – 2026-08-23 | 4 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-20 – 2026-08-20 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-18 – 2026-08-18 | 18 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-17 – 2026-08-17 | 4 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-14 – 2026-08-14 | 4 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-13 – 2026-08-13 | 2 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-09 – 2026-08-09 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-07 – 2026-08-07 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-04 – 2026-08-04 | 4 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-03 – 2026-08-03 | 4 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-20T23:25:20.7999302Z |
| 2026-07-23 – 2026-07-23 | 4 | 2026-10-20T23:25:20.7999302Z |
| 2026-07-21 – 2026-07-21 | 2 | 2026-10-20T23:25:20.7999302Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 27 Apr 2026 | 7 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 18:05 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:26b4cc16bcdc4c4072ea0e332c8d71c19b6def2255dee019717e4b0e1bccbcb3