A simple command-line tool to download files from a list of URLs.
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.
- 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
- Python 3.9 or higher
pippackage manager
pip install gimmie-
Clone the repository:
git clone https://github.com/yourusername/gimmie.git cd gimmie -
Install the package:
pip install .
-
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.
gimmie [-h] [-d DIRECTORY] url_fileArguments:
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)
# Download files to a custom directory
gimmie files-to-download.txt -d my_filesThe 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.zipThe 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
-
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]"
Run the tests using PyTest:
pytestSet 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=1Windows:
set RUN_INTEGRATION_TESTS=1Rather than set the version explicitly, use Hatch to roll version numbers:
$ hatch version minor
Old: 0.1.0
New: 0.2.0The 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.
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