Skip to content

laywill/gimmie

Repository files navigation

Gimmie

A simple command-line tool to download files from a list of URLs.

Description

Gimmie ("Give me your files") is a lightweight utility that downloads files from a list of web addresses. Simply provide a text file with one URL per line, and Gimmie will handle the rest.

Features

  • Downloads files from multiple URLs in sequence
  • Extracts filenames automatically from URLs
  • Supports any file type available via HTTP/HTTPS
  • Handles errors gracefully, continuing to the next file if one fails
  • Option to specify a custom download directory

Installation

Requirements

  • Python 3.9 or higher
  • pip package manager

From PyPI (Recommended)

pip install gimmie

From Source

  1. Clone the repository:

    git clone https://github.com/yourusername/gimmie.git
    cd gimmie
  2. Install the package:

    pip install .

Usage

Basic Usage

  1. Create a text file (e.g., files-to-download.txt) with one URL per line:

    https://example.com/file1.pdf
    https://example.com/file2.jpg
    https://example.com/file3.zip
    
  2. Run Gimmie with the file as an argument:

    gimmie files-to-download.txt
  3. Files will be downloaded to a downloads directory in your current working directory.

Command-Line Options

gimmie [-h] [-d DIRECTORY] url_file

Arguments:

  • url_file: Path to text file containing URLs (one per line)

Options:

  • -h, --help: Show help message and exit
  • -d DIRECTORY, --directory DIRECTORY: Directory to save downloaded files (default: downloads)

Example

# Download files to a custom directory
gimmie files-to-download.txt -d my_files

URL File Format

The URL file should contain one URL per line. The tool will:

  • Strip whitespace from lines
  • Skip empty lines and lines starting with '#' (for comments)

Example URL file:

# Files to download
https://example.com/file1.pdf
https://example.com/file2.jpg
https://example.com/file3.zip

Development

Docker Dev Container

The recommended approach is to use a Docker Dev Container as this includes everything you need.

  1. Install VSCode
    1. Ensure the ms-vscode-remote.remote-containers extension is installed.
  2. Install Docker Desktop
  3. Clone the repository
  4. Reopen in Container

Setting Up Development Environment

  1. Clone the repository

  2. Create a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install development dependencies:

    pip install -e ".[dev,test]"

Running Tests

Run the tests using PyTest:

pytest

Set the environment variable RUN_INTEGRATION_TESTS=1 to run integration tests that will actually download a file from the internet.

Linux:

export RUN_INTEGRATION_TESTS=1

Windows:

set RUN_INTEGRATION_TESTS=1

Updating Release version number

Rather than set the version explicitly, use Hatch to roll version numbers:

$ hatch version minor
Old: 0.1.0
New: 0.2.0

The final word in the command above controls how the version is incremented:

Segments New version
release 1.0.0
major 2.0.0
minor 1.1.0
micro patch fix 1.0.1
a alpha 1.0.0a0
b beta 1.0.0b0
c rc pre preview 1.0.0rc0
r rev post 1.0.0.post0
dev 1.0.0.dev0

This ensures that versions are rolled correctly.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

About

Gimmie ("Give me") is a Python tool for downloading a list of files from web addresses.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages