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.
- Download single files from GitHub repositories
- Download entire folders recursively
- Download complete repositories
- Simple command-line interface (
ghcd) - Support for both file URLs (blob) and folder URLs (tree)
- Customizable download location
- No authentication required for public repositories
pip install github-content-downloader# Clone the repository
git clone https://github.com/soykot2910/github-content-downloader.git
# Navigate to the project directory
cd github-content-downloader
# Install the package
pip install .- Download a complete repository:
ghcd https://github.com/username/repositoryExample:
ghcd https://github.com/tensorflow/tensorflow- Download a specific folder:
ghcd https://github.com/username/repository/tree/branch/folderExample:
ghcd https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python- Download a single file:
ghcd https://github.com/username/repository/blob/branch/path/to/fileExample:
ghcd https://github.com/tensorflow/tensorflow/blob/master/README.md- Specify custom output directory:
ghcd -o ./my-downloads <github-url>- Interactive mode (if no URL provided):
ghcdghcd --helpAvailable options:
-o, --output: Specify output directory (default: ./downloaded_files)-h, --help: Show help message
You can also use it as a Python package in your code:
from github_downloader import download_from_github
# Download complete repository
download_from_github("https://github.com/username/repository")
# Download specific folder
download_from_github(
"https://github.com/username/repository/tree/master/docs",
dest_folder="./my-downloads"
)
# Download single file
download_from_github(
"https://github.com/username/repository/blob/master/README.md"
)https://github.com/username/repository
Downloads the entire repository from the default branch (usually 'master' or 'main').
https://github.com/username/repository/tree/branch/path/to/folder
Downloads only the specified folder and its contents.
https://github.com/username/repository/blob/branch/path/to/file
Downloads only the specified file.
-
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 one of these patterns:
- Repository:
https://github.com/username/repo - Folder:
https://github.com/username/repo/tree/branch/path - File:
https://github.com/username/repo/blob/branch/path
- Repository:
-
Download Failed: If downloads fail, check:
- Your internet connection
- The repository is public and accessible
- The URL is correct and the resource exists
- Python 3.6 or higher
requestslibrary (automatically installed with the package)
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
This project is licensed under the MIT License - see the LICENSE file for details.
- Md.Soykot
- Email: md.soykot2910@gmail.com
- GitHub: @soykot2910
If you encounter any issues or have questions, please:
- Check the Common Issues section
- Open an issue on GitHub
- Contact the author via email
- Thanks to GitHub for providing their API
- Inspired by the need to download specific parts of repositories without cloning