Gimmie
March 28, 2025 ยท View on GitHub
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
pippackage manager
From PyPI (Recommended)
pip install gimmie
From Source
-
Clone the repository:
git clone https://github.com/yourusername/gimmie.git cd gimmie -
Install the package:
pip install .
Usage
Basic Usage
-
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 -
Run Gimmie with the file as an argument:
gimmie files-to-download.txt -
Files will be downloaded to a
downloadsdirectory 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.
- Install VSCode
- Ensure the
ms-vscode-remote.remote-containersextension is installed.
- Ensure the
- Install Docker Desktop
- Clone the repository
- Reopen in Container
Setting Up Development Environment
-
Clone the repository
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request