{"id":37194940,"url":"https://github.com/itsankoff/gopro-plus","last_synced_at":"2026-01-14T22:40:00.300Z","repository":{"id":205311816,"uuid":"704433175","full_name":"itsankoff/gopro-plus","owner":"itsankoff","description":"🎥 GoPro Plus CLI: Surpass the 25-file limit 🚧 and batch download ⬇️ your GoPro media 🎬 effortlessly. Perfect for NAS 💾 and Synology migrations 🔄. Docker image available 🐳.","archived":false,"fork":false,"pushed_at":"2024-12-31T16:22:23.000Z","size":51,"stargazers_count":37,"open_issues_count":2,"forks_count":10,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-01T00:31:00.623Z","etag":null,"topics":["api-client","command-line-tool","dockerized-app","gopro","gopro-media","gopro-plus","media-library","media-management","photography","video-editing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itsankoff.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-13T08:47:33.000Z","updated_at":"2025-07-28T10:53:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"c10dbb9f-0f9c-4e98-b4d4-ab78a6bf5f20","html_url":"https://github.com/itsankoff/gopro-plus","commit_stats":null,"previous_names":["itsankoff/gopro-plus"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/itsankoff/gopro-plus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsankoff%2Fgopro-plus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsankoff%2Fgopro-plus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsankoff%2Fgopro-plus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsankoff%2Fgopro-plus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itsankoff","download_url":"https://codeload.github.com/itsankoff/gopro-plus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsankoff%2Fgopro-plus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28436697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-client","command-line-tool","dockerized-app","gopro","gopro-media","gopro-plus","media-library","media-management","photography","video-editing"],"created_at":"2026-01-14T22:39:59.650Z","updated_at":"2026-01-14T22:40:00.283Z","avatar_url":"https://github.com/itsankoff.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoPro Plus Downloader\n\nIf you’re a GoPro Plus user, you’ve probably felt the frustration of trying to download\nyour media in bulk, **only to be stopped by the 25-file limit**. This arbitrary restriction\nmakes it tedious 😤😡 to migrate your content to other platforms like\nGoogle Drive, Dropbox, or your self-hosted NAS (e.g. Synology).\n\nGoPro Plus is an open-source project designed to enable users to interact with\nthe GoPro Plus media library from the command line. This project aims to provide\na convenient way to access and manage your GoPro media without the need\nto use the web interface.\n\n* 🐳 Docker hub: https://hub.docker.com/r/itsankoff/gopro\n* 📝 Article: https://thetooth.io/blog/gopro-plus-downloader/\n\n\n## Usage (Docker environment)\n\nFor `\u003cAUTH_TOKEN\u003e` and `\u003cUSER_ID\u003e` check [Environment Variables](#environment-variables)\n\n`docker run --name gopro-downloader -e AUTH_TOKEN='\u003cAUTH_TOKEN\u003e' -e USER_ID='\u003cUSER_ID\u003e' -v \u003c/path/to/download\u003e:/app/download itsankoff/gopro:latest`\n\nor\n\n```\ndocker run \\\n--name gopro-downloader\n-e AUTH_TOKEN='\u003cAUTH_TOKEN\u003e' \\\n-e USER_ID='\u003cUSER_ID\u003e' \\\n-v \u003c/path/to/download\u003e:/app/download \\\nitsankoff/gopro:latest\n```\n\nSupported Docker ENV variable options:\n\n* `-e AUTH_TOKEN=\u003cgopro-auth-token\u003e` - (**required**) authentication token\n        obtained from GoPro Media Library website. See [Environment Variables](#environment-variables).\n* `-e USER_ID=\u003cgopro-user-id\u003e` - (**required**) user id\n        obtained from GoPro Media Library website. See [Environment Variables](#environment-variables).\n* `-e ACTION=\u003clist|download\u003e` - (*optional*) action to execute. The default is `download`.\n* `-e START_PAGE=\u003cnumber\u003e` - (*optional*) run the `\u003caction\u003e` from specific page\n        (GoPro Media Library API is paginated). The default `1`.\n* `-e PAGES=\u003cnumber\u003e` - (*optional*) run the `\u003caction\u003e` over the specified number of pages.\n        Default `1000000` which should mean max and will download the all cloud assets.\n* `-e PER_PAGE=\u003cnumber\u003e` - (*optional*) specify number of items per page. Default `15`.\n* `-e PROGRESS_MODE=\u003cinline|newline|noline\u003e` - (*optional*) specify printing mode\n        for download progress. Default `noline`.\n\n## Environment Variables\n\nTo set up `AUTH_TOKEN` as an environment variable, you'll need to retrieve\nyour JWT token by logging into your GoPro Plus media library account.\n\n1. Open a browser of choice (Firefox/Chrome is prefered, for Safari you need to enable Developer Tools)\n2. 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)\n3. Open your browser's Developer Tools (Ctrl+Shift+I on most browsers or Cmd+Option+I on Mac).\n4. Go to the Network Tab on the Developer Tools console.\n5. In the Filter field enter - `user`\n6. Open the request and find the Cookies tab in the Sub Preview. You need to find the two mandatory cookies:\n    * `gp_access_token` - usually starts with `eyJhbGc...`. Copy this long sequence of gibberish characters into the env variable `AUTH_TOKEN`\n    * `gp_user_id` - the user ID. Copy this ID into the env variable `USER_ID`\n\nFor Docker:\n```bash\ndocker run -e AUTH_TOKEN=\u003cgopro-auth-token\u003e -e USER_ID=\u003cgopro-user-id\u003e itsankoff/gopro:latest\n```\n\nFor Linux/macOS:\n```bash\nexport AUTH_TOKEN=\"\u003cgibberish_string_here\u003e\"\nexport USER_ID=\"\u003cuser-id\u003e`\n```\n\nFor Windows Command Prompt:\n```cmd\nset AUTH_TOKEN=\"\u003cgibberish_string_here\u003e\"\nset USER_ID=\"\u003cuser-id\u003e\"\n```\n\nFor Windows PowerShell:\n```sh\n$env:AUTH_TOKEN=\"\u003cgibberish_string_here\u003e\"\n$env:USER_ID=\"\u003cuser-id\u003e\"\n```\n\nOnce the `AUTH_TOKEN` and `USER_ID` is set, you can run the GoPro Plus application without needing to pass the token explicitly.\nRemember to replace `\u003cgibberish_string_here\u003e` with the actual token you copied from the console.\nBy following these steps, you should be able to effectively manage your GoPro Plus media directly from your command line using GoPro Plus.\n\n\n## Local Development Prerequisites\n\nBefore you can use GoPro Plus, you need to have the following installed:\n\n* `python3.10+`\n* `pip3`\n* `direnv` (*optional*)\n* `docker` (*optional*)\n\n\n## Local Installation\n\nTo run GoPro Plus locally on your machine, follow these steps:\n\n* `git clone https://github.com/itsankoff/gopro-plus.git`\n* `cd gopro-plus`\n* `python3 -m venv .venv`\n* `pip3 install -r requirements.txt`\n* (*optional*) `echo source .venv/bin/activate \u003e .envrc # assuming direnv usage`\n* (*optional*) `echo \"export AUTH_TOKEN='\u003cgopro-auth-token (see below)\u003e'\" \u003e\u003e .envrc # assuming direnv usage`\n\n\n## Local Usage\n\n* `./gopro` - running the help section\n\n## Dev Tooling\n\n* `Makefile` - check for convenient shortcuts\n    * `build` - build a docker container\n    * `release` - build and release the docker image for multiple platforms.\n    * `run` - run as local docker container\n    * `stop` - stop docker container\n    * `logs` - show docker logs in a follow mode\n    * `clean` - stop and remove spawned containers\n\n* `Dockerfile` - base configuration for the docker image\n\n## Troubleshooting\n\n* Docker logs `docker logs gopro-downloader`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsankoff%2Fgopro-plus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitsankoff%2Fgopro-plus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsankoff%2Fgopro-plus/lists"}