GitHub Content Downloader
A powerful command-line tool to download files and folders from GitHub repositories. Download any file or entire directory from GitHub repositories without cloning - perfect for selectively downloading specific content.
Features
- Download single files from GitHub repositories
- Download entire folders recursively
- Simple command-line interface (
ghcd
) - Support for both file URLs (blob) and folder URLs (tree)
- Customizable download location
- No authentication required for public repositories
Installation
Option 1: Install from PyPI
pip install github-content-downloader
Option 2: Install from source
git clone https://github.com/soykot2910/github-content-downloader.git
cd github-content-downloader
pip install .
Usage
Command Line Interface
- Basic usage:
ghcd <github-url>
- Download a single file:
ghcd https://github.com/user/repo/blob/master/path/to/file.pdf
- Download an entire folder:
ghcd https://github.com/user/repo/tree/master/docs
- Specify custom output directory:
ghcd -o ./my-downloads https://github.com/user/repo/tree/master/docs
- Interactive mode (if no URL provided):
ghcd
Command Line Options
ghcd --help
Available options:
-o, --output
: Specify output directory (default: ./downloaded_files)-h, --help
: Show help message
Python Package Usage
You can also use it as a Python package in your code:
from github_downloader import download_from_github
download_from_github(
"https://github.com/user/repo/blob/master/file.pdf"
)
download_from_github(
"https://github.com/user/repo/tree/master/docs",
dest_folder="./my-downloads"
)
URL Format Examples
For Files
https://github.com/username/repository/blob/branch/path/to/file.ext
Example:
https://github.com/tensorflow/tensorflow/blob/master/README.md
For Folders
https://github.com/username/repository/tree/branch/path/to/folder
Example:
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python
Common Issues and Solutions
-
Permission Error: If you get a permission error while downloading, make sure you have write permissions in the output directory.
-
Invalid URL Format: Make sure your GitHub URL follows the correct format. It should contain either 'blob' (for files) or 'tree' (for folders).
-
Download Failed: If downloads fail, check your internet connection and verify that the GitHub repository is public and accessible.
Requirements
- Python 3.6 or higher
requests
library (automatically installed with the package)
Development
Want to contribute? Great! Here's how:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Install development dependencies:
pip install -e .
- Make your changes
- Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Support
If you encounter any issues or have questions, please:
- Check the Common Issues section
- Open an issue on GitHub
- Contact the author via email
Acknowledgments
- Thanks to GitHub for providing their API
- Inspired by the need to download specific parts of repositories without cloning