Giter VIP home page Giter VIP logo

gogdl-ng's Introduction

gogdl-ng

forthebadge forthebadge

GitHub license GitHub license

A self-hostable application to download files in a folder from Google Drive powered by Go.


๐ŸŽฏ Features

  • Google Drive v3 API based
  • With additional Firefox and Chrome extension
  • OAuth 2.0 authorization
  • Integrity checks (MD5 checksum)
  • Transfer retries
  • Hassle-free setup thanks to Docker โค๏ธŽ

๐Ÿ“ Requirements

  • A Google Cloud Platform project with the Drive API enabled. Guide
  • Basic docker and docker-compose knowledge.
  • The gogdl-ng browser extension.

Installation

  1. Create a config folder and create a config.toml with the following content:
title = "gogdl-ng"

[application]
# Defines the port on which the application is listening for requests.
listenPort = 3200

# Defines the location where to write the application log file.
logFilePath = "./config/gogdl-ng.log"

[queue]
# Defines the maximum capacity of the job queue.
size = 1000

# Defines how many workers can run concurrently.
maxWorkers = 2

[gdrive]
# query string which will be appended to the base query which is: "'%drive_folder_id%' in parents and"
query = "trashed=false"

[download]
# Defines how many times a failed download should be retried.
retryThreeshold = 5
  1. Copy the *.json file which you got at the end of the Google Cloud Platform project guide into the config folder. Rename it to credentials.json.
  2. Start the container once with docker run. Like this:
    docker run -i -p 3200:3200 -v /path/to/config:/config -v /path/to/downloads:/downloads legendaryb/gogdl-ng:latest
    Follow the instructions as shown in the terminal. You need to enter the authorization code. After that you should exit via pressing CTRL+C
  3. Create the docker-compose.yml file (adjust it as you need):
version: '3'

services:
  gogdl-ng:
    image: legendaryb/gogdl-ng:latest
    container_name: gogdl-ng
    volumes:
      - ./config:/config
      - ./downloads:/downloads
    ports:
      - 3200:3200
    restart: always
  1. Now you can bring the service up: docker-compose up

gogdl-ng's People

Contributors

github-actions[bot] avatar hiroshui avatar legendaryb avatar nathforge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

gogdl-ng's Issues

Drive query configurable

At the moment the Drive query to retrieve the files is hardcoded. It should be possible to configure it to allow advanced scenarios like: "only download files with extension xyz"

Provide docker images

To ease the use of gogdl-ng prebuilt docker images should be provided.

Progress:

  • Docker account created
  • Docker repository created

Finish README.md

The current README.md does not contain many informations. The following should be added:

  • Installation
  • Requirements
  • Sample (docker-compose etc.)

I have token.json but 404

Hi, I successfully obtained token.json, but when I accessed gogdl-ng in the browser on port 3200 (192.168.0.3:3200) I got 404. WHat can be wrong?

Support nested folders

At the moment only files are downloaded which are located on the root level.
This is my personal use-case but it could be needed by others.

Use a worker queue

Instead of grabbing all 5 seconds the unfinished jobs we should use a worker queue and only load the unfinished jobs at startup from disk.

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.