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.
52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
# 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/DD` folder 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:
|
|
|
|
1. Copy the env-sample file to .env
|
|
2. Put in your username and password
|
|
3. Put in the path where you want the photos and videos stored, it will create a YYYY/MM/DD structure there
|
|
4. Run `pipenv run python get_report.py` to get the report, it stores it in a file report.json
|
|
5. Run `pipenv run python report_json_down.py` to 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:
|
|
|
|
1. Change the working directory to where you checked out the code in systemd/kidsnote.service
|
|
1. `cp systemd/kidsnote.service ~/.config/systemd/user/`
|
|
2. `cp systemd/kidsnote.timer ~/.config/systemd/user/`
|
|
3. `systemctl --user daemon-reload`
|
|
4. `systemctl --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
|