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.10 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 Linux / MacOS venv\Scripts\activate # On Windows
-
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! See CONTRIBUTING.md for how to file issues and submit pull requests. Open a pull request using the provided PR template. CODEOWNERS in .github/CODEOWNERS will be requested for review. This project follows a Code of Conduct. See SECURITY.md for how to report vulnerabilities.
.editorconfig and .vscode/settings.json
keep editor formatting consistent (indentation, line endings, trailing
whitespace), .gitattributes normalizes line endings and
marks binary files, and pre-commit hooks in
.pre-commit-config.yaml catch common issues
locally before you push (install with pre-commit install).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gimmie-0.3.1.tar.gz.
File metadata
- Download URL: gimmie-0.3.1.tar.gz
- Upload date:
- Size: 91.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c29780751e202f94e50c3fe33060af7005536a07a9357015347acdce2682f4c
|
|
| MD5 |
4b859e70f035e0f6a896725369f36607
|
|
| BLAKE2b-256 |
e0ddeca87a104600b19de61ac747e84e594a557810b615d89118447218b1c2fd
|
Provenance
The following attestation bundles were made for gimmie-0.3.1.tar.gz:
Publisher:
publish.yml on laywill/gimmie
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gimmie-0.3.1.tar.gz -
Subject digest:
4c29780751e202f94e50c3fe33060af7005536a07a9357015347acdce2682f4c - Sigstore transparency entry: 2741109685
- Sigstore integration time:
-
Permalink:
laywill/gimmie@6d384b28b868ce69c78c8755550c0b8454a93966 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/laywill
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6d384b28b868ce69c78c8755550c0b8454a93966 -
Trigger Event:
push
-
Statement type:
File details
Details for the file gimmie-0.3.1-py3-none-any.whl.
File metadata
- Download URL: gimmie-0.3.1-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b461b6393e293fcfc534c92dc608621c9b30bcea2c753f6a2a1a50afdbe0fce
|
|
| MD5 |
49051fe400690ebf90f24994e144f2af
|
|
| BLAKE2b-256 |
42fbe8fc5dbb6e98682789adee0a8f44535d5a43faeae83a6d979b72cd2537fa
|
Provenance
The following attestation bundles were made for gimmie-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on laywill/gimmie
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gimmie-0.3.1-py3-none-any.whl -
Subject digest:
1b461b6393e293fcfc534c92dc608621c9b30bcea2c753f6a2a1a50afdbe0fce - Sigstore transparency entry: 2741109740
- Sigstore integration time:
-
Permalink:
laywill/gimmie@6d384b28b868ce69c78c8755550c0b8454a93966 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/laywill
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6d384b28b868ce69c78c8755550c0b8454a93966 -
Trigger Event:
push
-
Statement type: