{"id":18926714,"url":"https://github.com/leocov-dev/tadpoles-backup","last_synced_at":"2025-04-15T13:33:10.329Z","repository":{"id":42877362,"uuid":"199543536","full_name":"leocov-dev/tadpoles-backup","owner":"leocov-dev","description":"Download images of your kids from Tadpoles and Bright Horizons via CLI, Docker, or Kubernetes","archived":true,"fork":false,"pushed_at":"2024-12-11T23:58:33.000Z","size":5893,"stargazers_count":14,"open_issues_count":3,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T09:29:40.646Z","etag":null,"topics":["bright-horizons","go","golang","tadpoles"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leocov-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-30T00:11:27.000Z","updated_at":"2025-01-02T02:14:01.000Z","dependencies_parsed_at":"2024-01-20T21:33:30.269Z","dependency_job_id":"0c0137e4-1c1f-49a6-807b-e5663d41ba97","html_url":"https://github.com/leocov-dev/tadpoles-backup","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocov-dev%2Ftadpoles-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocov-dev%2Ftadpoles-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocov-dev%2Ftadpoles-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leocov-dev%2Ftadpoles-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leocov-dev","download_url":"https://codeload.github.com/leocov-dev/tadpoles-backup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249080451,"owners_count":21209528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bright-horizons","go","golang","tadpoles"],"created_at":"2024-11-08T11:16:55.537Z","updated_at":"2025-04-15T13:33:10.035Z","avatar_url":"https://github.com/leocov-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Media Backup for Childcare Services\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT)\n![Go version for branch](https://img.shields.io/github/go-mod/go-version/leocov-dev/tadpoles-backup/main)\n![CI Status](https://img.shields.io/github/actions/workflow/status/leocov-dev/tadpoles-backup/ci.yml)\n\n## About\nThis 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.\n\nProviders:\n* Tadpoles\n* ~~Bright Horizons~~ (currently broken see [Issue #48](https://github.com/leocov-dev/tadpoles-backup/issues/48))\n\n---\n## Install\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/leocov-dev/tadpoles-backup)](https://github.com/leocov-dev/tadpoles-backup/releases/latest)\n\nGet the [latest](https://github.com/leocov-dev/tadpoles-backup/releases/latest) prebuilt\nexecutable from the [releases](https://github.com/leocov-dev/tadpoles-backup/releases) page.\nDownload the zip file for your system/architecture.\n\n\u003e **macOS** Gatekeeper will prevent you from running unsigned apps.\n\u003e You can allow the app from system preferences or by right-clicking\n\u003e the file and choosing open from the menu.\n\n---\n## Usage\n\n```\n# Print help with command details:\n$ tadpoles-backup --help\n\n# Get account statistics\n$ tadpoles-backup --provider \u003cservice-provider\u003e stat\n\n# Download media (only new files not present in the target dir are downloaded)\n$ tadpoles-backup --provider \u003cservice-provider\u003e backup \u003ca-local-directory\u003e\n\n# Clear Saved Login\n$ tadpoles-backup --provider \u003cservice-provider\u003e clear login\n```\n\n### Provider Notes\n\n#### Tadpoles\n\nYou **MUST** have a _www.tadpoles.com_ account with a tadpoles specific password.\nYou **CAN NOT** log in to this tool with Google Auth.\nIf you normally log into _tadpoles.com_ with Google/Gmail account verification you will need to\nrequest a password reset with the command:\n```shell\n# this simply requests a reset email be sent to you\n# it does not change or access your password\n$ tadpoles-backup --provider tadpoles reset-password \u003cemail\u003e\n```\n\nThe tool stores your _www.tadpoles.com_ authentication cookie for future use so that you don't need to enter your password every time.\nThis cookie lasts for about 2 weeks. Your email and password are never stored.\n\n#### Bright Horizons\n\nDue to how the system provides download data the `backup` command can't use cached data for speed-up.\nEvery run of the `backup` command will fetch all reports and may take some time.\n\nThe tool stores your _mybrightday.brighthorizons.com_ api-key for future use so that you don't need to enter your password every time.\nThis api-key may only expire if you change your password. Your email and password are never stored.\n\n---\n## Container Image\nPre-built images are available from the repos [Packages page](https://github.com/leocov-dev/tadpoles-backup/pkgs/container/tadpoles-backup).\n\n```shell\n$ docker pull ghcr.io/leocov-dev/tadpoles-backup:latest\n\n# list account info\n$ docker run --rm -eUSERNAME=\u003cemail\u003e -ePASSWORD=\u003cpassword\u003e ghcr.io/leocov-dev/tadpoles-backup stat\n\n# download new images\n$ docker run --rm -eUSERNAME=\u003cemail\u003e -ePASSWORD=\u003cpassword\u003e -v$HOME/Pictures/tadpoles:/images ghcr.io/leocov-dev/tadpoles-backup backup /images\n\n# enable api response caching by mapping app data directory\n$ docker run --rm -eUSERNAME=\u003cemail\u003e -ePASSWORD=\u003cpassword\u003e -v$HOME/.tadpoles-backup:/app/.tadpoles-backup ghcr.io/leocov-dev/tadpoles-backup stat\n```\n\nYou may also build the docker image locally.\n```shell\n# will be automatically tagged as `tadpoles-backup`\n$ make docker-image\n```\n\n### Docker Compose / Kubernetes\n\nPlease note that this utility is intended to run as a scheduled job.\n\n[Examples](examples) are available.\n\n#### Kubernetes\n\nThis [example](examples/kubernetes) configures a `CronJob` that will run on a schedule. It's best to configure\nthis so that only 1 job instance will run at a time. The example uses `kustomize` for\nconfiguration to provide authentication environment vars as a secret.\n\n#### Docker Compose\n\nThis [example](examples/docker-compose.yml) configures a basic service with env\nvars defining the login values. Its important to remember that this service will\nexit after each run.\n\n---\n## Development\n\nSee the contributing guide [here](CONTRIBUTING.md).\n\n### Basic Setup\n\nInstall the Go version defined in [go.mod](go.mod) or use [goenv](https://github.com/syndbg/goenv) to manage Go (as set by [.go-version](.go-version)).\n\n### Dev build\n```shell\n# build for your platform only and run.\n$ make \u0026\u0026 bin/tadpoles-backup --help\n```\n\n### Testing\n\nRun all unit tests with helper utility. This will build a coverage report as\n`coverage.html`\n```shell\nmake test\n```\n\n\n---\n## Inspired By\n* [twneale/tadpoles](https://github.com/twneale/tadpoles)\n* [ChuckMac/tadpoles-scraper](https://github.com/ChuckMac/tadpoles-scraper)\n\n## Thanks to\n* @arthurnn - for assistance with Docker image\n* @AndyRPH - for assistance with Bright Horizons support\n* @s0rcy - for assistance with Tadpoles password reset\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleocov-dev%2Ftadpoles-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleocov-dev%2Ftadpoles-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleocov-dev%2Ftadpoles-backup/lists"}