Photos in the same report with identical timestamps were overwriting each other due to missing image index in the filename. Videos failed to download because attached_video is a dict with resolution URLs, not a plain URL. Also read EXIF DateTimeOriginal before modifying the file and write the report date as fallback when the image has no original timestamp. Embed creation_time metadata in downloaded videos using ffmpeg.
1.8 KiB
1.8 KiB
Kidsnote backup
I found the original script here https://gist.github.com/Leuconoe/21f6a07f50389c4de1ec127944af7008
I'm adding info to be able to easier use it.
What it does
- Downloads all reports (text, photos, and videos) from kidsnote.com
- Organizes them into a
YYYY/MM/DDfolder structure - Writes EXIF metadata into photos (report content, GPS location, and date when missing)
- Embeds report date into video files when missing (requires ffmpeg)
- Skips already-downloaded reports for incremental backups
Installation
pipenv install
Optional: install ffmpeg to embed date metadata into downloaded videos.
Without it, videos are still saved but without creation date information.
How to use:
- Copy the env-sample file to .env
- Put in your username and password
- Put in the path where you want the photos and videos stored, it will create a YYYY/MM/DD structure there
- Run
pipenv run python get_report.pyto get the report, it stores it in a file report.json - Run
pipenv run python report_json_down.pyto download all the reports, photos, and videos
Run automatically with a systemd timer
This will run the script every day at midnight or once you wake up your computer:
- Change the working directory to where you checked out the code in systemd/kidsnote.service
cp systemd/kidsnote.service ~/.config/systemd/user/cp systemd/kidsnote.timer ~/.config/systemd/user/systemctl --user daemon-reloadsystemctl --user enable --now kidsnote.timer
It assumes you already set up the .env file.
Why username and password?
In the old script you had to get the report manually from the browser. I added get_report.py which logs in with a headless chromium browser, gets the report for you so it's possible to automate it with cron.
License
GPL v3