{"adoption": {"forks": 162, "observed_at": "2026-08-28T04:06:11.867472+00:00", "stars": 2084}, "canonical_url": "https://ross.abutalabs.com/products/gphotos-sync", "card": {"archived": true, "artifact_type": "cli-tool", "description": "Google Photos and Albums backup with Google Photos Library API", "domain": ["files", "media", "photography", "cloud-computing", "self-hosted"], "enriched": true, "function": ["backup", "cli", "file-system", "database"], "health_score": 10, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["gilesknap/gphotos-sync"], "name": "gilesknap/gphotos-sync", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2026-03-17T20:57:13+00:00", "repo": "gilesknap/gphotos-sync", "stars": 2084, "tags": ["google-photos", "media-backup", "album-sync", "incremental-backup", "sqlite-index"], "topics": ["google", "photos", "albums", "google-photos", "google-photos-albums", "google-photos-library-api", "google-photos-backup", "python", "python3", "backup"], "urls": [], "use_cases": ["back up my google photos library to local disk", "download all photos and videos from google photos", "mirror google photos albums into folders", "incremental backup of google photos with an index database", "archive google photos creations like animations and collages"], "what_it_is": "A Python command-line tool that backs up Google Photos libraries to local storage using the Google Photos Library API, organizing media by albums and including creations like animations and collages. It is read-only against the cloud library and uses a local SQLite index for incremental syncs.", "when_to_avoid": ["you need a true lossless backup - the Google Photos API transcodes videos and strips GPS metadata", "you need an actively maintained tool - the project was archived in October 2024", "you want two-way sync or cloud library management"], "when_to_choose": ["you want a safe, read-only backup that never modifies your cloud library", "you need album-based folder organization of downloaded media", "you want incremental syncing backed by a local index database"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gphotos-sync", "repo": "gilesknap/gphotos-sync", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.867472+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:55:52.384713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "95e959911ef67c1bb4db5505f6864eb2ba59dd9b07e66f0b26c15d948d3f0a1f", "fetched_at": "2026-08-28T04:06:11.867472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gilesknap/gphotos-sync"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 72, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3323, "days_push": 169, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}