/SFD

Smart File Downloader [SFD] is a Concurrent File Downloader runs on terminal

Primary LanguageGoMIT LicenseMIT

SFD (Smart File Downloader)

License GitHub Workflow Status GitHub tag (latest by date)

A command-line application written in Go that allows users to download multiple files concurrently with features like pausing, resuming, and canceling downloads.

Features

  • Concurrent Downloads: Download multiple files simultaneously using goroutines.
  • Progress Tracking: Real-time display of download progress for each file.
  • Pause/Resume: Ability to pause and resume individual downloads.
  • Cancel Downloads: Option to cancel ongoing downloads.
  • Configurable: Customize download directory and maximum concurrent downloads via configuration.

Installation

  1. Clone the Repository:

    git clone https://github.com/Aryagorjipour/SFD.git
    cd SFD
  2. Build the Application:

    ./scripts/build.sh

    The executable will be located at ./bin/downloader.

Usage

./bin/downloader [download_directory]
  • Example:
    ./bin/downloader ./my_downloads
  • Commands

    • Download a file:
    download <URL>
    • List all downloads:
    list
    • Pause a download:
    pause <ID>
    • Resume a download:
    resume <ID>
    • Cancel a download:
    cancel <ID>
    • Exit the application:
     exit

Configuration

Modify the configs/config.yaml file to customize settings:

download_directory: "./downloads"
max_concurrent_downloads: 5

Testing

Run tests using the following command:

go test ./tests/...

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.

License

MIT License © 2024 Aryagorjipour