Open GoPro API and Examples
Project description
Open GoPro Python SDK
This is a Python package that provides an interface for the user to exercise the Open GoPro Bluetooth Low Energy (BLE) and Wi-Fi / USB HTTP API's as well as install command line interfaces to take photos, videos, and view video streams.
- Free software: MIT license
- Documentation: View on Open GoPro
- View on Github
Documentation
Note! This README is only an overview of the package.
Complete documentation can be found on Open GoPro
Features
- Top-level GoPro class interface to use BLE, WiFi, and / or USB
- Cross-platform (tested on MacOS Big Sur, Windows 10, and Ubuntu 20.04)
- BLE implemented using bleak
- Wi-Fi controller provided in the Open GoPro package (loosely based on the Wireless Library
- Supports all commands, settings, and statuses from the Open GoPro API
- Asyncio based
- Automatically handles connection maintenance:
- manage camera ready / encoding
- periodically sends keep alive signals
- Includes detailed logging for each module
- Includes demo scripts installed as command-line applications to show BLE, WiFi, and USB functionality such as:
- Take a photo
- Take a video
- Configure and view a GoPro webcam stream
- GUI to send all commands and view the live / preview stream
- Log the battery
Installation
Note! This package requires Python >= 3.8 and < 3.12
The minimal install to use the Open GoPro library and the CLI demos is:
$ pip install open-gopro
To also install the extra dependencies to run the GUI demos, do:
$ pip install open-gopro[gui]
Usage
To automatically connect to GoPro device via BLE and WiFI, set the preset, set video parameters, take a video, and download all files:
import asyncio
from open_gopro import WirelessGoPro, Params
async def main():
async with WirelessGoPro() as gopro:
await gopro.ble_setting.resolution.set(Params.Resolution.RES_4K)
await gopro.ble_setting.fps.set(Params.FPS.FPS_30)
await gopro.ble_command.set_shutter(shutter=Params.Toggle.ENABLE)
await asyncio.sleep(2) # Record for 2 seconds
await gopro.ble_command.set_shutter(shutter=Params.Toggle.DISABLE)
# Download all of the files from the camera
media_list = (await gopro.http_command.get_media_list()).data.files
for item in media_list:
await gopro.http_command.download_file(camera_file=item.filename)
asyncio.run(main())
And much more!
Demos
Note! These demos can be found on Github
Demos can be found in the installed package in the "demos" folder. They are installed as a CLI entrypoint and can be run as shown below.
Command Line Interface (CLI) Demos
All of these demos are CLI only and can thus be run with the minimal (non-GUI) install.
Capture a photo and download it to your computer:
$ gopro-photo
Capture a video and download it to your computer:
$ gopro-video
Connect to the GoPro and log battery consumption in to a .csv:
$ gopro-log-battery
Connect to the GoPro's Wi-Fi AP and maintain the connection:
$ gopro-wifi
For more information on each, try running with help as such:
$ gopro-photo --help
usage: gopro-photo [-h] [-i IDENTIFIER] [-l LOG] [-o OUTPUT] [-w WIFI_INTERFACE]
Connect to a GoPro camera, take a photo, then download it.
optional arguments:
-h, --help show this help message and exit
-i IDENTIFIER, --identifier IDENTIFIER
Last 4 digits of GoPro serial number, which is the last 4 digits of the default camera SSID. If not used, first
discovered GoPro will be connected to
-l LOG, --log LOG Location to store detailed log
-o OUTPUT, --output OUTPUT
Where to write the photo to. If not set, write to 'photo.jpg'
-w WIFI_INTERFACE, --wifi_interface WIFI_INTERFACE
System Wifi Interface. If not set, first discovered interface will be used.
GUI Demos
These demos require the additional GUI installation.
Start the preview stream and view it:
$ gopro-preview-stream
Start the live stream and view it:
$ gopro-live-stream
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file open_gopro-0.17.0.tar.gz
.
File metadata
- Download URL: open_gopro-0.17.0.tar.gz
- Upload date:
- Size: 124.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.4 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 520f45f5eaf1fbf39a70f8f3727a7d11206f4ec5c068c4cc3a9acf60e4fe7c68 |
|
MD5 | d24b096898cbf535c1f9d36a3916d586 |
|
BLAKE2b-256 | bbc9ad2c93d3ae9dc200a23bc1fa8d407dbe416e2bebab57a8671ff2db311178 |
File details
Details for the file open_gopro-0.17.0-py3-none-any.whl
.
File metadata
- Download URL: open_gopro-0.17.0-py3-none-any.whl
- Upload date:
- Size: 157.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.4 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3f11e473bf5a6e2a7d42258d43fb0f6d5f9fcf99eb3c1dd3a20fef390b31c7c |
|
MD5 | 37618973b91ed7e244352c6ab5c23f6b |
|
BLAKE2b-256 | a9b9a78e28c5297c500d648f47a4c19ff2375664a8a4a1da6097b05b8b654269 |