{"adoption": {"forks": 820, "observed_at": "2026-08-28T04:10:51.945208+00:00", "stars": 12180}, "canonical_url": "https://ross.abutalabs.com/products/icloud_photos_downloader", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A command-line tool to download photos from iCloud", "domain": ["files", "privacy"], "enriched": true, "function": ["cli", "file-system", "developer-tools"], "health_score": 90, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["icloud-photos-downloader/icloud_photos_downloader"], "name": "icloud-photos-downloader/icloud_photos_downloader", "platform": ["windows", "python", "cli"], "pushed_at": "2026-05-30T21:47:25+00:00", "repo": "icloud-photos-downloader/icloud_photos_downloader", "stars": 12180, "tags": ["icloud", "photos", "backup", "download", "apple", "automation", "command-line", "linux", "macos", "docker"], "topics": [], "urls": [], "use_cases": ["download all my icloud photos to a local disk", "back up icloud photo library to a NAS", "automatically sync icloud photos on linux", "export icloud photos without using the apple photos app", "periodically fetch new icloud photos via cron or docker", "migrate photos off icloud to self-hosted storage"], "what_it_is": "A command-line tool (icloudpd) that downloads all photos and videos from an iCloud account to local storage. It runs on Linux, Windows, and macOS and is available as executables, Docker images, and via PyPI, AUR, and npm.", "when_to_avoid": ["you need a GUI photo manager or viewer rather than a downloader", "your account uses Advanced Data Protection, which is incompatible", "you need two-way sync with iCloud rather than one-way download", "you require guaranteed long-term maintenance, as the project is seeking a new maintainer"], "when_to_choose": ["you want a scriptable, cross-platform way to pull your iCloud photo library down to a server, NAS, or desktop", "you need automated/scheduled downloads via Docker, cron, or package managers", "you are comfortable enabling iCloud web access and disabling Advanced Data Protection"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/icloud_photos_downloader", "repo": "icloud-photos-downloader/icloud_photos_downloader", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "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:10:51.945208+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:51.945208+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:14:51.984973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb72ab2050976256fe92f53e57e43226666b92b59ecdb42936ef6bd3043b41fe", "fetched_at": "2026-08-28T04:10:51.945208+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icloud-photos-downloader/icloud_photos_downloader"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 85, "longevity": 100, "rhythm": 86}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3764, "days_push": 95, "days_rel": 95, "gap_med": 10.5, "n_releases_24m": 29}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}