Giter Club home page Giter Club logo

github-release-downloader's Introduction

github-release-downloader

A demonstration of the program in bash

A command-line program written in Python for downloading GitHub release assets.

Notice

github-release-downloader on PyPI is a completely distinct project authored by MaxBQb. Check out their repository if you are interested in a library+CLI for the same purpose!

Features

Authenticated API requests

A Personal Access Token can be provided to the program using the grd auth command. This allows for making authenticated API requests, which are not limited to the usual 60 requests/hour rate limit. This application only requires read permission for whatever repositories you will be downloading from (for classic tokens, they should have the repo:public_repo permission).

API response caching

API responses are cached in an SQLite database to reduce API requests that would count against your current rate limit.

Encryption-at-rest support

If the SQLite library used by your Python installation has encryption support (for example SEE, SQLCipher, and SQLiteMultipleCiphers), the grd encrypt command can be used to add a custom passphrase, protecting your access token from being misused. Each time the database needs to be opened, you will be prompted for your passphrase.

Dependencies

Usage

  1. Install github-release-downloader.

    If you have Git installed, you can run the following command:

    pip install git+https://github.com/thegamecracks/github-release-downloader

    For users without Git, you can download the repository as a zip, then extract it, open a terminal inside the directory, and run:

    pip install .

    Several dependencies are required by this project so installing in a virtual environment is recommended. If you prefer to not handle the virtual environment yourself, installing this through pipx is a good alternative:

    pip install pipx  # see their proper installation instructions on PyPI
    pipx install git+https://github.com/thegamecracks/github-release-downloader
  2. (Optional) Create and add a Personal Access Token.

  3. Run grd download <owner> <repo> to download an asset from that repository, or alternatively python -m grd download <owner> <repo>.

Development

Project Structure

  • src/
    • alembic/ - Contains the alembic database migration scripts.
    • cli/ - Implements the command-line interface with Click.
    • client/ - Provides the API client and Pydantic models to interact with GitHub.
    • database/ - Defines the SQLAlchemy models and connections to the SQLite database.

Todo-list

  • list <owner> <repo> - list available releases for a repository
  • Allow downloading tar/zip archives

Wishlist

  • Terminal user interface (perhaps with textual?)

github-release-downloader's People

Contributors

thegamecracks avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.