mirror of
https://github.com/ep1cman/unifi-protect-backup.git
synced 2025-12-05 23:53:30 +00:00
282 lines
9.3 KiB
Markdown
282 lines
9.3 KiB
Markdown
# Changelog
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
||
## [0.14.0] - 2025-07-18
|
||
- Add support for Finger Print, NFC Card Scan, and Audio Detections
|
||
|
||
## [0.13.1] - 2025-06-26
|
||
### Fixed
|
||
- Bumped uiprotect version to support unifi protect 6
|
||
|
||
## [0.13.0] - 2025-04-09
|
||
### Added
|
||
- Parallel uploaders are now supported
|
||
- All smart detection types are now supported
|
||
- Migrated the project from poetry to uv
|
||
|
||
### Fixed
|
||
- Corrected the envar for setting cameras to backup for ONLY_CAMERAS -> CAMERAS
|
||
- Bumped to the latest uiprotect library to fix issue when unifi access devices are present
|
||
|
||
## [0.12.0] - 2025-01-18
|
||
### Added
|
||
- Tool now targets UIProtect instead of pyunifiprotect which should help any lingering auth issues with Unifi OS 4.X
|
||
- Python Version bumped to 3.10 (based on UIProtect need)
|
||
- The ability to specify only specific cameras to backup
|
||
- Re-enabled the experimental downloader after adding a monkey patch for UIProtect to include the unmerged code
|
||
- Switched linter to `ruff`
|
||
- Added support for SMART_DETECT_LINE events
|
||
-
|
||
### Fixed
|
||
- Unifi now returns unfinished events, this is now handled correctly
|
||
- Login attempts now use an exponentially increasing delay to try work around aggressive rate limiting on logins
|
||
|
||
## [0.11.0] - 2024-06-08
|
||
### Added
|
||
- A new experimental downloader that uses the same mechanism the web ui does. Enable with
|
||
`--experimental-downloader`
|
||
### Fixed
|
||
- Support for UniFi OS 4.x.x
|
||
|
||
## [0.10.7] - 2024-03-22
|
||
### Fixed
|
||
- Set pyunifiprotect to a minimum version of 5.0.0
|
||
|
||
## [0.10.6] - 2024-03-22
|
||
### Fixed
|
||
- Bumped `pyunifiprotect` version to fix with versions of Unifi Protect after 3.0.10
|
||
|
||
## [0.10.5] - 2024-01-26
|
||
### Fixed
|
||
- Bumped `pyunifiprotect` version to fix issue with old version of yarl
|
||
|
||
## [0.10.4] - 2024-01-26
|
||
### Fixed
|
||
- Bumped `pyunifiprotect` version to fix issue caused by new video modes
|
||
|
||
## [0.10.3] - 2023-12-07
|
||
### Fixed
|
||
- Bumped `pyunifiprotect` version to fix issue caused by unifi protect returning invalid UUIDs
|
||
|
||
## [0.10.2] - 2023-11-21
|
||
### Fixed
|
||
- Issue where duplicate events were being downloaded causing database errors
|
||
- Default file path format now uses event start time instead of event end time which makes more logical sense
|
||
|
||
## [0.10.1] - 2023-11-01
|
||
### Fixed
|
||
- Event type enum conversion string was no longer converting to the enum value, this is now done explicitly.
|
||
|
||
## [0.10.0] - 2023-11-01
|
||
### Added
|
||
- Command line option to skip events longer than a given length (default 2 hours)
|
||
- Docker image is now based on alpine edge giving access to the latest version of rclone
|
||
### Fixed
|
||
- Failed uploads no longer write to the database, meaning they will be retried
|
||
- Fixed issue with chunked event fetch during initial ignore of events
|
||
- Fixed error when no events were fetched for the retention period
|
||
|
||
## [0.9.5] - 2023-10-07
|
||
### Fixed
|
||
- Errors caused by latest unifi protect version by bumping the version of pyunifiprotect used
|
||
- Queries for events are now chunked into groups of 500 which should help stop this tool crashing large
|
||
unifi protect instances.
|
||
|
||
## [0.9.4] - 2023-07-29
|
||
### Fixed
|
||
- Time period parsing, 'Y' -> 'y'
|
||
|
||
## [0.9.3] - 2023-07-08
|
||
### Fixed
|
||
- Queued up downloads etc now wait for dropped connections to be re-established.
|
||
|
||
## [0.9.2] - 2023-04-21
|
||
### Fixed
|
||
- Missing event checker ignoring the "ignored cameras" list
|
||
|
||
## [0.9.1] - 2023-04-21
|
||
### Added
|
||
- Added optional argument string to pass directly to the `rclone delete` command used to purge video files
|
||
|
||
### Fixed
|
||
- Fixed download errors not counting as failures
|
||
|
||
## [0.9.0] - 2023-03-24
|
||
### Added
|
||
- The ability to send logging out via apprise notifications
|
||
- Color logging is now optional
|
||
- Events are now permanently ignored if they fail to download 10 times
|
||
|
||
## [0.8.8] - 2022-12-30
|
||
### Added
|
||
- Added ability to configure purge interval
|
||
|
||
### Fixed
|
||
- Purge interval returned to previous default of once a day
|
||
|
||
## [0.8.7] - 2022-12-11
|
||
### Fixed
|
||
- Fix improper unpacking of upload events
|
||
|
||
## [0.8.6] - 2022-12-10
|
||
### Fixed
|
||
- check that current event is not none before trying to get it it’s ID
|
||
- downloader/uploaded clear their current event once it’s been processed
|
||
|
||
## [0.8.5] - 2022-12-09
|
||
### Fixed
|
||
- use event ID of currently up/downloading event, not whole event object when checking missing events
|
||
|
||
## [0.8.4] - 2022-12-09
|
||
### Added
|
||
- Logging of remaining upload queue size
|
||
|
||
### Fixed
|
||
- Uploading files were not accounted for when checking for missing events
|
||
- Buffer size parameter is logged in human-readable format
|
||
|
||
## [0.8.3] - 2022-12-08
|
||
### Added
|
||
- Now logs time zone settings for both the host and NVR
|
||
- Color logging is now optional and defaults to disabled (to match previous behavior before v0.8.0)
|
||
- Ability to configure download buffer size (bumped default up to 512MiB)
|
||
- Event IDs to upload/download logging
|
||
|
||
### Fixed
|
||
- Log spam when lots of events are missing, this will now only occur if the logging level is set to `EXTRA_DEBUG` (-vv)
|
||
- corrected logging not showing smart detection types
|
||
- The application no longer stalls when a video is downloaded larger than the available buffer size
|
||
- Ability to set the least verbose logging for the docker container
|
||
|
||
## [0.8.2] - 2022-12-05
|
||
### Fixed
|
||
- Fixed issue where command output was being returned with added indentation intended for logging only
|
||
- Fixed issue where some command logging was not indented
|
||
- Fixed issue where the tool could crash when run in a container if /config/database didn't exist
|
||
|
||
## [0.8.1] - 2022-12-04
|
||
version 0.8.0 was used by accident previously and PyPI would not accept it so bumping by one patch version
|
||
|
||
## [0.8.0] - 2022-12-03
|
||
Major internal refactoring. Each task is now its own class and asyncio task.
|
||
|
||
### Added
|
||
- A database of backed up events and where they are stored
|
||
- A periodic check for missed events
|
||
- This will also ensure past events before the tool was used are backed up, up until the retention period
|
||
|
||
### Fixed
|
||
- Pruning is no longer done based on file timestamps, the database is used instead. The tool will no longer delete files it didn't create.
|
||
- Pruning now runs much more frequently (every minute) so retention periods of less than a day are now possible.
|
||
|
||
|
||
## [0.7.4] - 2022-08-21
|
||
No functional changes in this version. This is just to trigger the release CI.
|
||
### Added
|
||
- Arm docker container
|
||
- rclone debugging instructions when using docker
|
||
|
||
### Fixed
|
||
- Documentation error in rclone config path of docker container.
|
||
|
||
## [0.7.3] - 2022-07-31
|
||
### Fixed
|
||
- Updated to the 4.0.0 version of pyunifiprotect
|
||
- Added rust to the container, and bumped it to alpine 3.16
|
||
|
||
## [0.7.2] - 2022-07-17
|
||
### Fixed
|
||
- Updated to the latest version of pyunifiprotect to fix issues introduced in unifi protect 2.1.1
|
||
|
||
## [0.7.1] - 2022-06-08
|
||
### Fixed
|
||
- Updated to the latest version of pyunifiprotect to fix issues introduced in unifi protect 2.0.1
|
||
- Updated documentation to include how to set up local user accounts on unifi protect
|
||
|
||
## [0.7.0] - 2022-03-26
|
||
### Added
|
||
- Added a the ability to change the way the clip files are structured via a template string.
|
||
### Fixed
|
||
- Fixed issue where event types without clips would attempt (and fail1) to download clips
|
||
- Drastically reduced the size of the docker container
|
||
- Fixed typos in the documentation
|
||
- Some dev dependencies are now not installed as default
|
||
|
||
## [0.6.0] - 2022-03-18
|
||
### Added
|
||
- Support for doorbell ring events
|
||
- `detection_types` parameter to limit which kinds of events are backed up
|
||
### Fixed
|
||
- Actually fixed timestamps this time.
|
||
|
||
## [0.5.3] - 2022-03-11
|
||
### Fixed
|
||
- Timestamps in filenames and logging now show time in the timezone of the NVR not UTC
|
||
|
||
## [0.5.2] - 2022-03-10
|
||
### Fixed
|
||
- rclone delete command now works as expected on windows when spaces are in the file path
|
||
- Dockerfile now allows setting of user and group to run as, as well as a default config
|
||
|
||
## [0.5.1] - 2022-03-07
|
||
### Fixed
|
||
- rclone command now works as expected on windows when spaces are in the file path
|
||
|
||
## [0.5.0] - 2022-03-06
|
||
### Added
|
||
- If `ffprobe` is available, the downloaded clips length is checked and logged
|
||
### Fixed
|
||
- A time delay has been added before downloading clips to try to resolve an issue where
|
||
downloaded clips were too short
|
||
|
||
## [0.4.0] - 2022-03-05
|
||
### Added
|
||
- A `--version` command line option to show the tools version
|
||
### Fixed
|
||
- Websocket checks are no longer logged in verbosity level 1 to reduce log spam
|
||
|
||
## [0.3.1] - 2022-02-24
|
||
### Fixed
|
||
- Now checks if the websocket connection is alive, and attempts to reconnect if it isn't.
|
||
|
||
## [0.3.0] - 2022-02-22
|
||
### Added
|
||
- New CLI argument for passing CLI arguments directly to `rclone`.
|
||
|
||
### Fixed
|
||
- A new camera getting added while running no longer crashes the application.
|
||
- A timeout during download now correctly retries the download instead of
|
||
abandoning the event.
|
||
|
||
## [0.2.1] - 2022-02-21
|
||
### Fixed
|
||
- Retry logging formatting
|
||
|
||
## [0.2.0] - 2022-02-21
|
||
### Added
|
||
- Ability to ignore cameras
|
||
- Retry failed download/uploads
|
||
- More logging
|
||
- CI to build `dev` container
|
||
- More documentation
|
||
|
||
### Fixed
|
||
- Upload exceptions getting passed silently
|
||
- Camera ID -> Name map is no longer only looked up once at the start
|
||
|
||
## [0.1.1] - 2022-02-20
|
||
### Added
|
||
- Docker container
|
||
- Dependabot
|
||
### Changed
|
||
- Better project description
|
||
### Fixed
|
||
- Typos in docs
|
||
|
||
## [0.1.0] - 2022-02-19
|
||
### Added
|
||
- First release
|