An open API service indexing awesome lists of open source software.

https://github.com/itsankoff/gopro-plus

πŸŽ₯ GoPro Plus CLI: Surpass the 25-file limit 🚧 and batch download ⬇️ your GoPro media 🎬 effortlessly. Perfect for NAS πŸ’Ύ and Synology migrations πŸ”„. Docker image available 🐳.
https://github.com/itsankoff/gopro-plus

api-client command-line-tool dockerized-app gopro gopro-media gopro-plus media-library media-management photography video-editing

Last synced: 5 months ago
JSON representation

πŸŽ₯ GoPro Plus CLI: Surpass the 25-file limit 🚧 and batch download ⬇️ your GoPro media 🎬 effortlessly. Perfect for NAS πŸ’Ύ and Synology migrations πŸ”„. Docker image available 🐳.

Awesome Lists containing this project

README

          

# GoPro Plus Downloader

If you’re a GoPro Plus user, you’ve probably felt the frustration of trying to download
your media in bulk, **only to be stopped by the 25-file limit**. This arbitrary restriction
makes it tedious 😀😑 to migrate your content to other platforms like
Google Drive, Dropbox, or your self-hosted NAS (e.g. Synology).

GoPro Plus is an open-source project designed to enable users to interact with
the GoPro Plus media library from the command line. This project aims to provide
a convenient way to access and manage your GoPro media without the need
to use the web interface.

* 🐳 Docker hub: https://hub.docker.com/r/itsankoff/gopro
* πŸ“ Article: https://thetooth.io/blog/gopro-plus-downloader/

## Usage (Docker environment)

For `` and `` check [Environment Variables](#environment-variables)

`docker run --name gopro-downloader -e AUTH_TOKEN='' -e USER_ID='' -v :/app/download itsankoff/gopro:latest`

or

```
docker run \
--name gopro-downloader
-e AUTH_TOKEN='' \
-e USER_ID='' \
-v :/app/download \
itsankoff/gopro:latest
```

Supported Docker ENV variable options:

* `-e AUTH_TOKEN=` - (**required**) authentication token
obtained from GoPro Media Library website. See [Environment Variables](#environment-variables).
* `-e USER_ID=` - (**required**) user id
obtained from GoPro Media Library website. See [Environment Variables](#environment-variables).
* `-e ACTION=` - (*optional*) action to execute. The default is `download`.
* `-e START_PAGE=` - (*optional*) run the `` from specific page
(GoPro Media Library API is paginated). The default `1`.
* `-e PAGES=` - (*optional*) run the `` over the specified number of pages.
Default `1000000` which should mean max and will download the all cloud assets.
* `-e PER_PAGE=` - (*optional*) specify number of items per page. Default `15`.
* `-e PROGRESS_MODE=` - (*optional*) specify printing mode
for download progress. Default `noline`.

## Environment Variables

To set up `AUTH_TOKEN` as an environment variable, you'll need to retrieve
your JWT token by logging into your GoPro Plus media library account.

1. Open a browser of choice (Firefox/Chrome is prefered, for Safari you need to enable Developer Tools)
2. Go to [GoPro Plus Media Library](https://plus.gopro.com/media-library/) (assuming that you are signed out. If you are not, please sing out)
3. Open your browser's Developer Tools (Ctrl+Shift+I on most browsers or Cmd+Option+I on Mac).
4. Go to the Network Tab on the Developer Tools console.
5. In the Filter field enter - `user`
6. Open the request and find the Cookies tab in the Sub Preview. You need to find the two mandatory cookies:
* `gp_access_token` - usually starts with `eyJhbGc...`. Copy this long sequence of gibberish characters into the env variable `AUTH_TOKEN`
* `gp_user_id` - the user ID. Copy this ID into the env variable `USER_ID`

For Docker:
```bash
docker run -e AUTH_TOKEN= -e USER_ID= itsankoff/gopro:latest
```

For Linux/macOS:
```bash
export AUTH_TOKEN=""
export USER_ID="`
```

For Windows Command Prompt:
```cmd
set AUTH_TOKEN=""
set USER_ID=""
```

For Windows PowerShell:
```sh
$env:AUTH_TOKEN=""
$env:USER_ID=""
```

Once the `AUTH_TOKEN` and `USER_ID` is set, you can run the GoPro Plus application without needing to pass the token explicitly.
Remember to replace `` with the actual token you copied from the console.
By following these steps, you should be able to effectively manage your GoPro Plus media directly from your command line using GoPro Plus.

## Local Development Prerequisites

Before you can use GoPro Plus, you need to have the following installed:

* `python3.10+`
* `pip3`
* `direnv` (*optional*)
* `docker` (*optional*)

## Local Installation

To run GoPro Plus locally on your machine, follow these steps:

* `git clone https://github.com/itsankoff/gopro-plus.git`
* `cd gopro-plus`
* `python3 -m venv .venv`
* `pip3 install -r requirements.txt`
* (*optional*) `echo source .venv/bin/activate > .envrc # assuming direnv usage`
* (*optional*) `echo "export AUTH_TOKEN=''" >> .envrc # assuming direnv usage`

## Local Usage

* `./gopro` - running the help section

## Dev Tooling

* `Makefile` - check for convenient shortcuts
* `build` - build a docker container
* `release` - build and release the docker image for multiple platforms.
* `run` - run as local docker container
* `stop` - stop docker container
* `logs` - show docker logs in a follow mode
* `clean` - stop and remove spawned containers

* `Dockerfile` - base configuration for the docker image

## Troubleshooting

* Docker logs `docker logs gopro-downloader`