mirror of
https://github.com/ep1cman/unifi-protect-backup.git
synced 2025-12-05 23:53:30 +00:00
9.2 KiB
9.2 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[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
pyunifiprotectversion to fix with versions of Unifi Protect after 3.0.10
[0.10.5] - 2024-01-26
Fixed
- Bumped
pyunifiprotectversion to fix issue with old version of yarl
[0.10.4] - 2024-01-26
Fixed
- Bumped
pyunifiprotectversion to fix issue caused by new video modes
[0.10.3] - 2023-12-07
Fixed
- Bumped
pyunifiprotectversion 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 deletecommand 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_typesparameter 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
ffprobeis 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
--versioncommand 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
devcontainer - 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