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 π³.
- Host: GitHub
- URL: https://github.com/itsankoff/gopro-plus
- Owner: itsankoff
- License: mit
- Created: 2023-10-13T08:47:33.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-12-31T16:22:23.000Z (over 1 year ago)
- Last Synced: 2025-08-01T00:31:00.623Z (11 months ago)
- Topics: api-client, command-line-tool, dockerized-app, gopro, gopro-media, gopro-plus, media-library, media-management, photography, video-editing
- Language: Python
- Homepage:
- Size: 49.8 KB
- Stars: 37
- Watchers: 1
- Forks: 10
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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`