{"adoption": {"forks": 112, "observed_at": "2026-08-28T04:03:12.842177+00:00", "stars": 1009}, "canonical_url": "https://ross.abutalabs.com/products/phockup", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Media sorting tool to organize photos and videos from your camera in folders by year, month and day.", "domain": ["files", "photography", "media", "developer-tools"], "enriched": true, "function": ["file-system", "image-processing", "cli"], "health_score": 20, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["ivandokov/phockup"], "name": "ivandokov/phockup", "platform": ["python", "cli", "windows", "cross-platform"], "pushed_at": "2024-05-06T22:57:08+00:00", "repo": "ivandokov/phockup", "stars": 1009, "tags": ["photo-organization", "exif", "exiftool", "media-sorting", "duplicate-detection", "photo-backup", "docker", "linux", "macos"], "topics": ["organize-photos", "photobackup", "camera", "sorting", "organize-media-files", "sort-images", "sort-videos", "sort-media-files", "exiftool"], "urls": [], "use_cases": ["organize photos from camera into folders by year month and day", "sort videos and images by capture date", "deduplicate photos when copying from memory card", "backup photos from SD card to organized directory structure", "sort media files that lack EXIF date into an unknown folder", "run scheduled photo organization with docker"], "what_it_is": "Phockup is a Python command-line media sorting tool that organizes photos and videos from a camera into year/month/day folder structures based on their creation date metadata. It copies files without altering content, handles duplicates via checksum comparison, and routes files without date information to an 'unknown' directory.", "when_to_avoid": ["you need a GUI photo manager with editing or viewing features", "you want cloud-sync or online gallery features", "your files lack creation-date metadata and you need manual curation", "you need face recognition or tagging capabilities"], "when_to_choose": ["you want a simple, scriptable CLI to sort photos/videos by date", "you need checksum-based duplicate detection during copying", "you want a Docker-friendly tool for recurring photo ingestion", "you prefer files copied (not moved) so the source can be safely deleted"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/phockup", "repo": "ivandokov/phockup", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "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:12.842177+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:12.842177+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:12:03.625779+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "931dc1d3e8833cc04f8abc1bc2027aebaa144a356e911b0961993964fd879734", "fetched_at": "2026-08-28T04:03:12.842177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ivandokov/phockup"}], "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": 3650, "days_push": 849, "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}}