Skip to content

Commit 957446f

Browse files
committed
fix: readme typos
1 parent 449d78d commit 957446f

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

README.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
# Automatic GoPro Media Uploader for Immich
22

3-
Ever wondered why your feature-packed GoPro can't just connect to your own server and upload all the media automatically? Me too. Luckily, both GoPro and Immich have a convenient API. So I created this lil service to do just that. (Yee, I know there is the cloud subscription.)
3+
Have you ever wondered why your feature-packed GoPro can't just connect to your own server and upload all the media automatically?
4+
Me too. Luckily, both GoPro and Immich have a convenient API. So I created this lil service to do just that.
5+
(Yee, I know there is the cloud subscription.)
46

57
## What does it do?
68

79
- The service scans the BLE network for paired GoPro cameras.
810
- When a camera is detected, we set it up for [COHM (Camera On the Home Network)](https://gopro.github.io/OpenGoPro/ble/features/cohn.html) and instruct it to connect to your home Wi-Fi network.
911
- Once connected, the service streams media, one by one, directly from the camera to the Immich server (without storing in RAM or on disk).
1012
- All media confirmed to be uploaded by Immich are automatically deleted from the camera (configurable).
11-
- When all media are uploaded, the camera is powered off.
13+
- When all media are uploaded, the camera is powered off (configurable).
1214

1315
## Why?
1416

15-
I wanna be lazy. Downloading footage to my PC to upload to Immich was too much work and caused too many worn-out SSD bits to get immediately deleted once uploaded.
17+
I wanna be lazy. Downloading footage to my PC just to upload it to Immich was too much work and caused too many worn-out SSD bits to get immediately deleted once uploaded.
1618

1719
## How?
1820

19-
- Use a Linux machine with Docker and BlueZ installed.
21+
- Use a Linux machine with Docker (or Podman) and BlueZ installed.
2022
- Ensure your Linux machine is paired with your GoPro, which you can do using the `bluetoothctl` command. See [Pairing with GoPro](#pairing-with-gopro).
2123
- Launch the service with this command:
2224
```sh
@@ -48,13 +50,13 @@ docker run --rm --read-only --name gopro-immich-uploader \
4850

4951
```sh
5052
bluetoothctl
51-
[bluetooth]# power on
52-
[bluetooth]# scan le
53-
[bluetooth]# devices
53+
[bluetoothctl]> power on
54+
[bluetoothctl]> scan le
55+
[bluetoothctl]> devices
5456
# Find your GoPro in the list
55-
[bluetooth]# pair <GoPro MAC address>
57+
[bluetoothctl]> pair <GoPro MAC address>
5658
# Repeat the last command until you see "Pairing successful"
57-
[bluetooth]# quit
59+
[bluetoothctl]> quit
5860
```
5961

6062
## Development setup
@@ -88,7 +90,7 @@ This is not affiliated with GoPro in any way.
8890

8991
I am not responsible for any damage caused by this project.
9092
Don't trust this code to take care of your precious footage.
91-
**Especially** if you enable the `CAMERA_POWER_OFF` option.
93+
**Especially** if you enable the `DELETE_AFTER_UPLOAD` option.
9294
If the Immich faints and your footage gets deleted anyway, you're on your own.
9395

9496
I use this thing to automatically pull "DashCam" like footage from the camera.
@@ -111,8 +113,8 @@ work around:
111113
please let me know.
112114
- To implement streaming downloads of media, I ended up creating a custom mixin and fit it nicely between the `WirelessGoPro`
113115
and `GoProBase` classes. To pass the stream, I ended up abusing property used to pass the file name.
114-
- Since I'm ranting on libs, why not add that requests_toolbelt reports the full length of the body, while requests expect
115-
only the remaining length? Had to patch up the `StreamingIterator` to fix that.
116+
- Since I'm ranting on libs, why not add that `requests_toolbelt` reports the full length of the body, while requests expect
117+
only the remaining length? Had to patch up the `StreamingIterator` to get it to work.
116118

117119
All of these should stand as a reason this whole thing should be rewritten from scratch using better libraries.
118120
But it works well enough for my needs.

0 commit comments

Comments
 (0)