{"adoption": {"forks": 371, "observed_at": "2026-08-28T04:04:32.195990+00:00", "stars": 1371}, "canonical_url": "https://ross.abutalabs.com/products/bsimagepicker", "card": {"archived": false, "artifact_type": "library", "description": "A multiple image picker for iOS", "domain": ["mobile-development", "media", "photography"], "enriched": true, "function": ["ui-components", "image-processing", "file-upload"], "health_score": 27, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["mikaoj/BSImagePicker"], "name": "mikaoj/BSImagePicker", "platform": [], "pushed_at": "2024-05-23T06:49:46+00:00", "repo": "mikaoj/BSImagePicker", "stars": 1371, "tags": ["photo-picker", "phasset", "photos-framework", "multiple-selection", "uikit", "ios", "swift", "mobile"], "topics": ["swift", "bsimagepicker", "photos", "image-picker"], "urls": [], "use_cases": ["let users pick multiple photos from their library in an iOS app", "select several images and videos for upload in Swift", "customizable photo gallery picker view controller for iOS", "choose multiple PHAssets from the photo library", "replace UIImagePickerController with multi-select photo picker"], "what_it_is": "BSImagePicker is a Swift library providing a customizable multiple-image picker view controller for iOS, built on the Photos framework. It supports selecting images, live photos, and videos with album switching and fullscreen preview.", "when_to_avoid": ["you only need single photo selection (UIImagePickerController suffices)", "you are building with SwiftUI and want a native PhotosPicker", "you need a cross-platform picker beyond iOS"], "when_to_choose": ["you need multi-selection of photos/videos on iOS with UIKit", "you want a customizable picker returning PHAssets", "you need album switching and fullscreen preview out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bsimagepicker", "repo": "mikaoj/BSImagePicker", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "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:04:32.195990+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:32.195990+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:40:51.262369+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d880a2e32378907070d09974a2fd2c07fec6e92b444c12b999ae338b5ee76ae2", "fetched_at": "2026-08-28T04:04:32.195990+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mikaoj/BSImagePicker"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4517, "days_push": 832, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}