leocov-dev / tadpoles-backup

Download images of your kids from Tadpoles and Bright Horizons via CLI, Docker, or Kubernetes
MIT License
14 stars 3 forks source link
bright-horizons go golang tadpoles

Media Backup for Childcare Services

License: MIT Go version for branch CI Status

About

This tool will allow you to save all your child's images and videos at full resolution from various service providers. Comments and timestamp info will be applied as EXIF image metadata where possible.

Providers:


Install

GitHub release (latest by date)

Get the latest prebuilt executable from the releases page. Download the zip file for your system/architecture.

macOS Gatekeeper will prevent you from running unsigned apps. You can allow the app from system preferences or by right-clicking the file and choosing open from the menu.


Usage

# Print help with command details:
$ tadpoles-backup --help

# Get account statistics
$ tadpoles-backup --provider <service-provider> stat

# Download media (only new files not present in the target dir are downloaded)
$ tadpoles-backup --provider <service-provider> backup <a-local-directory>

# Clear Saved Login
$ tadpoles-backup --provider <service-provider> clear login

Provider Notes

Tadpoles

You MUST have a www.tadpoles.com account with a tadpoles specific password. You CAN NOT log in to this tool with Google Auth. If you normally log into tadpoles.com with Google/Gmail account verification you will need to request a password reset with the command:

# this simply requests a reset email be sent to you
# it does not change or access your password
$ tadpoles-backup --provider tadpoles reset-password <email>

The tool stores your www.tadpoles.com authentication cookie for future use so that you don't need to enter your password every time. This cookie lasts for about 2 weeks. Your email and password are never stored.

Bright Horizons

Due to how the system provides download data the backup command can't use cached data for speed-up. Every run of the backup command will fetch all reports and may take some time.

The tool stores your mybrightday.brighthorizons.com api-key for future use so that you don't need to enter your password every time. This api-key may only expire if you change your password. Your email and password are never stored.


Container Image

Pre-built images are available from the repos Packages page.

$ docker pull ghcr.io/leocov-dev/tadpoles-backup:latest

# list account info
$ docker run --rm -eUSERNAME=<email> -ePASSWORD=<password> ghcr.io/leocov-dev/tadpoles-backup stat

# download new images
$ docker run --rm -eUSERNAME=<email> -ePASSWORD=<password> -v$HOME/Pictures/tadpoles:/images ghcr.io/leocov-dev/tadpoles-backup backup /images

# enable api response caching by mapping app data directory
$ docker run --rm -eUSERNAME=<email> -ePASSWORD=<password> -v$HOME/.tadpoles-backup:/app/.tadpoles-backup ghcr.io/leocov-dev/tadpoles-backup stat

You may also build the docker image locally.

# will be automatically tagged as `tadpoles-backup`
$ make docker-image

Docker Compose / Kubernetes

Please note that this utility is intended to run as a scheduled job.

Examples are available.

Kubernetes

This example configures a CronJob that will run on a schedule. It's best to configure this so that only 1 job instance will run at a time. The example uses kustomize for configuration to provide authentication environment vars as a secret.

Docker Compose

This example configures a basic service with env vars defining the login values. Its important to remember that this service will exit after each run.


Development

See the contributing guide here.

Basic Setup

Install the Go version defined in go.mod or use goenv to manage Go (as set by .go-version).

Dev build

# build for your platform only and run.
$ make && bin/tadpoles-backup --help

Testing

Run all unit tests with helper utility. This will build a coverage report as coverage.html

make test

Inspired By

Thanks to