{"adoption": {"forks": 210, "observed_at": "2026-08-28T04:04:40.349884+00:00", "stars": 1420}, "canonical_url": "https://ross.abutalabs.com/products/zoujingli-ip2region", "card": {"archived": false, "artifact_type": "library", "description": "PHP版本的离线IP地址定位库", "domain": ["networking", "developer-tools"], "enriched": true, "function": ["search-engine", "cli", "developer-tools"], "health_score": 94, "homepage": null, "language": "PHP", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["zoujingli/ip2region"], "name": "zoujingli/ip2region", "platform": ["php", "cli", "cross-platform"], "pushed_at": "2026-07-11T09:55:53+00:00", "repo": "zoujingli/ip2region", "stars": 1420, "tags": ["ip-geolocation", "ip2region", "offline-database", "ipv4", "ipv6", "xdb", "composer-package", "command-line"], "topics": [], "urls": [], "use_cases": ["look up the city and ISP of an IP address in PHP", "offline IP geolocation without external API calls", "resolve IPv6 addresses to regions", "identify private, loopback, and reserved IP addresses", "batch query IP locations with caching", "download and manage ip2region XDB database files"], "what_it_is": "A PHP library for offline IP geolocation lookups based on the ip2region XDB data format, supporting IPv4 and IPv6 with multiple caching strategies. It ships with a bundled IPv4 database and provides both a global helper function and an object-oriented API, plus a CLI tool for managing database files.", "when_to_avoid": ["you need global, street-level, or highly precise geolocation data", "your project is not in PHP", "you require IPv6 support without downloading an extra database file"], "when_to_choose": ["you need fast, offline IP-to-region lookups in a PHP 7.1+ application with no extension dependencies", "you want a bundled IPv4 database that works out of the box via Composer", "you need both functional and OOP APIs plus caching modes for performance tuning"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/zoujingli-ip2region", "repo": "zoujingli/ip2region", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "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:40.349884+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.349884+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:37:50.783925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "528406c12465277e4644f61bc8ecf6e5dd79fedf5eff83305c91d7be2007e884", "fetched_at": "2026-08-28T04:04:40.349884+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoujingli/ip2region"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 83}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3451, "days_push": 53, "days_rel": 117, "gap_med": 5, "n_releases_24m": 18}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}