Skip to main content

Universal file hosting downloader with TUI - supports GoFile, PixelDrain, MediaFire, 1Fichier, Mega.nz

Project description

getit

Universal file hosting downloader with a beautiful Terminal UI

PyPI License: GPLv3 Python 3.10+ CI

Download files from GoFile, PixelDrain, MediaFire, 1Fichier, and Mega.nz with a single command.


🌟 Why GetIt?

GetIt transforms the mundane task of downloading files from various hosting services into a seamless, visual experience. Whether you are a casual user wanting a simple download or a power user needing batch processing and encryption support, GetIt handles it all with style.

✨ Features

  • Broad Host Support: Seamlessly download from GoFile, PixelDrain, MediaFire, 1Fichier, and Mega.nz.
  • Stunning TUI: innovative terminal interface that provides real-time progress visualization, speed metrics, and active management.
  • Robust CLI: Complete command-line control for scripting and headless operations.
  • Performance First:
    • Concurrent Downloads: Maximize bandwidth by downloading multiple files at once.
    • Smart Resume: Automatically resumes interrupted downloads where possible.
    • Speed Limiting: strict bandwidth controls for background usage.
  • Advanced Capabilities:
    • Recursive Folder Support: Downloads entire directory structures.
    • Security: Handles password-protected links and fully decrypts Mega.nz AES-CTR encryptions.
    • Integrity: Auto-verifies MD5/SHA256 checksums to ensure file safety.
  • Cross-Platform: Runs flawlessly on macOS, Linux, and Windows.

🚀 Quick Start

Installation

Install via pip (recommended):

pip install getit-cli

Or using Homebrew (macOS/Linux):

brew tap ahmedeltigani/getit
brew install getit

Basic Usage

Download a single file:

getit download https://gofile.io/d/abc123

Launch the interactive TUI:

getit tui

Batch download from a file:

getit download -f urls.txt

📖 Comprehensive Guide

Command Line Interface

The CLI is designed for efficiency.

getit download <URL> [OPTIONS]

Common Options:

  • -o, --output DIR: Specify target directory (default: ./downloads).
  • -c, --concurrent NUM: Set max simultaneous downloads (default: 4).
  • -p, --password TEXT: Provide password for protected resources.
  • -l, --limit SPEED: Set a speed cap (e.g., 1M, 500K).
  • --no-resume: Force restart of downloads.

Interactive TUI Controls

Manage your queue effortlessly with keyboard shortcuts:

Key Action Description
a Add URL Input a new URL to download queue
b Batch Import Load multiple URLs from a file
p Pause/Resume Toggle state of selected download
c Cancel Stop and remove selected download
s Settings Configure global preferences
d Dark Mode Toggle visual theme
q Quit Exit the application

Host Specifics

Host Files Folders Password Encryption Notes
GoFile - Handles rate limits & guest tokens automatically.
PixelDrain - - Supports lists and individual files.
1Fichier - - Manages wait times between downloads.
Mega.nz - Features full client-side decryption.

Configuration

GetIt looks for config.json in:

  • macOS: ~/Library/Application Support/getit/
  • Linux: ~/.config/getit/
  • Windows: %APPDATA%\getit\

Example config.json:

{
  "download_dir": "~/Downloads/getit",
  "max_concurrent_downloads": 4,
  "enable_resume": true,
  "gofile_token": "your_token_here"
}

🛠 Development

We welcome contributions!

  1. Clone: git clone https://github.com/ahmedeltigani/getit.git
  2. Setup: pip install -e ".[dev]"
  3. Test: pytest

Architecture Overview

  • core/downloader.py: Async engine handling HTTP streams and decryption.
  • core/manager.py: Semaphore-based orchestrator for concurrency.
  • extractors/: Modular logic for each file host.
  • tui/app.py: Textual-based interface implementation.

📄 License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.


Made with ❤️ by Ahmed Eltigani

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

getit_cli-0.1.0.tar.gz (47.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

getit_cli-0.1.0-py3-none-any.whl (57.7 kB view details)

Uploaded Python 3

File details

Details for the file getit_cli-0.1.0.tar.gz.

File metadata

  • Download URL: getit_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 47.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for getit_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1c65aa42356e400245e8bc1597fc676b69b10a3760410b0d659ff4c817fd7135
MD5 d34971dbdc24bab5fd3bee2b90cfe56c
BLAKE2b-256 5ee4b12c79fe3bd2dffbae19c4f664ca8621c7f6fdf49707fc629e65eeeeb591

See more details on using hashes here.

Provenance

The following attestation bundles were made for getit_cli-0.1.0.tar.gz:

Publisher: release.yml on Eltigani-web/getit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file getit_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: getit_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 57.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for getit_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ce99f9da975e05b011b2c35c9771b50a63902720180f03789ac2fe9ee35b619e
MD5 6e2d58d523619f3ef87dd49138c7dc90
BLAKE2b-256 7e42d45bc9658c26c38bdc63dcbd33bd3d17a23b118dd8d5d424de41a0034be2

See more details on using hashes here.

Provenance

The following attestation bundles were made for getit_cli-0.1.0-py3-none-any.whl:

Publisher: release.yml on Eltigani-web/getit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page