{"adoption": {"forks": 156, "observed_at": "2026-08-28T04:03:34.113546+00:00", "stars": 1095}, "canonical_url": "https://ross.abutalabs.com/products/google-photos-exif", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A tool to populate missing `DateTimeOriginal` EXIF metadata in Google Photos takeout, using Google's JSON metadata.", "domain": ["files", "photography", "media"], "enriched": true, "function": ["cli", "file-system", "developer-tools"], "health_score": 20, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["mattwilson1024/google-photos-exif"], "name": "mattwilson1024/google-photos-exif", "platform": ["cross-platform", "cli"], "pushed_at": "2024-05-06T00:49:51+00:00", "repo": "mattwilson1024/google-photos-exif", "stars": 1095, "tags": ["google-photos", "google-takeout", "exif", "exiftool", "photo-metadata", "typescript", "automation", "nodejs"], "topics": ["google-photos", "google-takeout", "exif", "exiftool", "tools", "utility", "hacktoberfest"], "urls": [], "use_cases": ["fix missing exif dates on google takeout photos", "populate datetimeoriginal from google photos  metadata", "organize takeout photos into date folders by taken time", "repair photo timestamps after exporting from google photos", "batch fix exif metadata in downloaded google photos archive"], "what_it_is": "A TypeScript CLI tool that fixes missing DateTimeOriginal EXIF metadata in Google Photos Takeout exports by reading the photoTakenTime from Google's JSON sidecar files. It also sets meaningful file modification dates and copies media into an output directory.", "when_to_avoid": ["your photos already have correct EXIF DateTimeOriginal data", "you need a GUI photo manager rather than a command-line utility", "you work with media not sourced from Google Photos Takeout exports"], "when_to_choose": ["you exported your Google Photos library via Google Takeout and photos have missing or wrong timestamps", "you want to sort photos into date-based folder structures using accurate taken times", "you need a scriptable, local tool to rewrite EXIF metadata in bulk"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/google-photos-exif", "repo": "mattwilson1024/google-photos-exif", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "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:03:34.113546+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:34.113546+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:47:16.371669+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3bd0c4f16e8fc20eb9396fbe675c86a18275a62455e88978f13f2637ff571218", "fetched_at": "2026-08-28T04:03:34.113546+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mattwilson1024/google-photos-exif"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2189, "days_push": 850, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}