{"adoption": {"forks": 210, "observed_at": "2026-08-28T04:09:57.644617+00:00", "stars": 7231}, "canonical_url": "https://ross.abutalabs.com/products/saltplayersource", "card": {"archived": false, "artifact_type": "application", "description": "A multi-platform local music player in continuous development since 2020, serving over one million users. This repository is used for issue tracking and official Android package releases.", "domain": ["media", "android-tools", "entertainment"], "enriched": true, "function": ["audio-processing", "gui"], "health_score": 98, "homepage": "https://moriafly.com/program/salt-player", "language": null, "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Moriafly/SaltPlayerSource"], "name": "Moriafly/SaltPlayerSource", "platform": ["windows"], "pushed_at": "2026-08-10T12:54:31+00:00", "repo": "Moriafly/SaltPlayerSource", "stars": 7231, "tags": ["music-player", "local-playback", "lyrics", "audio-effects", "dlna", "media-library", "android", "mobile", "desktop"], "topics": [], "urls": [], "use_cases": ["play local music files on android", "offline music player with lyrics support", "music player with audio effects and equalizer", "browse music library by folder or album", "cast audio to dlna devices", "download salt player apk releases"], "what_it_is": "Salt Player is a multi-platform local music player for Android (and Windows via SPW), in active development since 2020 with over a million users. This repository hosts official Android package releases, issue tracking, and announcements rather than the app's source code.", "when_to_avoid": ["you need a streaming service with online catalogs or recommendations", "you want open-source code to build yourself - this repo only distributes releases and tracks issues", "you need an iOS or desktop-first player (Windows support lives in a separate SPW project)"], "when_to_choose": ["you want a polished offline local music player on Android without streaming or recommendations", "you need broad audio format support including APE and floating-point decoding", "you want extensive customization, lyrics rendering, and listening statistics"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/saltplayersource", "repo": "Moriafly/SaltPlayerSource", "role": "main", "score": 93}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "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:09:57.644617+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.644617+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:39:46.959213+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ca84c1a76415bc8e5a27e95c9e76d7cf3c0bb3e0d6b915f02ffb9b2a3ed137eb", "fetched_at": "2026-08-28T04:09:57.644617+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Moriafly/SaltPlayerSource"}, {"content_hash": "4b9c748c9fc70fbe17ecfd954595bd9c9a1ed2d9b65fd34a8c5f9a15d4bb1f54", "fetched_at": "2026-08-29T08:34:52.058857+00:00", "kind": "homepage", "missing": false, "url": "https://moriafly.com/program/salt-player"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 85}, "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": 1862, "days_push": 23, "days_rel": 23, "gap_med": 37, "n_releases_24m": 20}, "score": 93, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}